Знакомство с командной строкой
Для тех, кто проходит руководство дома: о материале этой главы рассказывает видео Ваш новый друг — командная строка.
Вот это да! Всего через несколько минут ты напишешь свою первую строку кода! 🙂
Позволь представить нашего первого нового друга: командную строку!
Следующие шаги покажут, как использовать чёрное окно, которым пользуются все хакеры. В начале оно может показаться немного пугающим, но, на самом деле это просто окно, которое ждет от тебя команды.
Примечание Пожалуйста, обрати внимание, что в этом руководстве мы используем термины «каталог» и «папка» взаимозаменяемо: эти слова обозначают одно и то же.
Что такое командная строка?
Окно, которое обычно называют командной строкой или интерфейсом командной строки (англ. CLI, Command Line Interface), является текстовым приложением для просмотра, обработки и манипулирования файлами на вашем компьютере. Она делает то же, что и Проводник в Windows или Finder в Mac OS X, но у неё нет графического интерфейса. Другими названиями для командной строки являются: cmd, CLI, prompt, консоль или терминал.
Открываем интерфейс командной строки
Для того, чтобы начать экспериментировать, нам нужно сначала открыть интерфейс командной строки.
Windows
В зависимости от твоей версии Windows и того, какая у тебя клавиатура, одно из следующих действий откроет окно командной строки (возможно, придётся немного поэкспериментировать, но все варианты пробовать необязательно):
- Перейди в меню Пуск (или на экран Пуск), в строке поиска набери «Командная строка».
- Перейди в меню Пуск → Windows → Командная строка.
- Перейди в меню Пуск → Все программы → Служебные → Командная строка.
- Перейди на экран Пуск, наведи мышь на нижний левый угол экрана и нажми на стрелочку вниз, которая появится там. (Если у тебя тачскрин, листни пальцем снизу вверх.) Откроется страница «Приложения». Выбери пункт «Командная строка» в разделе «Windows».
- Удерживая клавишу Windows на клавиатуре, нажми X. В появившемся меню выбери пункт «Командная строка».
- Удерживая клавишу Windows, нажми R, чтобы появилось окно «Выполнить». Набери в строке cmd и нажми OK.

