Для организации интерфейса пользователя в состав Unix входит командная оболочка, называемая shell. Она выполняет следующие функции:
- организует исполнение программ, проверяя их синтаксис, допустимость ключей и т.д.;
- осуществляет генерацию имен файлов;
- осуществляет переназначение ввода и вывода;
- организует конвейеризацию;
- осуществляет контроль среды окружения;
- является интерпретатором развитого командного языка, позволяющего пользователю создавать сложные сценарии выполнения программ.
Существуют различные версии shell, наиболее популярными из них являются sh (Bourne Shell), bash (Bourne Again Shell), csh (C-Shell), ksh (Korn Shell). Мы будем рассматривать bash, обычно загружаемую ОС по умолчанию.
Командная строка имеет следующий вид:
$ команда ключи аргументы
Символ «$» является приглашением командной оболочки, ему могут предшествовать другие символы, отмечающие, например, имя текущего каталога, имя компьютера, имя пользователя или имя ОС.
Командная оболочка обрабатывает команды трех типов. Во-первых, в качестве имени команды может быть указано имя исполняемого файла в объектном коде, полученного в результате компиляции исходного текста программы (например, на языке С). Во-вторых, именем команды может быть имя командного файла, содержащего набор инструкций, обрабатываемых командной оболочкой (такие файлы называются сценариями или скриптами). В-третьих, команда может быть внутренней командой языка shell.
|
|
Внутренние команды языка shell представляют собой программы, находящиеся в каталоге /usr/bin. Большинство из них имеют следующий формат:
имя_команды ключи аргументыКлючи служат для модификации режимов работы команды и представляют собой наборы определенных символов, которым предшествует символ «-» (короткие имена ключей) или комбинация «--» (длинные имена ключей). Чаще всего в качестве короткого имени ключа используется начальная буква действия, которое определяется данным ключом, например ключ -u – это сокращение от user.
Свойство ключа быть, с одной стороны, предельно коротким, а с другой стороны – информативным, называется аббревиативностью. Не только ключи, но и имена наиболее распространенных команд Unix обладают этим свойством. Аббревиативность ключей трудно соблюсти, когда их у команды слишком много. Некоторые буквы латинского алфавита (например, s или o) используются очень часто, и могли бы служить сокращением сразу нескольких команд. На такой случай существует другой, полнословныйформат: ключ начинается на двазнака «-», за которыми следует полное имя ключа. Таков, например, ключ --wildcards.
А некоторые ключи могут обозначаться как коротким, так и полным именем, например ключ с коротким именем -h имеет аналог с длинным именем --help.
|
|
Аргументы команды (или параметры команды) указывают на объекты, над которыми выполняются операции. Аргументами команд в большинстве случаев являются имена файлов. Например, приведенная ниже команда означает: «Выполнить команду ls (отображение информации о файле) с ключом -l (подробная информация) для файла а.out»:
ls -l а.outЕсли необходимо использовать два и более однобуквенных ключа, большинство команд позволяют объединять их. Например, две приведенные ниже команды идентичны:
ls -lg a.out1s -l -g a.outНекоторые ключи требуют наличия параметра. В этом случае параметр дается после ключа, в этом случае последний нельзя объединять с другим ключом.
В одной строке может содержаться несколько команд. Они отделяются друг от друга символом «;».
Одну команду можно разместить на нескольких экранных строках. Для этого перед нажатием клавиши [Enter] необходимо поставить символ «\».
Командный процессор shell ищет имена команд в указанном наборе каталогов, который можно изменить по желанию пользователя. Список этих каталогов является значением переменной среды PATH.