Андрей Михайлович Васильев
2020
После ввода команды в эмулятора терминала и нажатия клавиши Enter строка передаётся в командный интерпретатор
Общая структура простого запроса интерпретатору
команда --аргумент1 аргумент2 аргумент3
Команда определяет действие, которое вы хотите выполнить, а аргументы уточняют поведение
cd меняет рабочий каталог, аргумент говорит куда надо его изменитьtouch создаёт файлы, аргументы указывают какие файлы надо создать и с какими опциямиНа месте команды могут располагаться следующие элементы:
builtin)function)alias)file)Если команда сформулирована корректно, тогда она будет выполнена вне зависимости от её типа
В BASH для определения типа команд можно воспользоваться встроенной командой type
Типичный пример использования type:
$ type cd
cd — это встроенная команда bash
$ type mkdir
mkdir является /usr/bin/mkdir
builtinДанные команды направлены для управления состоянием интерпретатора, а не на прямое взаимодействие с внешним окружением
Перечислим знакомые нам встроенные команды:
cd — изменение рабочего каталога интерпретатораexit — завершение работы интерпретатораtype — определение типа командыДля получения информации о функционировании встроенной команды используется команда help:
$ help cd
$ help cd
cd: cd [-L|[-P [-e]] [-@]] [каталог]
    Change the shell working directory.
Первая строка кратко описывает какие аргументы можно передавать команде
Аргументы описывают детали действия, которое мы хотим выполнить над приложением
[-@] указывает, что аргумент -@ является опциональным: его можно указывать, а можно и не указывать| указывает на то, что есть 2 взаимоисключающих вариантаПорядок аргументов может быть важен! Нельзя указать каталог до других аргументов
У команды 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
Много классических приложений предоставляют встроенную помощь по использованию с помощью аргумента --help
$ mkdir --help
Использование: mkdir [КЛЮЧ]… КАТАЛОГ…
Создает КАТАЛОГ(и), если он ещё не существует.
Аргументы, обязательные для длинных ключей, обязательны
и для коротких.
  -m, --mode=РЕЖИМ   установить права доступа к файлу
                     (как в chmod), а не a=rwx - umask
  -p, --parents      не выдавать ошибку, если существует,
                     создавать родительские каталоги,
                     если необходимо
  -v, --verbose      печатать сообщение о каждом созданном
                     каталоге
Не все приложения поддерживают данный аргумент
Много приложений предоставляют информацию о своём использовании в формате руководства в системе man
Для получения информации по программе program
man program
Если руководство будет найдено, то оно будет отображено с помощью приложения для просмотра текстовых документов less
lessПриложение less является интерактивным просмотрщиком текстовых документов
less data.txt
В отличие от предыдущих оно не завершает свою работу сразу после запуска, а предоставляет интерактивный интерфейс
Поддерживаемые клавиши:
Page UP, b подняться на страницу вверхPage Down, space, d опуститься на страницу внизСтрелка ввех подняться на одну строкуСтрелка вниз опуститься на одну строкуG перейти к концу текстового файла1G или g перейти к началу файла/СТРОКА начать поиск вниз до следующего вхождения строки СТРОКАn повторить поиск и переходh показать поискq завершить работу less$ man cp
CP(1)                                       User Commands
NAME
       cp - copy files and directories
SYNOPSIS
       cp [OPTION]... [-T] SOURCE DEST
       cp [OPTION]... SOURCE... DIRECTORY
       cp [OPTION]... -t DIRECTORY SOURCE...
DESCRIPTION
       Copy SOURCE to DEST, or multiple SOURCE(s) to
       DIRECTORY.
       -a, --archive
              same as -dR --preserve=all
man man
СИНТАКСИС
       man [параметры man] [[раздел] страница ...] ...
Просмотр информации о приложении passwd
$ man 1 passwd
passwd(1)                             Пользовательские команды
НАЗВАНИЕ
       passwd - изменяет пароль пользователя
Просмотр информации о файле passwd
$ man 5 passwd
passwd(5)                                  Форматы файлов
НАЗВАНИЕ
       passwd - файл паролей
Существует множество страниц с разными названиями, которые могут не совпадать с названием приложения
Для поиска руководств можно воспользоваться:
apropos: apropos passwdman: man -k passwdchpasswd (8)         - обновляет пароли в пакетном режиме
gpasswd (1)          - administer /etc/group and /etc/gshadow
passwd (1)           - изменяет пароль пользователя
Множество приложений помимо установки могут поставлять документацию в любом удобном для них формате. Обычно документация располагается в каталоге /usr/share/doc/, в подкаталоге с именем приложения.
Для простых приложений там может располагаться текстовый файл README, который можно посмотреть с помощью less
Некоторые файлы могут иметь расширение .gz, что обозначает что они заархивированы. less тоже может их открыть и просмотреть, если они текстовые
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
Переменная окружения PATH определяет список директорий, в котором Bash ищет исполняемые файлы, которые мы можем вызвать
Для просмотра текущего значения переменной PATH можно воспользоваться
$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/games
Пути в списке разделены двоеточием
Если в каталогах /usr/bin и /bin есть исполняемые файлы с одинаковыми именами, то будет запущен файл из /usr/bin, так как в списке он идёт раньше /bin
Для определения абсолютного пути к исполняемому файлу используйте which
$ man which
NAME
       which - locate a command
SYNOPSIS
       which [-a] filename ...
Троеточие обозначает, что команде можно передать несколько команд одновременно
$ which mkdir which
/usr/bin/mkdir
/usr/bin/which