В какой-то момент тебе понадобятся два окна командной строки одновременно. Однако в некоторых версиях Windows, если ты попытаешься запустить вторую командную строку, когда одна уже запущена тем же способом, ты вместо этого попадёшь в уже открытое окно командной строки. Попробуй у себя на компьютере и посмотри, что будет! Если у тебя получается открыть только одно окно командной строки, попробуй какой-нибудь другой из вышеприведённых способов в списке. По крайней мере один из них сможет открыть новое окно командной строки.
Перейди в Приложения → Прочие → Терминал.
Вероятно, командная строка скрывается по адресу: Приложения → Стандартные → Терминал или Приложения → Система → Терминал, но это может зависеть от конкретной системы. Если не сможешь найти — Google поможет 🙂
Командная строка
Перед тобой должно появиться белое или чёрное окошко. Оно ожидает, когда ты введёшь команду.
OS X и Linux
Если у тебя Mac или Linux, ты, скорее всего, увидишь знак $ в конце строки (перед курсором):
Windows
Если у тебя Windows, строка будет оканчиваться символом > , вот так:
Можешь заглянуть в инструкцию для пользовательниц Linux чуть выше — нам что-то подобное ещё встретится, когда мы дойдём до PythonAnywhere.
Перед каждой твоей командой будет стоять знак $ или > и пробел. Но тебе не нужно их печатать! Компьютер уже сделал это за тебя. 🙂
Небольшое примечание: перед курсором командной строки может быть написано что-то вроде C:\Users\ola> или Olas-MacBook-Air:~ ola$ . Это абсолютно нормально.
То, что написано до знака $ или > , плюс сам знак, всё вместе называется приглашением командной строки. Как правило, оно включает адрес папки, в которой ты сейчас находишься. Оно приглашает тебя ввести в окно команду.
Далее в руководстве перед каждой командой, которую тебе нужно будет ввести, мы будем писать символ $ или > . Иногда слева от него мы будем добавлять ещё немного текста. Не обращай внимания на левую часть и просто печатай команду — она начинается после специального символа.
Твоя первая команда (УРА!)
Давай введём следующую команду:
OS X и Linux
$ whoami
Windows
> whoami
Теперь нажми Enter . Вот что получилось:
$ whoami olasitarska
Как видишь, компьютер только что вывел на экран твоё имя пользователя. Классно, а? 🙂
Постарайся набирать каждую команду вручную, а не копировать и вставлять. Так ты больше запомнишь!
Основы
В каждой операционной системе набор команд для командной строки немного отличается, поэтому не забывай следовать инструкциям для своей операционной системы. Давай попробуем, готова?
Текущий каталог
Было бы неплохо знать, где мы находимся сейчас, верно? Давай посмотрим. Набери эту команду и нажми Enter :
OS X и Linux
$ pwd /Users/olasitarska
Примечание: ‘pwd’ означает ‘print working directory’ (вывести рабочий каталог).
Windows
> cd C:\Users\olasitarska
Примечание: ‘cd’ означает ‘change directory'(сменить каталог). Если ты пользуешься PowerShell, можешь ввести pwd — как на Linux или Mac OS X.
Ты, вероятно, увидишь нечто похожее на своем компьютере. Когда ты открываешь командную строку, то обычно находишься в домашнем каталоге текущего пользователя.
Как узнать больше о командах
У многих команд для командной строки есть встроенная справка! Например, вот как узнать подробнее о команде, которая показывает, в какой папке ты сейчас находишься:
OS X и Linux
В OS X и Linux есть команда man — справка о других командах (на английском языке). Набери man pwd и посмотри, что пишут о команде pwd . Используй man с другими командами, чтобы посмотреть для них справку. Как правило, справки man выводятся постранично. Нажми пробел, чтобы перейти на следующую страницу. Чтобы выйти, нажми q .
Windows
Чтобы вывести справку, почти к любой команде можно добавить /? . Чтобы прочитать всю справку, возможно, придётся прокрутить текст вниз. Попробуй набрать cd /? .
Список файлов и каталогов
Так что же в нем? Было бы здорово узнать. Давай посмотрим:
OS X и Linux
$ ls Applications Desktop Downloads Music .
Windows
> dir Directory of C:\Users\olasitarska 05/08/2014 07:28 PM Applications 05/08/2014 07:28 PM Desktop 05/08/2014 07:28 PM Downloads 05/08/2014 07:28 PM Music .
Примечание: в PowerShell можешь использовать ‘ls’ — как в Linux или Mac OS X.
Смена текущего каталога
Теперь вернёмся в наш каталог рабочего стола:
$ cd Desktop
$ cd Desktop
Обрати внимание, что название каталога «Desktop» может быть переведено на язык твоей учётной записи в системе Linux. В таком случае набери вместо Desktop переводное название: например, Рабочий стол (в кавычках — они нужны, чтобы командная строка поняла кириллицу).
Windows
> cd Desktop
Проверь, что рабочий каталог действительно изменился:
OS X и Linux
$ pwd /Users/olasitarska/Desktop
Windows
> cd C:\Users\olasitarska\Desktop
Совет от профи: если ты введешь cd D и затем нажмешь tab на клавиатуре, в командной строке будет автоматически набрана остальная часть имени, что позволит быстрее перемещаться по каталогам. Если c «D», начинается название не одной папки, нажми Tab дважды, чтобы получить список вариантов.
Создание каталога
Как насчет создания каталога practice на рабочем столе? Ты можешь сделать это так:
OS X и Linux
$ mkdir practice
Windows
> mkdir practice
Эта маленькая команда создаст папку с именем practice на рабочем столе. Ты можешь проверить, появилась ли она, просто взглянув на рабочий стол или введя команду ls (для Linux и macOS) или dir (если у тебя Windows)! Попробуй. 🙂
Совет от профи: если ты не хочешь вводить одни и те же команды снова и снова, попробуй нажать на стрелку вверх и стрелку вниз на клавиатуре для просмотра недавно использованных команд.
Тренируемся!
Небольшая задачка: в недавно созданной папке practice создай папку с названием test . Используй команды cd и mkdir .
Решение:
OS X и Linux
$ cd practice $ mkdir test $ ls test
Windows
> cd practice > mkdir test > dir 05/08/2014 07:28 PM test
Чистка
Мы не хотим оставлять беспорядок, поэтому давай удалим всё, что мы создали до этого момента.
Во-первых, мы должны вернуться на рабочий стол:
OS X и Linux
Windows
Используя .. с командой cd , ты можешь сменить текущий каталог на родительский (то есть каталог, который содержит в себе текущий).
Проверь, где ты находишься:
OS X и Linux
$ pwd /Users/olasitarska/Desktop
Windows
> cd C:\Users\olasitarska\Desktop
Пришло время удалить каталог practice :
Внимание: удаление файлов с помощью del , rmdir или rm необратимо. Это означает, что удалённые файлы будут потеряны навсегда! Поэтому будь очень осторожна с этими командами.
Windows Powershell, OS X и Linux
$ rm -r practice
Командная строка Windows
> rmdir /S practice practice, Are you sure ? Y
Готово! Давай проверим, что папка действительно удалена:
OS X и Linux
Windows
Выход
Вот и всё на данный момент! Теперь можно безопасно закрыть командную строку. Давай сделаем это как хакеры, согласна? 🙂
OS X и Linux
$ exit
Windows
> exit
Подведём итоги
Вот краткий обзор некоторых полезных команд:
| Команда (Windows) | Команда (Mac OS / Linux) | Описание | Пример |
|---|---|---|---|
| exit | exit | закрыть окно | exit |
| cd | cd | изменить каталог | cd test |
| cd | pwd | вывести текущий каталог | cd (Windows) или pwd (Mac OS / Linux) |
| dir | ls | список каталогов/файлов | dir |
| copy | cp | копировать файл | copy c:\test\test.txt c:\windows\test.txt |
| move | mv | переместить файл | move c:\test\test.txt c:\windows\test.txt |
| mkdir | mkdir | создать новый каталог | mkdir testdirectory |
| rmdir (или del) | rm | удалить файл | del c:\test\test.txt |
| rmdir /S | rm -r | удалить каталог | rm -r testdirectory |
| [CMD] /? | man [CMD] | справка для команды | cd /? (Windows) или man cd (Mac OS / Linux) |
Это лишь некоторые из команд, которые можно использовать в командной строке, но сегодня тебе больше и не пригодится.
Если тебе интересно, на ss64.com можно найти полный справочник команд для всех операционных систем (на английском языке).
Готова продолжить?
Давай погрузимся в мир Python!
Список команд Windows ( Windows CMD ) с описанием и примерами.
Командная строка Windows является стандартным средством диагностики, настройки и управления компонентами операционной системы и прикладным программным обеспечением. В отличие от графической среды пользователя, командная строка является более гибким и универсальным инструментом, позволяющим решать многие задачи администрирования системы стандартными средствами Windows без установки дополнительного программного обеспечения.
Способы запуска командной строки
Командная строка Windows может быть запущена как и любое другое стандартное приложение — через Главное меню Windows, с использованием диалога Выполнить (комбинации клавиш Win+R, Win+X), а также с использованием открытия Проводником ( по двойному щелчку ) ярлыка или исполняемого файла C:\WINDOWS\System32\cmd.exe . В результате запуска откроется окно командной строки с приглашением к вводу команд . Приложение cmd.exe часто называют командным процессором или интерпретатором команд, а его основное окно – консолью Windows. Команды консоли представляют собой строку символов, которая может содержать встроенные команды командного процессора (HELP, ECHO и т.п.), имена и пути исполняемых или командных файлов (C:\Windows\System32\ping.exe), а также дополнительные параметры, если они требуются для выполнения конкретной команды (ping.exe yandex.ru). Результаты выполнения команд отображаются в окне консоли Windows и нередко зависят от наличия достаточных прав у текущего пользователя. Для выполнения команд в контексте учетной записи Администратора в операционных системах Windows Vista — Windows 11 необходимо использовать режим Запуск от имени Администратора .
Ссылки на материалы по настройке командной строки и приемах работы с ней размещены в конце страницы.
Справочник по командам CMD Windows
Данная страница представляет собой самый полный документ в русскоязычном сегменте Интернет, содержащий список команд командной строки всех версий Windows. Наименования подавляющего большинства команд являются ссылками и ведут на страницы с подробным их описанием и примерами использования. В разных версиях ОС семейства Windows набор поддерживаемых команд, их параметры командной строки, синтаксис и отображение результатов выполнения могут различаться. Одна и та же утилита командной строки может присутствовать в стандартной поставке одной версии Windows, но отсутствовать в другой, или входить в состав дополнительных средств, как например, Resource Kit или Software Development Kit.
На данной странице представлено описание не только внутренних команд CMD, но и стандартных утилит командной строки, входящих в состав конкретных версии операционной системы (ОС) семейства Windows. Некоторые из приведенных команд устарели, и больше не поддерживаются разработчиком или не имеют смысла в современных операционных системах, что отмечается в описании команды.
Список команд постоянно обновляется и включает в себя все новейшие команды, добавляемые в стандартную поставку при выходе новых версий или обновлений ОС Windows 11.
APPEND — позволяет программам открывать файлы данных из указанных папок так, как будто они находятся в текущей папке.
ARP — просмотр и изменение таблиц ARP (Address Resolution Protocol)
ASSOC — просмотр или изменение сопоставлений расширений файлов приложениям
AT — управление планировщиком задач
ATTRIB — изменение атрибутов файлов
Auditpol — управление политиками аудита.
BASH — командная оболочка BASH в подсистеме Windows для Linux (WSL).
BCDBOOT — копирование в системный раздел файлов загрузки и создание нового хранилища конфигурации загрузки (BCD)
BCDEDIT — редактирование хранилища данных конфигурации загрузки (BCD)
BOOTCFG — редактирование параметров загрузки в файле boot.ini
BOOTIM — вызов меню загрузки и восстановления (Выбор действия) Windows 10
BOOTREC — восстановление загрузочных записей и конфигурации загрузки Windows
BOOTSECT — редактирование загрузочных секторов для обеспечения загрузки NTLDR или BOOTMGR
BREAK — включить или выключить обработку комбинации клавиш CTRL+C в DOS
CACLS — редактирование списков управления доступом к файлам (ACL — Access Control List)
CALL — вызов из командного файла подпрограмм или других командных файлов
CD — смена каталога (Change Directory)
CHANGE — изменение настроек сервера терминалов. Контексты — LOGON, PORT, USER
CHGLOGON — изменение настроек сервера терминалов, аналогично CHANGE LOGON
CHGPORT — изменение настроек сервера терминалов, аналогично CHANGE PORT
CHGUSR — изменение настроек сервера терминалов, аналогично CHANGE USER
CHCP — просмотр или изменение текущей кодовой страницы
CHKDSK — проверка диска (Check Disk)
CheckNetIsolation — управление доступом приложений к интерфейсу замыкания на себя (localhost) в Windows 10
CHKNTFS — проверка признака ошибки файловой системы и управление проверкой диска при загрузке Windows
CHOICE — реализация пользовательского ввода в командном файле
CIPHER — отображение или изменение шифрования файлов на томах NTFS
CLEARMGR — управление очисткой дисков Windows
CLIP — перенаправление вывода утилит командной строки в буфер обмена Windows
CLS — очистка экрана в командной строке
CMD — запуск новой копии интерпретатора командной строки
CMDKEY — создание, отображение, удаление и сохранение имен пользователей и паролей
COLOR — изменение цвета текста и фона в окне CMD
COMMAND — запуск новой копии интерпретатора командной строки MS-DOS
COMP — сравнение содержимого файлов
COMPACT — управление сжатием и распаковкой файлов в разделах NTFS
CONVERT — преобразование файловой системы из FAT в NTFS
COPY — копирование файлов и каталогов
Cscript — сервер сценариев Windows с консольным интерфейсом
DATE — отображение или изменение даты
DEBUG — запуск отладчика DOS-Windows XP
DEL — удаление одного или нескольких файлов
DevCon — управление устройствами в командной строке
DIANTZ — тоже что и MAKECAB, создание архивов .cab.
DIR — отображение списка файлов и каталогов
DISKCOMP — сравнение содержимого двух гибких дисков
DISKCOPY — копирование содержимого одного гибкого диска на другой
DISKPART — управление разделами и дисками из командной строки
DISM — управление компонентами образрв WIM.
DISPDIAG — вывод дампов с диагностической информацией о графической подсистеме.
DJOIN — автономное присоединение компьютера к домену.
DOSKEY — редактирование и повторный вызов команд Windows, создание макросов DOSKey
DRIVERQUERY — отобразить информацию об установленных драйверах.
DxDiag — средство диагностики DirectX.
ECHO — вывод текста на экран консоли
EDIT — запуск текстового редактора
ENDLOCAL — конец локальных изменений переменных окружения в командном файле
ERASE — аналогично команде DEL — удаление файлов
ESENTUTL — обслуживание баз данных Extensible Storage Engine для Windows
EVENTCREATE — запись сообщения в журнал событий Windows
EXIT — выход из процедуры или командного файла
EXPAND — распаковка сжатых файлов CAB-файлов.
EXPLORER — параметры командной строки Проводника Windows.
EXTRACT — извлечение содержимого, распаковка CAB-файлов в Windows (EXTRAC32)
FC — сравнение содержимого файлов
FIND — поиск строки символов в файле
FINDSTR — поиск строк в файлах с использованием регулярных выражений
FOR — организация циклической обработки результатов выполнения других команд, списков, и строк в текстовых файлах
FORFILES — выполнение указанной команды для каждого файла из заданной группы
FSUTIL — управление файловой системой
FTYPE — просмотр и изменение расширений файлов и сопоставленных им приложений
GETMAC — отображение физического адреса сетевого адаптера (MAC-адреса)
GOTO — команда безусловного перехода в командном файле
GPRESULT — отображение результирующей политики (RSoP)
GPUPDATE — обновление групповых политик.
HELP — вызов справки командной строки Windows
HOSTNAME — отображение имени компьютера
iCACLS — управление списками доступа (ACL)
IF — оператор условного выполнения команд в пакетном файле
IPCONFIG просмотр и управление конфигурацией протокола IP
LABEL — редактирование меток тома дисков
LicensingDiag — диагностика лицензирования Windows 10 и старше
LOGMAN — управление монитором оценки производительности системы
LOGOFF — завершение сеанса пользователя
MAKECAB — создание сжатых файлов формата CAB
MBR2GPT — преобразование дисков MBR в GPT
MEM — вывод справки об использовании памяти в MS-DOS
MD — создание нового каталога
MKLINK — создание символической ссылки на файл или каталог
MODE — конфигурирование системных устройств в среде CMD
MORE — постраничный вывод в консоли
MOUNTVOL — управление точками монтирования томов
MOVE — перемещение файлов и каталогов
MOVEFILE — перемещение или удаление занятых файлов при следующей перезагрузке
MSG — отправка сообщений пользователям.
MSTSC — подключение к удаленному рабочему столу.
NBTSTAT — просмотр статистических данных NETBIOS через TCP/IP (NetBT)
NET — управление ресурсами локальной сети
NETCFG — отображение и изменение конфигурации компонентов сети
NETSH — командная сетевая оболочка (Network Shell)
NETSTAT — отображение статистики сетевых соединений
NSLOOKUP — просмотр данных DNS в командной строке
OPENFILES — управление открытыми по сети или локально файлами
PATH — отображение или изменение путей поиска исполняемых файлов
PATHPING — трассировка маршрута с возможностью оценки качества участков трассы
PAUSE — пауза при выполнении командного файла
PING утилита проверки доступности узла
PKGMGR — управление программными пакетами Windows
PNPUTIL — конфигурирование драйверов устройств PnP
POPD — возврат в каталог, ранее запомненный с помощью команды PUSHD
POWERCFG — настройка параметров системы электропитания Windows
PowerShell_ISE — запуск интегрированной среды разработки сценариев PowerShell
PRINT — печать текстового файла
PROMPT — изменение строки приглашения в консоли
PUSHD — сохранить текущий путь каталога и перейти в указанный
PSR — записать действия пользователя в Windows 7/8.1/10 ( P roblem S teps R ecorder)
QPROCESS — отобразить состояние процессов
QUERY — опросить состояние процессов и сеансов пользователей
QUSER — отобразить информацию о сеансах пользователей
RASDIAL — управление сеансами удаленного доступа
RASPHONE — управление сеансами удаленного доступа
REAGENTC — адимнистрирование стреды восстановления Windows
RECOVER — восстановление файлов на поврежденном диске
REG — утилита командной строки для работы с реестром Windows
REGEDIT — импорт и экспорт данных реестра Windows
REGSVR32 — регистрация или отмена регистрации DLL
REGINI — управление доступом к разделам реестра
REM — комментарии в командных файлах
REPLACE — замена или добавление файлов в катологах
RESET — сброс сеанса удаленного рабочего стола (RDP сессии)
ROBOCOPY — утилита резервного копирования и синхронизации каталогов (Robust File and Folder Copy)
ROUTE — управление таблицей маршрутизации
RUNAS — запуск приложения от имени другого пользователя
RUNDLL32 — запуск DLL в качестве приложения
SC — управление службами Windows (Service Control)
SCHTASKS — управление планировщиком задач
SCLIST — отображение списка системных служб
ScriptRunner — запуск одного или нескольких скриптов в Windows 10
SET — отображение и изменение переменных среды окружения Windows
SETLOCAL — установка локальных переменных в командном файле
SETX — утилита для создания системных переменных
SFC — проверка и восстановление системных файлов Windows
SHARE — просмотр, создание и удаление разделяемых в локальной сети ресурсов
SHIFT сдвиг входных параметров для командного файла
SHUTDOWN — выключение или перезагрузка компьютера
SLEEP — задержка по времени в пакетном файле
SLMGR — управление лицензированием программного обеспечения Windows
SORT — сортировка строк в текстовом файле
START — запуск приложения или командного файла
STORDIAG — диагностика системы хранения данных в Windows 10
SUBST — назначение (отмена назначения) каталогу буквы диска
SxSTrace — диагностическое средство трассировки компонент системы
SYSTEMINFO — отображение информации о системе
TAKEOWN — изменение владельца файла или каталога
TAR — архивирование данных архиватором tar в Windows 10
TASKKILL — завершение процессов на локальной или удаленной системе.
TASKLIST — отображение списка выполняющихся приложений и служб Windows
TIME — отображение и установка системного времени
TIMEOUT — задержка в пакетных файлах
TITLE — изменение заголовка окна CMD.EXE
TRACERT — трассировка маршрута к удаленному узлу
TREE — отображение структуры каталога в графическом виде
TSCON — подключение к сессии удаленного рабочего стола (RDP).
TSDISCON — отключение сессии удаленного рабочего стола (RDP).
TSKILL — завершение процессов, адаптированное для среды сервера терминалов (RDP).
TYPE — вывод на экран содержимого текстового файла
TypePerf — вывод сведений о производительности на экран или в журнал
TZUTIL — управление часовыми поясами в среде Windows
VaultCmd — администрирование учетных данных Windows.
VER — отображение версии операционной системы
VERIFIER — тестирование драйверов Windows.
VERIFY — управление режимом проверки записываемых файлов
VOL — вывод данных метки тома
VSSADMIN — администрирование службы теневого копирования томов.
W32TM — управление службой времени Windows
WAITFOR — организация обмена сигналами между компьютерами
WBADMIN — управление резервным копированием и восстановлением в Windows
WEVTUTIL — управление событиями в Windows
WHERE — определение места расположения файлов
WHOAMI — вывод имени текущего пользователя
WINDIFF — сравнение содержимого файлов
Winget — установка, обновление, перенос и удаление приложений в Windows 10 и более поздних версий.
WinMgmt — обслуживание инструментария управления Windows (WMI)
WINRM — удаленное управление Windows из командной строки
WINRS — удаленная командная строка (Remote Shell)
WINSAT — средство проверки производительности Windows
WMIC — выполнение команды WMI в командной строке
WSCollect — получить CAB-файл с копиями журналов Windows 10 на рабочем столе
Wscript — сервер сценариев Windows с графическим интерфейсом
WSL — выполнение команд Linux и конфигурирование параметров подсистемы Windows для Linux (WSL) в Windows 10
WSLconfig — конфигурирование параметров подсистемы Windows для Linux (WSL) в Windows 10
WUSA — автономная установка обновлений Windows
XCOPY — копирование файлов и папок
Прочие материалы по работе с командной строкой Windows:
Настройка командной строки Windows. — Как изменить цвет фона, цвет символов, размер и расположение окна командной строки. Копирование и вставка текста в окне консоли. Как настроить дополнение имен файлов и каталогов при наборе в командной строке. Использование функциональных клавиш.
Работа с командной строкой Windows — Основные приемы, используемые при работе в командной строке Windows.
Командные файлы Windows — Общие принципы применения переменных среды в командных файлах. Обработка параметров командной строки. Использование меток, переходов и циклическая обработка данных. Практические примеры решения задач администрирования системы.
Запуск приложений от имени администратора без запроса UAC — Как запустить из командного файла приложение или командный файл без запроса системы контроля учетных записей UAC
Работа с сетью в командной строке. — подробное описание команд CMD Windows для работы с сетью и примеры их использования.
Подсистема Linux в Windows 10 — Использование командной строки Linux в Windows 10.
Какие типы команд существуют в командной оболочке
В операционной системе UNIX основными средствами взаимодействия пользователя с системой являются клавиатура и экран монитора, работающий в текстовом режиме. Вводимый пользователем текст немедленно отображается на мониторе соответствующими знаками, однако может и не отображаться (например, в случае ввода пароля). Для управления вводом используются некоторые нетекстовые клавиши на клавиатуре: Backspace (он же « Забой ») – для удаления последнего введенного символа или Enter – для передачи команды системе. Нажатие на эти клавиши не приводит к отображению символа, вместо этого вводимый текст обрабатывается системой тем или иным способом – эти клавиши и их комбинации объединяют понятием управляющие символы .
Текстовый принцип работы с машиной позволяет отвлечься от конкретных частей компьютера, вроде системной клавиатуры и видеокарты с монитором, рассматривая единое оконечное устройство, посредством которого пользователь вводит текст и передает его системе, а система выводит необходимые пользователю данные и сообщения. Такое устройство называется терминалом . В общем случае терминал – это точка входа пользователя в систему, обладающая способностью передавать текстовую информацию. Терминалом может быть отдельное внешнее устройство, подключаемое к компьютеру через порт последовательной передачи данных (« COM-порт »). В роли терминала может работать (с некоторой поддержкой со стороны системы) и программа (например, xterm или ssh ).
Свойство терминала передавать только символьную информацию приводит к тому, что некоторые из передаваемых символов должны восприниматься не как текстовые, а как управляющие (например, символы, возвращаемые клавишами Backspace и Enter). На самом деле управляющих символов больше: часть из них предназначена для экстренной передачи команд системе, часть – для редактирования вводимого текста. Многие из этих символов не имеют специальной клавиши на клавиатуре, поэтому их необходимо извлекать с помощью клавиатурного модификатора Ctrl . Проблема в том, что на клавиатуре может быть так много разных нетекстовых клавиш, что на них не хватает ограниченного количества разных управляющих символов. Поэтому большинство нетекстовых клавиш возвращают так называемую управляющую последовательность , которая начинается управляющим символом, за которым следует строго определенное число обычных символов.
Одной из полезных особенностей терминала является позможность его « прокрутки » с помощью клавиш Shift — PgUp и Shift — PgDn . Это может быть полезно, если вывод программы занимает больший объём, чем размер экрана.
Командная оболочка
Основная среда взаимодействия с UNIX – командная строка . Суть её в том, что каждая строка, передаваемая пользователем системе, – это команда, которую та должна выполнить. Пока не нажата клавиша Enter , строку можно редактировать, затем она отсылается системе.
Команды интерпретируются и выполняются специальной программой – командной оболочкой (или « shell », по-английски). Через командную оболочку производится управление пользовательскими процессами – для этого используются средства межпроцессного обмена, описанные ранее (см. «Межпроцессное взаимодействие»).
Командная оболочка непосредственно связана с терминалом, через который осуществляется передача управляющих последовательностей и текста. На рисунке Рисунок 2.1, «Интерфейс командной строки» представлена общая схема взаимодействия пользователя с системой при использовании командной строки.
Рисунок 2.1. Интерфейс командной строки

