Внешние приложения: документация, запуск #

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

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

Получение помощи по приложениям #

$ type touch
touch является /bin/touch

Хорошие консольные приложения предоставляют встроенную помощь по использованию, которую можно посмотреть с помощью аргумента --help

$ mkdir --help
Использование: mkdir [КЛЮЧ]… КАТАЛОГ…
Создает КАТАЛОГ(и), если он ещё не существует.

Аргументы, обязательные для длинных ключей, обязательны
и для коротких.
  -m, --mode=РЕЖИМ   установить права доступа к файлу
                     (как в chmod), а не a=rwx - umask
  -p, --parents      не выдавать ошибку, если существует,
                     создавать родительские каталоги,
                     если необходимо
  -v, --verbose      печатать сообщение о каждом созданном
                     каталоге

Не все приложения поддерживают данный аргумент, но большинство хороших поддерживают

Получение информации из руководства #

Много приложений предоставляют информацию о своём использовании в формате руководства в системе man

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

man program

Если руководство будет найдено, то оно будет отображено с помощью приложения для просмотра текстовых документов less

diagram

Задача просмотра текста #

При появлении текстовых терминалов встала задача: просмотреть большой текстовый документ при наличии всего 24 строк в выводе

Решение: использовать приложение-пейджер для постраничного просмотра текстовых файлов

  1. Пользователь открывает текстовый файл для чтения
  2. Приложение показывает первую страницу, 25 строк
  3. Пользователь нажимает пробел
  4. Приложение показывает вторую страницу

Классическая реализация приложения — more

Интерактивные приложения взаимодействуют с эмулятором терминала, чтобы

  • Перехватывать нажатия клавиш
  • Отображать информацию в произвольных местах эмулятора

Интерактивное приложение less #

less — интерактивное приложение для просмотра текстов, less is more

less data.txt

Приложение после запуска продолжает работать, предоставляя возможности по навигации с текстом

Поддерживаемые горячие клавиши:

  • Page UP, b подняться на страницу вверх
  • Page Down, space, d опуститься на страницу вниз
  • Стрелка ввех подняться на одну строку
  • Стрелка вниз опуститься на одну строку
  • G перейти к концу текстового файла
  • 1G или g перейти к началу файла
  • /СТРОКА начать поиск вниз до следующего вхождения строки СТРОКА
  • n повторить поиск и переход
  • h показать поиск
  • q завершить работу less

Разбор структуры man-страниц #

Посмотрим на руководство по приложению cp

$ 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-руководств #

  1. Исполняемые программы или команды оболочки (shell)
  2. Системные вызовы (функции, предоставляемые ядром)
  3. Библиотечные вызовы (функции, предоставляемые программными библиотеками)
  4. Специальные файлы (обычно находящиеся в каталоге /dev)
  5. Форматы файлов и соглашения, например о /etc/passwd
  6. Игры
  7. Разное (включает пакеты макросов и соглашения), например man(7), groff(7)
  8. Команды администрирования системы (обычно, запускаемые только суперпользователем)
  9. Процедуры ядра [нестандартный раздел]

Просмотр руководства из нужного раздела #

man man
СИНТАКСИС
       man [параметры man] [[раздел] страница ...] ...

Просмотр информации об использовании приложения passwd

$ man 1 passwd
passwd(1)                             Пользовательские команды
НАЗВАНИЕ
       passwd - изменяет пароль пользователя

Просмотр информации о конфигурационном файле passwd

$ man 5 passwd
passwd(5)                                  Форматы файлов
НАЗВАНИЕ
       passwd - файл паролей

Поиск информации по man-страницам #

Существует множество страниц с разными названиями, которые могут не совпадать с названием приложения

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

  • приложением apropos: apropos passwd
  • приложением man: man -k passwd
chpasswd (8)         - обновляет пароли в пакетном режиме
gpasswd (1)          - administer /etc/group and /etc/gshadow
passwd (1)           - изменяет пароль пользователя

Руководства в файловой системе #

Руководства справочной системы man находятся в файловой системе

Каталоги, в которых происходит их поиск, описаны в конфигурационном файле /etc/man_db.conf

MANDATORY_MANPATH                       /usr/man
MANDATORY_MANPATH                       /usr/share/man
MANDATORY_MANPATH                       /usr/local/share/man

Дополнительная документация #

Множество приложений помимо установки могут поставлять документацию в любом удобном для них формате. Обычно документация располагается в каталоге /usr/share/doc/, в подкаталоге с именем приложения

Для простых приложений там может располагаться текстовый файл README, который можно посмотреть с помощью less

Некоторые файлы могут иметь расширение .gz, что обозначает что они заархивированы. less тоже может их открыть и просмотреть, если они текстовые

Запуск приложений #

Если пользователь хочет запустить приложение, то существуют 2 способа:

  • Указание пути к исполняемому файлу на файловой системе
  • Указание названия исполняемого файла для поиска по списку директорий

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

  • /usr/bin/mkdir — абсолютный путь, первый символ /
  • ./app.py — относительный путь, первый символ .

Вы не можете использовать относительные пути без указания локального имени каталога

Если не задан символ / или ., то будет происходить поиск по директориям

Где Bash ищет исполняемые файлы #

Переменная окружения PATH определяет список директорий, в котором Bash ищет исполняемые файлы, которые мы можем вызвать

Для просмотра текущего значения переменной PATH можно воспользоваться

$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/games

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

Поиск исполняемых файлов происходит в порядке указания каталогов:

  • /usr/local/bin
  • /usr/bin
  • /bin
  • /usr/games

Перекрытие одних исполняемых файлов другими #

Если в каталогах /usr/bin и /bin есть исполняемые файлы с одинаковыми именами, то будет запущен файл из /usr/bin, так как в списке он идёт раньше /bin

  • /usr/bin/application
  • /bin/application

Если пользователь запустит приложение application в командном интерфейсе, то будет запущен исполняемый файл /usr/bin/application, а не /bin/application

Определение пути к исполняемому файлу #

Для определения абсолютного пути к исполняемому файлу используйте which

$ man which
NAME
       which - locate a command
SYNOPSIS
       which [-a] filename ...

Троеточие обозначает, что команде можно передать несколько названий приложений одновременно

$ which mkdir which
/usr/bin/mkdir
/usr/bin/which