Внешние приложения: документация, запуск #
Васильев Андрей Михайлович, 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
Задача просмотра текста #
При появлении текстовых терминалов встала задача: просмотреть большой текстовый документ при наличии всего 24 строк в выводе
Решение: использовать приложение-пейджер для постраничного просмотра текстовых файлов
- Пользователь открывает текстовый файл для чтения
 - Приложение показывает первую страницу, 25 строк
 - Пользователь нажимает пробел
 - Приложение показывает вторую страницу
 
Классическая реализация приложения — 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 cpCP(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-руководств #
- Исполняемые программы или команды оболочки (shell)
 - Системные вызовы (функции, предоставляемые ядром)
 - Библиотечные вызовы (функции, предоставляемые программными библиотеками)
 - Специальные файлы (обычно находящиеся в каталоге /dev)
 - Форматы файлов и соглашения, например о /etc/passwd
 - Игры
 - Разное (включает пакеты макросов и соглашения), например man(7), groff(7)
 - Команды администрирования системы (обычно, запускаемые только суперпользователем)
 - Процедуры ядра [нестандартный раздел]
 
Просмотр руководства из нужного раздела #
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