Как найти справку к команде в bash если команда (файл) с одним названием мб в разных директориях
(у меня Дебиан, но не важно) Проблема: оказывается, что команда с одним и тем же названием может лежать (если она файл) в разных местах (+быть встроенной в оболочку), т.е. фактически это разные команды с одним названием. У них может отличаться как минимум набор параметров по умолчанию (это преподаватель показывал, это не выдумки), а мб и серьезнее всё. К каждой команде д.б. man. Как можно быть уверенным, что при вызове man <команда> показывается man именно к тому варианту команды, который я использую?
Вот whereis <команда> показывает путь к файлу и путь к man-у
Но, например,
whereis pwd
даёт только:
pwd: /usr/bin/pwd /usr/share/man/man1/pwd.1.gz
а если посмотреть так:
type -a pwd ,
то видим:
pwd is a shell builtin - как узнать, где man для этого pwd?
pwd is /usr/bin/pwd - ок, для этого whereis знает, где man
pwd is /bin/pwd - и как узнать, где man для этого pwd?
Ответы (3 шт):
как узнать, где man для этого pwd?
Исполняемый фай возникает на Вашем компе не сам по себе. Если Вы его установили сами - то Вы и должны знать, куда положили его man.
Но, как правило, все программы в линухе устанавливаются через пакетный менеджер. У Вас debian, в котором пакетным менеджером должен быть apt.
Сначала определяем, к какому пакету относится этот исполнимый файл. Например:
$ apt-file search /usr/bin/pwd
После этого смотрим детальную информацию о пакете:
$ apt-cache show <пакет>
К сожалению, у меня сейчас нет под рукой debian, проверить в деталях я не могу, но (думаю) основную идею вы поняли. Для любого дистрибутива эта проблема решается в два шага:
- По полному имени файла определяем имя пакета, из которого он установлен
- По имени пакета определяем полный список файлов, которые входят в этот пакет.
А в списке файлов уже находит файлы man.
man не дает справок по командам. man - это просто структурированный справочник, который выдаёт сохранённые в него страницы. Все страницы манов есть в директории /usr/share/man. Абсолютно не обязательно в манах должна быть информация по нужной вам команде. Помимо команд, там есть, например, описания файлов конфигурации.
Все страницы манов разделены по разделам:
1. Основные команды.
2. Системные вызовы.
3. Библиотечные функции, включая стандартную библиотеку языка C.
4. Специальные файлы (обычно устройства из /dev) и драйвера.
5. Форматы файлов и соглашения.
6. Игры и скринсейверы.
7. Разное.
8. Команды системного администрирования и демоны.
Если встречаете ссылку на страницу мана, обычно в круглых скобочках указывают раздел мана, т.к. в разных разделах может быть ман с одинаковым именем. Например, страница man есть в трех разделах: man(1) man(5) и man(7).
/bin - в современных дистрибутивах, как правило, это ссылка на /usr/bin. Так что /bin/pwd и /usr/bin/pwd - это один и тот же файл.
Помимо man есть еще tldr, cheat, apropos, info, bropages, kommandr, yelp.
pwd is a shell builtin - как узнать, где man для этого pwd?
для встроенных в программу bash команд нет отдельных man-страниц. см. доп. информацию о встроенной команде pwd в:
$ man bash
и
$ help pwd
(help — это тоже встроненная в программу bash команда)
pwd is /usr/bin/pwd - ок, для этого whereis знает, где man
pwd is /bin/pwd - и как узнать, где man для этого pwd?
а это отголоски новомодной фишечки, в результате которой, в частности, нынче /bin — это символическая ссылка на /usr/bin.
т.е. /usr/bin/pwd и /bin/pwd — это у вас в системе один и тот же исполняемый файл. ну и man-страница к этой программе, естественно, одна:
$ man pwd