Одновременный доступ к системе
То, что UNIX – многопользовательская и многозадачная система, проявляется не только в разграничении прав доступа (см. раздел Глава 3, Безопасность операционной системы UNIX), но и в организации рабочего места. Каждый компьютер, на котором работает UNIX, предоставляет возможность зарегистрироваться и получить доступ к системе нескольким пользователям одновременно. Даже если в распоряжении всех пользователей есть только один монитор и одна системная клавиатура, эта возможность небесполезна: одновременная регистрация в системе нескольких пользователей позволяет работать по очереди без необходимости каждый раз завершать все начатые задачи (закрывать все окна, прерывать исполнение всех программ) и затем возобновлять их. Более того, ничто не препятствует зарегистрироваться в системе несколько раз под одним и тем же входным именем. Таким образом, можно получить доступ к одним и тем же ресурсам (своим файлам) и организовать параллельную работу над несколькими задачами.
Характерный для современных версий UNIX способ организации параллельной работы пользователей – виртуальные консоли . Виртуальные консоли (virtual console) – это несколько параллельно выполняемых операционной системой программ, предоставляющих пользователю возможность зарегистрироваться в системе в текстовом режиме и получить доступ к командной строке (см. Рисунок 2.2, «Виртуальные и графические консоли»).
В операционной системе Linux переключение между виртуальными консолями в текстовом режиме производится с помощью комбинации клавиш Alt — F1 , Alt — F2 и т.п.. При этом каждая виртуальная консоль обозначается специальным именем: « tty1 », « tty2 » и т.д.. По умолчанию в Linux доступно не менее шести виртуальных консолей, переключаться между которыми можно при помощи сочетания клавиши Alt с одной из функциональных клавиш ( F1 — F6 ). С каждым сочетанием связана соответствующая по номеру виртуальная консоль. Виртуальные консоли обозначаются « ttyN », где « N » – номер виртуальной консоли. На самом деле, каждая из таких конолей связано с собственным терминалом , который характеризуется файлом устройства с соответствующим именем (например, /dev/tty1 ).
Современные версии UNIX предоставляют пользователям графические пользовательские интерфейсы (подробнее графическая подсистема UNIX рассматривается в разделе Глава 7, Графическая подсистема UNIX), которые также дают возможность работы в командной строке. Эта возможность достигается с помощью графических терминалов – специальных программ, которые эмулируют текстовый терминал в графическом окне.
Также существует возможность запуска нескольких графических подсистем, тогда переключение между ними будет осуществляться аналогично переключению между виртуальными консолями – комбинацией клавиш Ctrl — Alt — F1 .
Рисунок 2.2. Виртуальные и графические консоли

