Материал предоставлен https://it.rfei.ru

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

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

[ivan@localhost ivan]$ who -m
 ivan tty1         Sep 20 13:56 (localhost)
[ivan@localhost ivan]$ 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” в разных командах

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

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

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

[ivan@localhost ivan]$ info info "Expert info" Cross-refs Help-Cross -o text
info: Запись ноды (info.info.bz2)Help-Cross...
info: Завершено.
[ivan@localhost ivan]$ 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

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

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

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

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

Пример 2.16. Параметр-не ключ, начинающийся на “-”

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

КлючиПолнословные ключи