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





Однобуквенные ключи


Для формата ключей нет жесткого стандарта, однако существуют договоренности, нарушать которые в наше время уже неприлично. Во-первых, если параметр начинается на "-", это - однобуквенный ключ. За "-", как правило, следует один символ, чаще всего - буква, обозначающая действие или свойство, которое этот ключ придает команде. Так проще отличать ключи от других параметров - и пользователю при наборе командной строки, и программисту, автору команды:

[methody@localhost methody]$ who -m methody tty1 Sep 20 13:56 (localhost) [methody@localhost methody]$ cal -m Сентября 2004 Пн Вт Ср Чт Пт Сб Вс 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30

Пример 2.14. Использование ключа "-m" в разных командах (html, txt)

Для who ключ "-m" означает "Me", то есть "Я", и в результате who работает похоже на whoami1). А для cal ключ "-m" - это команда выдать календарь, считая первым днем понедельник ("Monday"), как это принято в России.

Свойство ключа быть, с одной стороны, предельно коротким, а с другой стороны - информативным, называется аббревиативностью. Не только ключи, но и имена наиболее распространенных команд Linux обладают этим свойством.

В-третьих, иногда ключ изменяет поведение команды таким образом, что меняется и толкование параметра, следующего в командной строке за этим ключом. Выглядит это так, будто ключ сам получает параметр, поэтому ключи такого вида называются параметрическими. Как правило, их параметры - имена файлов различного применения, числовые характеристики и прочие значения, которые нужно передать команде:

[methody@localhost methody]$ info info "Expert info" Cross-refs Help-Cross -o text info: Запись ноды (info.info.bz2)Help-Cross... info: Завершено. [methody@localhost methody]$ cat text -n 1 File: info.info, Node: Help-Cross, Up: Cross-refs 2 3 The node reached by the cross reference in Info 4 ------------------------------------------------ . . .


Пример 2.15. Использование info -o (html, txt)

Здесь info запустилась не в качестве интерактивной программы, а как обработчик info-документа. Результат работы - текст узла info -> Expert info -> Cross-refs -> Help-Cross2), программа поместила в файл text. А программа cat вывела содержимое этого файла на терминал, пронумеровав все строки (по просьбе ключа "-n", "number").

Теперь стало более или менее понятно, что означают неудобочитаемые строки в поле SYNOPSIS руководства. Например [-smjy13] из руководства по cal (5) говорит о том, что команду можно запускать с необязательными ключами "-s", "-m", "-j", "-y", "-1" и "-3".

В-четвертых, есть некоторые менее жесткие, но популярные договоренности о значении

ключей. Ключ "-h" ("Help") обычно (но, увы, не всегда) заставляет команды выдать краткую справку (нечто похожее на SYNOPSIS, иногда с короткими пояснениями). Если указать "-" вместо имени выходного файла в соответствующем параметрическом ключе (нередко это ключ "-o"), вывод будет производиться на терминал3). Наконец, бывает необходимо передать команде параметр, а не ключ, начинающийся с "-". Для этого нужно использовать ключ "--":

[methody@localhost methody]$ info -o -filename-with- info: Запись ноды (dir)Top... info: Завершено. [methody@localhost methody]$ head -1 -filename-with- head: invalid option -- f Попробуйте `head --help' для получения более подробного описания. [methody@localhost methody]$ head -1 -- -filename-with- File: dir Node: Top This is the top of the INFO tree

Пример 2.16. Параметр-не ключ, начинающийся на "-" (html, txt)

Здесь Мефодий сначала создал файл -filename-with-, а потом пытался посмотреть его первую строку (команда head -количество_строк имя_файла выводит первые количество_строк из указанного файла). Ключ "--" (первый "-" - признак ключа, второй - сам ключ) обычно запрещает команде интерпретировать все последующие параметры командной строки как ключи, независимо от того, начинаются они на "-" или нет. Только после "--" head согласилась с тем, что -filename-with- - это имя файла.


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


69945074