Каждое устройство терминала имеет свои возможности по вводу и выводу информации. Примерати таких возможностей являются: число цветов отображения, способность перемещать курсор и изменять размер экрана, набор управляющих символов и т.п.. Терминалы разделяют по типам : набору возможностей, регламентированных в специальном конфигурационном файле. Примерами типов являются: tty (телетайп) или xterm (графический терминал). Тип терминала явно указан в имени устройства терминала (например, /dev/tty1 ). Все настройки типов терминалов находятся в директории /etc/termcap .
Формат командной строки
Приглашение
Командная строка состоит из приглашения и вводимой команды. Приглашение – это специальная последовательность символов, которая располагается в начале строки и задает начало области ввода команды. Рассмотрим пример выполнения команды:
Пример 2.1. Пример выполнения команды
user@desktop ~ $ date Втр Окт 4 23:15:37 MSD 2005 user@desktop ~ $
Здесь приглашением является строка user@desktop ~ $ , которая помимо символа начала ввода ($) содержит информацию об имени пользователя, имени компьютера и текущей директории.
Формат команды
Каждая команда UNIX состоит из следующих частей:
Имя команды
Идентификатор команды, совпадающий с именем программы, которая запускается для исполнения команды. Некоторые команды (такие как echo ) являются встроенными для данной командной оболочки и для их выполнения вызывается не программа, а внутренняя функция оболочки.
Параметры или ключи или флаги или опции
Команда может иметь один или несколько параметров, разделённых пробелом. Параметры могут быть однобуквенными (как -l ) или полнословными (например, —help ). Однобуквенные параметры могут группироваться, например запуск команды ls -al эквивалентен запуску ls -a -l . Некоторые параметры состоят из имени и аргумента, например в коменде grep -f access.log -n test имя файла access.log – часть параметра -f .
Некоторые команды могут иметь аргументы. Аргументом может являться текстовая строка, соответвтующая имени файла или другого объекта. Аргументы также разделяются символом пробела, чтобы передать в качестве аргумента строку символов с пробелами, можно воспользоваться символами кавычек:
user@desktop ~ $ echo "Hello, world." Hello, world.
Стандартный ввод и вывод каждой команды (см. «Межпроцессное взаимодействие») может быть перенаправлен в файл. По умолчанию ввод и вывод команды связываются с пользовательским терминалом. Для указания источника ввода или назначения вывода (для обычной информации и для ошибок отдельно) используются специальные символы ( и >>).
Как правило, порядок данных частей команды должен быть именно таким, однако некоторые из них (кроме имени команды) могут отсутствовать.
Процесс выполнения команды
Командная оболочка – это обычный процесс в операционной системе UNIX. Когда пользователь вводит команду (например, по нажатию Enter ), командная оболочка выполняет следующие действия:
- анализ команды: выделение имени, параметров и аргументов;
- если это встроенная команда , для неё вызывается функция-обработчик;
- если это внешняя команда :
- производится поиск программы с соответвующим именем;
- создаётся дочерний процесс оболочки (системный вызов fork);
- в дочернем процессе запускается необходимая команда с расшифрованными параметрами и аргументами (системный вызов exec);
- оболочка контролирует выполнение дочернего процесса, передаёт ему сигналы и ввод пользователя, ожидает его завершения (системный вызов wait);
Рисунок 2.3. Запуск команды оболочкой

