Типы команд и чтение документации #

Васильев Андрей Михайлович, 2024

Версии презентации

Разные типы команд #

В первой части запроса к интерпретатору находится команда, которую можно отнести к одной из следующих категорий

  • Внутренние команды интерпретатора
  • Внешний по отношению к интерпретатору исполняемый файл

diagram

  • Внутренние команды интерпретатора зачастую изменяют его внутреннее состояние и не изменяют ничего вне своего процесса
  • Запуск внешнего приложения зачастую не изменяет внутреннее состояние интерпретатора

Определение типа команд #

В Bash для определения типа команд можно воспользоваться встроенной командой type

Типичные примеры использования type:

$ type cd
cd — это встроенная команда bash
$ type mkdir
mkdir является /bin/mkdir
$ type ls
ls — это псевдонимом для «ls --color=auto»

Встроенные команды Bash #

Внутри интерпретатора Bash можно выделить следующие 3 категории доступных команд

  1. Встроенные команды интерпретатора, builtin
  2. Функции интерпретатора, function
  3. Псевдонимы интерпретатора, alias
  4. Ключевые слова интерпретатора, keyword

Встроенные команды интерпретатора builtin #

Данные команды направлены для управления состоянием интерпретатора, а не на прямое взаимодействие с внешним окружением

Перечислим знакомые нам встроенные команды:

  • cd — изменение рабочего каталога интерпретатора
  • exit — завершение работы интерпретатора
  • type — определение типа команды

Получение помощи по встроенной команде #

Для получения информации о функционировании встроенной команды используется встроенная команда help:

$ help cd
...
$ help help
...

Разбор описания помощи для встроенных команд #

$ help cd
cd: cd [-L|[-P [-e]] [-@]] [каталог]
    Change the shell working directory.

Первая строка кратко описывает какие аргументы можно передавать команде

  • [-@] указывает, что аргумент -@ является опциональным: его можно указывать, а можно и не указывать
  • | указывает на то, что есть 2 взаимоисключающих варианта

Порядок аргументов зачастую важен! Например для команды cd нельзя указать каталог до других аргументов

У команды cd нет ни одного обязательного аргумента

Разбор описания помощи. Продолжение #

После текстового описания команды идёт блок с описанием каждого поддерживаемого аргумента

Options:
 -L	force symbolic links to be followed: resolve symbolic
    links in DIR after processing instances of `..'
 -P	use the physical directory structure without following
    symbolic links: resolve symbolic links in DIR before
    processing instances of `..'
 -e	if the -P option is supplied, and the current working
    directory cannot be determined successfully, exit with
    a non-zero status

Работа с псевдонимами alias #

При долгой работе с командным интерфейсом иногда хочется выполнять ряд действий быстрее. Для решения этой задачи можно ввести псевдоним команды

Для управления псевдонимами используется команда alias

$ type alias
alias — это встроенная команда bash

Для отображения списка псевдонимов вызовите команду без аргументов

Для определения псевдонимов надо воспользоваться

alias: alias [-p] [имя[=значение] ... ]

    Если не указать аргументы, alias выводит список псевдонимов
    в виде «alias имя=значение» на стандартный вывод.

Определение и использование псевдонимов #

Например нам необходимо часто просматривать права доступа к файлам и вызывать ls -l. Мы хотим сэкономить время на набор команды, поэтому добавляем псевдоним ll:

$ alias ll='ls -l'
$ alias
alias ll='ls -l'
alias ls='ls --color=auto'
$ ll
итого 20
drwx------  3 root   root   60 сен 12 07:41 alsa
drwxr-xr-x  2 avahi  avahi  80 сен 12 07:41 avahi-daemon
...

Время жизни псевдонима #

Определение псевдонима — действие по настройке интерпретатора Bash, как и изменение текущего рабочего каталога

При завершении сессии, при старте новой сессии состояние сбрасывается на начальное и все команды, которые были определены с помощью alias, будут недоступны

Чтобы эти псевдонимы были доступны всегда, их надо описать внутри конфигурационного файла bash, который считывается при каждом старте интерпретатора:

~/.bashrc

Удаление псевдонима #

Для удаления псевдонима используется команда unalias

Получение помощи по функциям и псевдонимам #

Функции и псевдонимы не предоставляют средств для получения документации по своей работе

Единственный способ — это прочитать исходный их исходный код

Несколько выводов:

  • при написании функций на любом языке программирования стоит документировать её поведение
  • псевдонимы хороши для каждого конкретного человека или команды, в которой каждый работник знаком с ними и готов дать консультацию по использованию