Есть ли инструмент для подведения итогов, что делают все команды?

8

Итак, я понимаю, что есть manстраницы для получения документации, когда Интернет недоступен или когда вам нужны расширенные возможности, но что если я не в сети и даже не знаю, какой инструмент мне нужен для работы? Есть ли команда, которая позволяет мне видеть каждую программу / команду и краткое описание?

OneChillDude
источник

Ответы:

4

Вы можете использовать встроенную в Bash (1) compgen

  • compgen -c перечислит все команды, которые вы могли бы выполнить.
  • compgen -a перечислит все псевдонимы, которые вы могли бы запустить.
  • compgen -b перечислит все встроенные модули, которые вы можете запустить.
  • compgen -k перечислит все ключевые слова, которые вы могли бы запустить.
  • compgen -A function перечислит все функции, которые вы могли бы запустить.
  • compgen -A function -abck перечислю все вышеперечисленное за один раз.

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

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

apropos
whatis
less
groff

Ссылки

https://stackoverflow.com/a/949006/1742825

Рамеш
источник
Конечно, это не обязательно скажет вам, принесет ли выполнение этих команд что-нибудь полезное . Взяв пример с отключенными сетями, я полагаю, pingчто он по-прежнему будет указан как исполняемый, но это не принесет вам пользы. Кроме того, разве это не основано на текущих данных пользователя $PATH, а это означает, что если команда не находится в одном из каталогов, названных в качестве пути поиска, она никогда не будет отображаться?
CVn
apropos -s1кажется лучшим ответом, потому что он включает в себя однострочное описание того, что делает каждая команда. Этот ответ дает список псевдонимов, функций и т. Д., Но без объяснения их, он имеет ограниченное использование, IMO.
user1404316
9

В целом: нет, некоторые программы поставляются без документации.

Тем не менее, aproposможет быть, что вам нужно.

Например apropos ssh, перечислю man-страницы, связанные с ssh, в моем случае:

authorized_keys (5)  - OpenSSH SSH daemon
git-shell (1)        - Restricted login shell for Git-only SSH access
rlogin (1)           - OpenSSH SSH client (remote login program)
rsh (1)              - OpenSSH SSH client (remote login program)
slogin (1)           - OpenSSH SSH client (remote login program)
ssh (1)              - OpenSSH SSH client (remote login program)
ssh-add (1)          - adds private key identities to the authentication agent
ssh-agent (1)        - authentication agent
ssh-argv0 (1)        - replaces the old ssh command-name as hostname     handling
ssh-copy-id (1)      - use locally available keys to authorise logins on a     remote machine
ssh-keygen (1)       - authentication key generation, management and conversion
ssh-keyscan (1)      - gather ssh public keys
ssh-keysign (8)      - ssh helper program for host-based authentication
ssh-pkcs11-helper (8) - ssh-agent helper program for PKCS#11 support
ssh_config (5)       - OpenSSH SSH client configuration files
sshd (8)             - OpenSSH SSH daemon
sshd_config (5)      - OpenSSH SSH daemon configuration file
XAllocClassHint (3)  - allocate class hints structure and set or read a window's WM_CLASS property
XClassHint (3)       - allocate class hints structure and set or read a window's WM_CLASS property
XGetClassHint (3)    - allocate class hints structure and set or read a window's WM_CLASS property
XSetClassHint (3)    - allocate class hints structure and set or read a window's WM_CLASS property
XtIsShell (3)        - obtain and verify a widget's class

Вы можете видеть, что некоторые страницы появляются более одного раза, причина в том, что они имеют одну rsh sloginи sshту же справочную страницу. Также есть (как обычно) ложные срабатывания.

Fabian
источник
Я думаю, хотя и не совсем то , что я искал, безусловно, очень полезный и похожий инструмент. Спасибо!
OneChillDude
Возможно, добавьте к своему ответу apropos -s1, который будет извлекать все команды из manраздела 1, и только те команды, которые, по-видимому, и нужны ОП.
user1404316
3

Вы можете прочитать краткое описание многих команд, используя whatis:

$ whatis pwd
pwd (1p)             - return working directory name
pwd (1)              - print name of current/working directory
pwd (n)              - Return the absolute path of the current working directory

И вы можете попросить несколько команд:

$ whatis pwd ls ps
pwd (1p)             - return working directory name
pwd (1)              - print name of current/working directory
pwd (n)              - Return the absolute path of the current working directory
ls (1p)              - list directory contents
ls (1)               - list directory contents
ps (1)               - report a snapshot of the current processes.
ps (1p)              - report process status

Поэтому вы можете попытаться сгенерировать список описаний всех команд, комбинируя whatisс compgen:

$ whatis $(compgen -c)
Nykakin
источник
Если он генерирует мусор в STDERR, вы можете использовать `whatis $ (compgen -c) 2> / dev / null` для его очистки.
Хастур
2

В bashвы можете начать с простым helpвызовом из командной строки , чтобы иметь встроенный список команд и после Уточнить с помощью help commandname, man commandnameи man -k commandname(последнее , чтобы расширить исследования в соответствующие единица).

Вы можете найти полезными для чтения даже info coreutilsи info. (Не только в bash)

В конце manстраниц (и infoтоже) для каждой команды есть список других связанных команд после заголовка SEE ALSO. Хорошая отправная точка для расширения ваших исследований.

Hastur
источник