Возвращаемое значение
Каждый процесс при завершении возвращает своему родительскому процессу специальный код завершения программы. Этот код может использоваться для получения результата выполнения программы и для проверки корректности её выполнения (возврата кода ошибки).
Традиционно для UNIX, в случае успешного выполнения программа (а также большинство системных функций) возвращает значение 0 . Другие значения (все, отличные от 0 ) означают тот или иной вид ошибки. Так как программы часто выводят инфоромацию об ошибках через специальный поток вывода ошибок (stderr), возвращаемые значения чаще всего могут принимать только два значения: « ноль » и « не ноль ».
Если рассмотреть простейший пример программы на языке C:
Пример 2.2. Возвращаемое значение в программе на языке C
int main(int argc, char* argv[]) < . if(error) < exit(1); >. return 0; >
видно, что программы передают код завершения через возвращаемое значение главной функции ( main ) или как параметр функции exit .
В командной строке результат выполнения программы можно проанализировать с помощью специальной переменной ( $? ):
user@desktop ~ $ test -f /tmp/file.txt user@desktop ~ $ echo $? 0
Способы объединения команд
Существует возможность объединять несколько команд в одной командной строке. Это можно делать несколькими способами:
Последовательное выполнение
Команды выполняются одна за другой, не зависимо от результата их исполнения. В качестве разделителя выступает символ точки с запятой (« ; »).
В качестве примера можно рассмотреть составную команду du -sh; date , которая выводит на экран содержимое домашней директории, а затем текущие дату и время.
Условное выполнение (И)
Проверяется код завершения первой программы, если он равен 0 , производится выполнение второй программы, и так далее. Таким образом, последняя команда выполнится только при успешном завершении всех предыдущих. В качестве разделителя выступают два амперсанда (« && »).
В качестве примера можно рассмотреть составную команду test -r /tmp/txt && cp /tmp/txt . , которая проверяет возможность чтения файла /tmp/txt и в случае успеха, копирует этот файл в локальную директорию.
Условное выполнение (ИЛИ)
Проверяется код завершения первой программы, если он не равен 0 , производится выполнение второй программы, и так далее. Последняя команда будет запущена только если ни одна из предыдущих не закончилась успешно. В качестве разделителя выступают две вертикальный черты (« || »).
В качестве примера можно рассмотреть составную команду test -d /tmp/dir || mkdir /tmp/dir , которая проверяет существование директории /tmp/dir и если её нет, создаёт её.
При выполнении программ связываются их стандартные выходы и входы, так что текстовые данные передаются через них последовательно, как по конвейеру. Этот механизм является одной из самых фундаментальных особенностей UNIX и широко используется при работе в командной стоке.
Все программы могут быть запущены одновременно, так чтобы обеспечить интерактивность вывода при прохождении данных через цепочку программ. Если одна из программ в цепочке конвейера завершится (например, в случае ошибки), остальным будет отправлен специальный сигнал (SIGPIPE).
В качестве разделителя используется символ вертикальный черты (« | »).
Рассмотрим пример команды cat file.txt | uniq | sort , которая читает содержимое файла file.txt , удаляет из него повторяющиеся строки и сортирует оставшиеся строки по алфавиту. Результат выводится на экран.
Современные командные оболочки позволяют строить более гибкие условные выражения (с импользованием скобок и знака отрицания) из выполняющихся команд.
Служебные символы
Из предыдущих разделов видно, что в командной строке присутствует множество служебных символов , каждый из которых имеет своё значение. Все эти символы следует с осторожностью использовать в именах файлов.
Рассмотрим основные группы служебных символов командной оболочки:
Символы-разделители
Используются для отлеления частей команды или нескольких команд. К ним относятся: пробел, табуляция. По умолчанию команды разделяются символом перевода строки. При использовании символа пробела в именах файлов необходимо заключать параметр в кавычки или предварять пробел символом обратной косой (« \ »).
Используются для разделения элементов пути. Сюда можно отнести символ корня (« / ») и символ домашней директории (« ~ ») – в командной строке он автоматически заменяется на полный путь к домашней директории. При этих символов в именах файлов необходимо предварять их символом обратной косой (« \ »).
Применяются в аргументах команд, для отделения нескольких команд, для запуска процессов на заднем фоне и т.п. К таким символам можно отнести: « * », « & », « < », « >», « ; », « ( », « ) », « | », « » ». При этих символов в именах файлов необходимо предварять их символом обратной косой (« \ »).
Символ параметров команды
Символ « — » используются для задания параметров команд. Проблемы могут возникнуть, если имя файла начинается с этого символа – в этом случае командная оболочка может принять такой аргумент за набор параметров. Стандартным выходом из этой ситуации является явное указание окончания списка параметров с « — », например:
user@desktop ~ $ ls -l -- -test-file -rw-r--r-- 1 user users 90 Сен 19 00:20 -test-file
Символы управления переменными
Используются для задания (« = ») и подстановки (« $ ») значений переменных среды. При этих символов в именах файлов необходимо предварять их символом обратной косой (« \ »).
Специальные ASCII-символы, вроде возврата каретки или табуляции. Их синтаксис эквивалентен используемому в языке C – с применением символа обратной косой (« \ »).
Программное окружение
Каждый запускаемый процесс система снабжает неким информационным пространством , которое этот процесс вправе изменять как ему заблагорассудится. Правила пользования этим пространством просты: в нем можно задавать именованные хранилища данных ( переменные окружения ), в которые записывать какую угодно информацию (присваивать значение переменной окружения), а впоследствии эту информацию считывать (подставлять значение переменной).
В UNIX дочерний процесс – точная копия родительского, поэтому его окружение – также точная копия родительского. Если про дочерний процесс известно, что он использует значения некоторых переменных из числа передаваемых ему с окружением, родительский может заранее указать, каким из копируемых в окружении переменных нужно изменить значение. При этом, с одной стороны, никто (кроме системы, конечно) не сможет вмешаться в процесс передачи данных, а с другой стороны, одна и та же утилита может быть использована одним и тем же способом, но в измененном окружении – и выдавать различные результаты:
user@desktop ~ $ date Птн Ноя 5 16:20:16 MSK 2004 user@desktop ~ $ LC_TIME=C date Fri Nov 5 16:20:23 MSK 2004
В последнем примере пользователь присвоил некоторое значение переменной окружения в командной строке перед именем команды. Командный интерпретатор, увидев « = » внутри первого слова командной строки, приходит к выводу, что это – операция присваивания, а не имя команды, и запоминает, как надо изменить окружение команды, которая последует далее. Переменная окружения LC_TIME предписывает использовать определенный язык при выводе даты и времени, а значение «C» соответствует стандартному системному языку (чаще всего – английскому).
Для получения значения переменной окружения необходимо воспользоваться символом « $ »:
user@desktop ~ $ echo $PWD /home/user
Стандартные переменные окружения
При старте командной оболочки, инициализируется множество системных переменных, которые можно посмотреть с помощью команды env . Некоторые из них представляют особый интерес для пользователя системы:
Переменная используется графической подсистемой X11 и указывает на адрес X-сервера и номер используемого экрана (подробнее об этом будет сказано в разделе Глава 7, Графическая подсистема UNIX).
Если какая-то утилита требует редактирования файла, то вместо написания и использования встроенного редактора, этот файл можно передать на редактирование программе, путь к которой хранится в переменной EDITOR .
Переменная сожержит имя домашней директории текущего пользователя.
Переменная окружения содержит список директорий, разделённый символом « : ». Этот список просматривается при каждом запуске команды – в нём производится поиск исполнемых файлов с соответвтующем команде именем. Примером значения переменной окружения может быть « /bin:/usr/bin:/usr/local/bin ».
Как правило, значение этой переменной различается для простого пользователя и администратора – для того, чтобы разделить их рабочий инструментарий.
Имя текущей программы оболочки.
Тип терминала, используемого в настоящий момент. Эта переменная анализируется программами для того, чтобы варьировать свой интерфейс в зависимости от возможностей терминала.
Имя текущего пользователя.
_ (одиночный символ подчёркивания)
В точности последняя команда, выполненная в командной оболочке.
Возможности интерфейса командной оболочки
Современные командные оболочки, например bash предоставляют пользователю ряд удобных особеностей пользовательского интерфейса, облегчающих работу с командной строкой.
Редактирование командной строки
Вводимую команду можно редактировать с помощью клавиш Backspace и Delete , перемещаться стрелками по всей строке.
Для управления запущенными командами используются сочетания клавиш. Ввод следует завершать командой Ctrl — D (конец ввода). Эту команду интерпретирует при вводе с терминала система. Она же превращает некоторые другие управляющие символы (например, Ctrl — C – « перывание » или Ctrl — Z – « засыпание ») в сигналы.
Командная оболочка позволяет настраивать все функциональные клавиши и команды. Настройки ввода для bash располагаются в файле /etc/inputrc .
История команд
Двумя другими клавишами со стрелками – вверх и вниз – задействуется весьма мощный механизм bash – работа с историей команд . Все команды, набранные пользователем, командная оболочка запоминает и позволяет обращаться к ним впоследствии. По стрелке вверх, список поданных команд « прокручивается » от последней к первой, а по стрелке вниз – обратно. Соответствующая команда отображается в командной строке как только что набранная, её можно отредактировать и подать оболочке (подгонять курсор к концу строки при этом необязательно).
Чтобы история команд могла сохраняться между сеансами работы пользователя, bash записывает ее в файл .bash_history , находящийся в домашнем каталоге пользователя. Делается это в момент завершения оболочки: накопленная за время работы история дописывается в конец этого файла. При следующем запуске командной оболочки считывает .bash_history целиком. История хранится не вечно, количество запоминаемых команд в .bash_history ограничено (обычно сохраняется 500 команд, но это можно и перенастроить).
Псевдонимы
Поиск по истории – удобное средство: длинную командную строку можно не набирать целиком, а отыскать и использовать. Однако давнюю команду придется добывать с помощью нескольких нажатий клавиши вверх – а можно и совсем не доискаться, если она уже выбыла оттуда. Для того чтобы оперативно заменять короткие команды длинными, стоит воспользоваться псевдонимами (aliases). В конфигурационных файлах командного интерпретатора пользователя обычно уже определено несколько сокращений, список которых можно посмотреть с помощью команды alias без параметров:
user@desktop ~ $ alias alias cp='cp -i' alias l='ls -lapt' alias ll='ls -laptc' alias ls='ls --color=auto' alias md='mkdir' alias mv='mv -i' alias rd='rmdir' alias rm='rm -i'
Например, по команде ls вместо утилиты /bin/ls bash запускает собственную команду-сокращение, превращающееся в команду ls —color=auto . Повторно появившуюся в команде подстроку «ls» интерпретатор уже не обрабатывает, во избежание вечного цикла. Например, команда ls -al превращается в результате в ls —color=auto -al .
Сокращения не наследуются с окружением.
Автодополнение
Автодополнения позволяют быстро набирать команды и пути в файловой системе. Во время набора имени команды или файла пользователь может нажать клавишу Tab , и командная оболочка попытается « дополнить » указанную команду или файл: предложит возможные варианты с данным началом или же дополнит имя, ведь часто набранной строки – пути к файлу и нескольких первых букв его имени – достаточно для однозначного указания на этот файл, потому что по введенному пути других файлов, чье имя начинается на эти буквы, просто нет.
Шаблоны
Автодополнение очень удобно, когда цель пользователя – задать один конкретный файл в командной строке. Если же нужно работать сразу с несколькими файлами – например, для перемещения их в другой каталог с помощью mv, достраивание не помогает. Необходим способ задать одно « общее » имя для группы файлов, с которыми будет работать команда. В подавляющем большинстве случаев это можно сделать при помощи шаблона .
Шаблон в командном интерпретаторе используется примерно в тех же целях, что и регулярное выражение, которое будет описано в разделе «Команды, использующие регулярные выражения»: для поиска строк определенной структуры среди множества разнообразных строк. В отличие от регулярного выражения, шаблон всегда примеряется к строке целиком, кроме того, он устроен значительно проще (а значит, и беднее).
Символы в шаблоне разделяются на обычные и специальные. Обычные символы соответствуют таким же символам в строке, а специальные – обрабатываются особым образом:
- Шаблону, состоящему только из обычных символов, соответствует единственная строка, состоящая из тех же символов в том же порядке. Например, шаблону « abc » соответствует строка abc , но не aBc или ABC , потому что большие и маленькие буквы различаются.
- Шаблону, состоящему из единственного спецсимвола « * », соответствует любая строка любой длины (в том числе и пустая).
- Шаблону, состоящему из единственного спецсимвола « ? », соответствует любая строка длиной в один символ, например, a , + или @ , но не ab или 8888 .
- Шаблону, состоящему из любых символов, заключенных в квадратные скобки « [ » и « ] » соответствует строка длиной в один символ, причем этот символ должен встречаться среди заключенных в скобки. Например, шаблону « [bar] » соответствуют только строки a , b и r , но не c , B , bar или ab . Символы внутри скобок можно не перечислять полностью, а задавать диапазон, в начале которого стоит символ с наименьшим ASCII-кодом, затем следует « — », а затем – символ с наибольшим ASCII-кодом. Например, шаблону « [0-9a-fA-F] » соответствует одна шестнадцатеричная цифра (скажем, 5 , e или C ). Если после « [ » в шаблоне следует « ! », то ему соответствует строка из одного символа, не перечисленного между скобками.
- Шаблону, состоящему из нескольких частей, соответствует строка, которую можно разбить на столько же подстрок (возможно, пустых), причем первая подстрока будет отвечать первой части шаблона, вторая – второй и т. д. Например, шаблону « a*b?c » будут соответствовать строки ab@c (« * » соответствует пустая подстрока), a+b=c и aaabbc , но не будут соответствовать abc (« ? » соответствует подстрока c , а для « c » соответствия не находится), @ab@c (нет соответствия для « a ») или aaabbbc (из трех b первое соответствует « b », второе – « ? », а вот третье приходится на « c »).
Шаблоны используются в нескольких конструкциях shell. Главное место их применения – командная строка. Если оболочка « видит » в командной строке шаблон, она немедленно заменяет его списком файлов, имена которых ему соответствуют. Команда, которая затем вызывается, получает в качестве параметров список файлов уже без всяких шаблонов, как если бы этот список пользователь ввел вручную. Шаблоны используются в нескольких конструкциях shell. Главное место их применения – командная строка. Если оболочка « видит » в командной строке шаблон, она немедленно заменяет его списком файлов, имена которых ему соответствуют. Команда, которая затем вызывается, получает в качестве параметров список файлов уже без всяких шаблонов, как если бы этот список пользователь ввел вручную.
Командная оболочка как средство программирования
Большая часть того, что нужно начинающему пользователю UNIX, делается с помощью одной правильной команды, или вызовом нескольких команд в конвейере. От пользователя только требуется оформить решение задачи в виде сценария на shell. На самом же деле уже самый первый из командных интерпретаторов, sh , был настоящим высокоуровневым языком программирования – если, конечно, считать все утилиты системы его операторами. При таком подходе от sh требуется совсем немного: возможность вызывать утилиты, возможность свободно манипулировать результатом их работы и несколько алгоритмических конструкций (условия и циклы).
Программирование на shell, а также других, более мощных интерпретируемых языках в UNIX, остается за рамками этого курса.
Справочная подсистема
Работать с UNIX, не заглядывая в документацию, практически невозможно. Это возможно, потому что документированы практически все области операционной системы. Всем пользователям настоятельно рекомендуется, приступая к работе, а тем более – к изучению UNIX, пользоваться всеми доступными руководствами. Исторически первым и основным средством документации во всех версиях являются страницы руководства (manual pages), которые будут подробно рассмотрены далее.
Документация в подавляющем большинстве случаев пишется на простом английском языке. Если английский – не родной язык для автора документации, она будет только проще. Традиция писать по-английски идет от немалого вклада США в развитие компьютерной науки вообще и UNIX в частности. Кроме того, английский становится языком международного общения во всех областях, не только в компьютерной. Необходимость писать на языке, который будет более или менее понятен большинству пользователей, объясняется постоянным развитием UNIX. Дело не в том, что страницу руководства нельзя перевести, а в том, что ее придется переводить всякий раз, когда изменится описываемый ею объект! Например, выход новой версии программного продукта сопровождается изменением его возможностей и особенностей работы, а следовательно, и новой версией документации.
Документация в UNIX играет важнейшую роль. Решение любой задачи должно начинаться с изучения руководств. Не стоит жалеть на это времени. Даже если рядом есть опытный пользователь UNIX, который, возможно, знает ответ, не стоит беспокоить его сразу же. Возможно, даже зная, что нужно сделать, он не помнит как именно – и поэтому (а также потому, что он – опытный пользователь) начнет с изучения руководства. Это – закон, у которого даже собственное название: RTFM , что означает « Read That Fine Manual ».
Современные свободные UNIX-системы обладают большим сообществом пользователей и разработчиков, объединённых через Интернет. В этих сообществах является нормальной практикой взаимопомощь и ответы на вопросы по системе. Однако, здесь необходимо следовать описанному выше принципу RTFM .
Страницы руководтсва
Больше всего полезной информации содержится в страницах руководства , для краткости мы будем называть их просто « руководство ». Каждая страница посвящена какому-нибудь одному объекту системы. Для того чтобы посмотреть страницу руководства, нужно дать команду системе man объект :
user@desktop ~ $ man cal CAL(1) BSD General Commands Manual CAL(1) NAME cal - displays a calendar SYNOPSIS cal [-smjy13] [[month] year] DESCRIPTION Cal displays a simple calendar. If arguments are not specified, the current month is displayed. The options are as follows: .
Страница руководства занимает, как правило, больше одной страницы экрана. Для того чтобы читать было удобнее, man запускает программу постраничного просмотра текстов – less. Управлять программой less просто: страницы перелистываются пробелом, а когда читать надоест, надо нажать q (Quit). Перелистывать страницы можно и клавишами Page Up / Page Down , для сдвига на одну строку вперед можно применять Enter или стрелку вниз, а на одну строку назад – стрелку вверх. Переход на начало и конец текста выполняется по командам g и G соответственно (Go). Полный список того, что можно делать с текстом в less , выводится по команде h (help). Для поиска и подстветки интересующего понятия можно воспользоваться командой / , после которой необходимо ввести интересующий Вас термин – по нажатию клавиши Enter , курсор перейдёт к первому упоминанию термина, который будет выделен серым цветом. Последующие нажатия / и Enter приведут к продолжению поиска слова по документу.
Страница руководства состоит из полей – стандартных разделов, с разных сторон описывающих заинтересовавший объект – например, команду cal . В поле NAME содержится краткое описание объекта (такое, чтобы его назначение было понятно с первого взгляда). В поле SYNOPSIS дается формализованное описание способов использования объекта (в данном случае – того, как и с какими параметрами запускать команду cal ). Как правило, в квадратные скобки в этом поле заключены необязательные параметры команды, которые можно ей передать, а можно и опустить. Например, строка « [[month] year] » означает, что в этом месте командной строки параметров у команды может не быть вообще, может быть указан год или пара – месяц и год. Наконец, текст в поле DESCRIPTION – это развернутое описание объекта, достаточное для того, чтобы им воспользоваться.
Одно из самых важных полей руководства находится в конце текста. Если в процессе чтения NAME или DESCRIPTION пользователь понимает, что не нашел в руководстве того, что искал, он может захотеть посмотреть, а есть ли другие руководства или иные источники информации по той же теме. Список таких источников содержится в поле SEE ALSO:
user@desktop ~ $ man man . SEE ALSO apropos(1), whatis(1), less(1), groff(1), man.conf(5).
Справочные руководства делятся на разделы – в зависимости от типа описываемых объектов. Если один и тот же термин описывается в нескольких разделах, необходимо явно указать, какой из них использовать, например, man 3 printf для 3-го раздела руководств.
Всего существует 8 разделов руководств:
- пользовательские утилиты и прочие инструменты
- системные вызовы
- библиотечные функции
- внешние устройства (и их представление в системе)
- форматы и таблицы (типы файлов, протоколы и прочее)
- игры и всевозможные « ненужные » утилиты
- « остальное », т. е. то, что не подходит под другие разделы
- команды и инструменты системного администратора
Какие типы команд существуют в командной оболочке
Командная оболочка может читать команды из файла, а может воспринимать команды, набранные пользователем на клавиатуре. В последнем случае говорят, что оболочка работает в интерактивном режиме.
Вот скриншот программы xterm :

На нём видно, что только что была запущена команда ls / , она напечатала кое-что на экране и теперь можно вводить новую команду. Силуэт Главного здания МГУ выводится единожды при запуске командной оболочки zsh (так уж настроен мой компьютер), после чего появляется так называемое приглашение.
Некоторые программы выводят много текста в окно терминала, но из-за прокрутки в окне видно только его окончание — то, что помещается в окне. Тем не менее программа-терминал обычно хранит несколько сотен последних строчек в своей памяти, и имеется возможность промотать текст обратно. В xterm для этого нужно нажимать Shift + Up (прокрутка по строкам) Shift + PgUp (по страницам). Соответственно, обратная прокрутка осуществляется комбинациями клавиш Shift + Down (прокрутка по строкам) Shift + PgDown (по страницам).
В дальнейшем в этом руководстве подобные примеры будут приводиться не в виде скриншотов, а вот таким образом:
° ║ █ ▓▓▓ ■ ▐▒▒▒▒▒▌ ■ ▒▒▌ ▐▒▒▒▒▒▌ ▐▒▒ ____ ▒▒▌▄▄▄▐▒▒▒▒▒▌▄▄▄▐▒▒ ____ ▒▒▒▒▄▄▒▒▌▓▓▓▐▒▒▒▒▒▌▓▓▓▐▒▒▄▄▒▒▒▒ ▒▒▒▒╦╦▒▒▌▓▓▓█▓╦╦╦▓█▓▓▓▐▒▒╦╦▒▒▒▒[2:10:28][tz@coneforest ~/work]%ls /arch/ dev/ initrd/ media/ noah/ root/ tmp/ bin/ etc/ lib/ misc/ opt/ sbin/ usr/ boot/ home/ lost+found/ mnt/ proc/ sys/ var/[2:10:35][tz@coneforest ~/work]%
[2:10:35][tz@coneforest ~/work]%
и есть уже упомянутое приглашение. Его вид и содержание можно как угодно настроить. В нашем примере приглашение содержит время, в которое оно появилось на экране. Кроме того, из приглашения видно, что мы вводим команды в качестве пользователя tz на компьютере coneforest , и текущей директорией для нас служит ~/work . Подробнее обо всех этих вещах написано в следующих главах.
В тех примерах, где содержание приглашения не важно, мы будем изображать его просто как знак процента:
%ls /
Этот знак не является частью команды, и набирать его не нужно. То, что пользователь вводит, показано наклонным шрифтом.
Командная строка и графический интерфейс
Не обязательно запускать команды только лишь описанным выше способом. Графическая оконная система предоставляет и другие возможности: меню, пиктограммы (иконки) на рабочем столе, клавиатурные сочетания. С каждым пунктом меню или пиктограммой на рабочем столе связана определённая команда, которая запускается при выборе этого пункта меню или при щелчке (возможно, двойном, зависит от настроек) на пиктограмме, при нажатии определённого сочетания клавиш или при определённом мышином жесте.
Однако многие программы в Linux могут запускаться с различными ключами и параметрами, и указание параметров при запуске программы при помощи мышки становится невозможным.
К примеру, если вы желаете запустить веб-броузер так, чтобы в нём сразу открылся документ по определённому адресу, или открыть в офисной программе конкретную электронную таблицу, или посмотреть конкретный видеофайл, то потребуестся на рабочем столе создать ярлык для соответствующего веб-адреса, электронной таблицы, видеофайла, и щёлкать мышью на этот ярлык. Тогда будет запущена программа, которая (в силу настроек) связана с документами того типа, на который ссылается ярлык.
Допустим, что программой, которая назначена для открытия веб-адресов, это Konqueror , но вы по какой-то причине хотите её открыть в Seamonkey . Тогда щёлкаем на ярлык правой кнопкой мыши, и в появившемся меню выбираем Открыть с помощью… , а затем в появившемся диалоге мучительно отыскиваем и выбираем программу Seamonkey .
Такая последовательность действий является единственно возможной для новичков, и хорошо, что имеется такая возможность. Однако для быстрой, профессиональной работы такой подход совершенно не годится. Он требует большого напряжения от пользователя (напряжения зрения, руки, держащей мышку, умственных усилий). То, что хорошо для новичка, становится невыносимым для профессионала.
Излишняя привязанность к мыши становится похожей на привязанность малыша, который учится ходить, к ходункам. Ребёнок, которому давно пора кушать ложечкой, по-прежнему тянется к любимой соске. Выздоровевший человек не может расстаться с костылями.
Между тем мы считаем, что клавиатура является гораздо более гибким инструментом, чем мышка, а язык команд — более универсальным способом управления компьютером.
Операционная система Linux в большей степени, нежели многие другие, приспособлена к профессиональной работе. Даже ввод команд в терминале оказывается не столь утомителен, как можно подумать.
|
![]() |
|
| Предисловие | ![]() |
Удобства при работе с командной строкой |

