Перейти к основному содержанию
Рецепты Linux

Main navigation

  • Основы
  • Система
  • Команды
  • Программы
  • Дистро
  • Интерфейсы
  • Устройства
  • Доки
User account menu
  • Войти

Строка навигации

  1. Главная
  2. Linux: Введение
  3. Терминал и командная строка

Ключи

Работая в системе и изучая руководства, Мефодий заметил, что параметры команд можно отнести к двум различным категориям. Некоторые параметры имеют собственный смысл: это имена файлов, названия разделов и объектов в man и info, числа и т. п. Другие параметры собственного смысла не имеют, их значение можно истолковать, лишь зная, к какой команде они относятся. Например, параметр «-a» можно передать не только команде man, но и команде who, и команде last, при этом значить для них он будет разное. Такого рода параметры называются модификаторами выполнения или ключами (options).

[methody@localhost methody]$ date
Вск Сен 19 23:01:17 MSD 2004
[methody@localhost methody]$ date -u
Вск Сен 19 19:01:19 UTC 2004

Пример 13. Команда date с ключом

Для решения разных задач одни и те же действия необходимо выполнять слегка по-разному. Например, для синхронизации работ в разных точках земного шара лучше использовать единое для всех время (по Гринвичу), а для организации собственного рабочего дня — местное время (с учётом сдвига по часовому поясу и разницы зимнего и летнего времени). И то, и другое время показывает команда date, только для работы по Гринвичу ей нужен дополнительный параметр-ключ «-u» (он же «--universal»).

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

Для формата ключей нет жёсткого стандарта, однако существуют договорённости, нарушать которые в наше время уже неприлично.

Во-первых, если параметр начинается на «-», это — однобуквенный ключ. За «-», как правило, следует один символ, чаще всего — буква, обозначающая действие или свойство, которое этот ключ придаёт команде. Так проще отличать ключи от других параметров — и пользователю при наборе командной строки, и программисту, автору команды.

Во-вторых, желательно, чтобы имя ключа было значащим — как правило, это первая буква названия пресловутого действия или свойства. Например, ключ «-a» в man и who происходит от слова «All» (всё), и изменяет работу этих команд так, что они начинают показывать информацию, о которой они обычно умалчивают. А в командах cal и who смысл ключа «-m» — разный:

[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

Пример 14. Использование ключа «-m» в разных командах

Для who ключ «-m» означает «Me», то есть «Я», и в результате who работает похоже на whoami.

Кстати, с незапамятных времён who поддерживает один нестандартный набор параметров: who am i делает то же, что и who -m.

А для 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  -----------------------------------------------
 . . .

Пример 15. Использование info -o

Здесь info запустилась не в качестве интерактивной программы, а как обработчик info-документа. Результат работы — текст узла info -> Expert info -> Cross-refs -> Help-Cross, программа поместила в файл text.

Странное слово «нода» Мефодий решил оставить на совести неизвестного переводчика сообщений info.

А программа cat вывела содержимое этого файла на терминал, пронумеровав все строки (по просьбе ключа «-n», «number»).

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

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

Точнее, на стандартный вывод, см. лекцию Работа с текстовыми данными.

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

[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

Пример 16. Параметр-не ключ, начинающийся на «-»

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

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

Аббревиативность ключей трудно соблюсти, когда их у команды слишком много. Некоторые буквы латинского алфавита (например, «s» или «o») используются очень часто, и могли бы служить сокращением сразу нескольких команд, а некоторые (например, «z») — редко, под них и название-то осмысленное трудно придумать. На такой случай существует другой, полнословный формат: ключ начинается на два знака «-», за которыми следует полное имя обозначаемой им сущности. Таков, например, ключ «--help» (аналог «-h»):

[methody@localhost methody]$ head --help
Использование: head [КЛЮЧ]... [ФАЙЛ]...
Print the first 10 lines of each FILE to standard output.
With more than one FILE, precede each with a header giving the file name.
With no FILE, or when FILE is -, read standard input.

Аргументы, обязательные для длинных ключей, обязательны и для коротких.
  -c, --bytes=[-]N         print the first N bytes of each file;
                             with the leading `-', print all but the last
                             N bytes of each file
  -n, --lines=[-]N         print the first N lines instead of the first 10;
                             with the leading `-', print all but the last
                             N lines of each file
  -q, --quiet, --silent   не печатать заголовки с именами файлов
  -v, --verbose           всегда печатать заголовки с именами файлов
      --help     показать эту справку и выйти
      --version  показать информацию о версии и выйти


N may have a multiplier suffix: b 512, k 1024, m 1024*1024.

Об ошибках сообщайте по адресу <bug-coreutils@gnu.org>.

Пример 17. Ключ–help

Мефодий сделал то, о чём просила его утилита head. Видно, что некоторые ключи head имеют и однобуквенный, и полнословный формат, а некоторые — только полнословный. Так обычно и бывает: часто используемые ключи имеют аббревиатуру, а редкие — нет. Значения параметрических полнословных ключей принято передавать не следующим параметром командной строки, а с помощью конструкции «=значение» непосредственно после ключа.

Перекрёстные ссылки книги для Ключи

  • Подсистема помощи
  • Вверх
  • Интерпретатор командной строки (shell)

Book navigation

  • Предисловие
  • Сеанс работы в Linux
  • Терминал и командная строка
    • Терминал
    • Командная строка
    • Подсистема помощи
    • Ключи
    • Интерпретатор командной строки (shell)
  • Структура файловой системы
  • Работа с файловой системой
  • Доступ процессов к файлам и каталогам
  • Права доступа
  • Работа с текстовыми данными
  • Возможности командной оболочки
  • Текстовые редакторы
  • Этапы загрузки системы
  • Работа с внешними устройствами
  • Конфигурационные файлы
  • Управление пакетами
  • Сеть TCP/IP в Linux
  • Сетевые и серверные возможности
  • Графический интерфейс (X11)
  • Прикладные программы
  • Политика свободного лицензирования

Последние материалы

  • Эмулятор терминала Terminator
    3 hours 46 minutes ago
  • Приложение scanimage
    6 days 1 hour ago
  • Утилита sensors
    1 week 2 days ago
  • Сканер Rkhunter
    2 weeks 3 days ago
  • Программа resize2fs
    3 weeks 2 days ago
RSS feed

Secondary menu

  • О проекте

© 2008–2025 Олег Меньшенин mensh@yandex.ru