Операционная система Linux





Команды и утилиты


[methody@localhost methody]$ apropos s . . . (четыре с половиной тысячи строк!)

Пример 2.18. Бессмысленная команда (html, txt)

Одного неудачного запуска apropos Мефодию было достаточно для того, чтобы понять: команд в Linux очень много. Ему пришло в голову, что никакая программа - пусть даже и оболочка - не может самостоятельно разбираться во всех задокументированных командах. Кроме того, Гуревич называл большинство команд утилитами, то есть полезными программами. Стало быть, командный интерпретатор не обязан уметь выполнять все, что вводит пользователь. Ему достаточно разобрать командную строку, выделить из нее команду и параметры, а затем запустить утилиту - программу, имя которой совпадает с именем команды.

В действительности собственных команд в командном интерпретаторе немного. В основном это операторы языка программирования и прочие средства управления самим интерпретатором. Все знакомые Мефодию команды, даже echo, существуют в Linux в виде отдельных утилит. shell занимается только тем, что подготавливает набор параметров в командной строке (например, раскрывая шаблоны), запускает программы и обрабатывает результаты их работы:

[methody@localhost methody]$ type info info is /usr/bin/info [methody@localhost methody]$ type echo echo is a shell builtin [methody@localhost methody]$ type -a echo echo is a shell builtin echo is /bin/echo [methody@localhost methody]$ type -a -t echo builtin file [methody@localhost methody]$ type -a -t date file [methody@localhost methody]$ type -at cat file

Пример 2.19. Определение типа команды (html, txt)

В bash тип команды можно определить с помощью команды type. Собственные команды bash называются builtin (встроенная команда), а для утилит выводится путь, содержащий название каталога, в котором лежит файл с соответствующей программой, и имя этой программы. Некоторые - самые нужные - команды встроены в bash, даже несмотря на то, что они имеются в виде утилит (например, echo). Работает встроенная команда так же, но так как времени на ее выполнение уходит существенно меньше, командный интерпретатор выберет именно ее, если будет такая возможность. Ключ "-a" ("all", конечно), заставляет type вывести все возможные варианты интерпретации команды, а ключ "-t" - вывести тип команды вместо пути.

По совету Гуревича Мефодий сгруппировал ключи, написав "-at" вместо "-a -t". Многие утилиты позволяют уменьшать длину командной строки подобным образом. Если встречается параметрический ключ, он должен быть последним в группе, а его значение - следовать, как и полагается, после. Группировать можно только однобуквенные ключи.



Содержание раздела


69945074