¿Existe una herramienta para resumir lo que hacen todos los comandos?

8

Así que entiendo que hay manpáginas para obtener la documentación cuando Internet no está disponible o cuando necesita usos avanzados, pero ¿qué sucede si estoy desconectado y ni siquiera sé qué herramienta necesito para el trabajo? ¿Hay algún comando que me permita ver cada programa / comando y una breve descripción?

OneChillDude
fuente

Respuestas:

4

Puedes usar el bash (1) incorporado compgen

  • compgen -c enumerará todos los comandos que podrías ejecutar.
  • compgen -a enumerará todos los alias que podrías ejecutar.
  • compgen -b enumerará todas las funciones integradas que podría ejecutar.
  • compgen -k enumerará todas las palabras clave que podría ejecutar.
  • compgen -A function enumerará todas las funciones que podría ejecutar.
  • compgen -A function -abck enumerará todo lo anterior de una vez.

El comando anterior enumera todos los comandos disponibles para un usuario en función de su conjunto de privilegios. Deshabilité la red y probé el comando anterior y funciona incluso cuando está deshabilitado. Sin embargo, para una breve descripción, por lo que puedo decir, una vez que recibe un comando, puede ver la página del manual.

Algunos otros comandos que se pueden usar para ver la descripción de un comando son,

apropos
whatis
less
groff

Referencias

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

Ramesh
fuente
Por supuesto, eso no necesariamente le dirá si ejecutar esos comandos hará algo útil . Tomando su ejemplo de redes deshabilitadas, supongo pingque todavía estaría en la lista como ejecutable, pero no le haría mucho bien. Además, ¿no se basa esto en el usuario actual $PATH, lo que significa que si un comando no está dentro de uno de los directorios nombrados como la ruta de búsqueda, nunca aparecerá?
un CVn
apropos -s1parece una mejor respuesta, porque incluye una descripción de una línea de lo que hace cada comando. Lo que esta respuesta contribuye es una lista de alias, funciones, etc., pero sin explicación de ellos, es de uso limitado, IMO.
user1404316
9

En general: No, algunos programas vienen sin documentación.

Sin embargo, apropospodría ser justo lo que necesita.

Por ejemplo apropos ssh, enumerará las páginas de manual relacionadas con ssh, en mi caso:

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

Se pueden ver algunas páginas aparecen más de una vez, la razón es que rsh slogin, y sshtener la misma página del manual. También hay (como de costumbre) falsos positivos.

Fabian
fuente
Supongo que aunque no es exactamente lo que estaba buscando, definitivamente es una herramienta muy útil y similar. ¡Gracias!
OneChillDude
Tal vez agregue a su respuesta apropos -s1, que extraerá todos los comandos de la mansección 1, y solo aquellos comandos, que parece ser lo que quiere el OP.
user1404316
3

Puede leer una breve descripción de muchos comandos usando 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

Y puedes pedir varios comandos:

$ 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

Por lo tanto, puede intentar generar una lista de descripciones de todos los comandos combinando whatiscon compgen:

$ whatis $(compgen -c)
Nykakin
fuente
Si genera algo de basura en STDERR, puede usar `whatis $ (compgen -c) 2> / dev / null` para limpiarlo.
Hastur
2

En bashpuede comenzar con una simple helpinvocación desde el indicador para tener una lista de comandos incorporada y luego refinar con help commandname, man commandnamey man -k commandname(el último para extender la investigación a los relacionados).

Puede encontrar útiles para leer incluso info coreutilsy info. (No solo en bash)

Al final de las manpáginas (y infotambién) para cada comando hay una lista de otros comandos relacionados después del título SEE ALSO. Un buen punto de partida para ampliar su investigación.

Hastur
fuente