Existe uma ferramenta para resumir o que todos os comandos fazem?


8

Portanto, entendo que existem manpáginas para obter a documentação quando a Internet não está disponível ou quando você precisa de usos avançados, mas e se eu estiver offline e nem souber de que ferramenta preciso para o trabalho? Existe um comando que me permita ver cada programa / comando e uma breve descrição?

Respostas:


4

Você pode usar o bash (1) embutido compgen

  • compgen -c listará todos os comandos que você pode executar.
  • compgen -a listará todos os aliases que você pode executar.
  • compgen -b listará todos os built-ins que você pode executar.
  • compgen -k listará todas as palavras-chave que você pode executar.
  • compgen -A function listará todas as funções que você pode executar.
  • compgen -A function -abck listará todos os itens acima de uma só vez.

O comando acima lista todos os comandos disponíveis para um usuário com base em seu conjunto de privilégios. Desativei a rede e testei o comando acima e ele funciona mesmo quando desabilitado. No entanto, para uma breve descrição, tanto quanto posso dizer, depois de obter um comando, você pode visualizar a página de manual.

Alguns outros comandos que podem ser usados ​​para visualizar a descrição de um comando são:

apropos
whatis
less
groff

Referências

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


Obviamente, isso não indica necessariamente se a execução desses comandos fará alguma coisa útil . Tomando o seu exemplo de redes desativadas, suponho pingque ainda estaria listado como executável, mas não faria muito bem. Além disso, isso não é baseado no atual do usuário $PATH, o que significa que, se um comando não estiver em um dos diretórios nomeados como caminho de pesquisa, ele nunca será exibido?
um CVn

apropos -s1parece uma resposta melhor, porque inclui uma descrição em uma linha do que cada comando faz. O que essa resposta contribui é uma lista de apelidos, funções, etc., mas sem nenhuma explicação deles, é de uso limitado, IMO.
user1404316

9

Em geral: Não, alguns programas vêm sem documentação.

No entanto, apropospode ser exatamente o que você precisa.

Por exemplo apropos ssh, listará as páginas de manual relacionadas ao ssh, no meu 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

Você pode ver algumas páginas aparecer mais de uma vez, a razão é essa rsh slogine sshtem a mesma página de manual. Também existem (como de costume) falsos positivos.


Acho que, embora não seja exatamente o que eu estava procurando, definitivamente uma ferramenta muito útil e semelhante. Obrigado!
OneChillDude

Talvez adicione à sua resposta apropos -s1, que puxará todos os comandos da manseção 1, e apenas esses comandos, que parece ser o que o OP deseja.
user1404316

3

Você pode ler uma breve descrição de muitos 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

E você pode pedir vários 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

Portanto, você pode tentar gerar uma lista de descrições de todos os comandos combinando whatiscom compgen:

$ whatis $(compgen -c)

Se ele gera algum lixo no STDERR, você pode usar o `whatis $ (compgen -c) 2> / dev / null` para limpá-lo.
Hastur 25/05

2

Em bashque você pode começar com uma simples helpinvocação a partir do prompt de ter um built-in refinar lista de comandos e depois com help commandname, man commandnamee man -k commandname(o último para estender a pesquisa para os relacionados).

Você pode achar útil ler pares info coreutilse info. (Não apenas em bash)

No final das manpáginas (e infotambém) de cada comando, há uma lista de outros comandos relacionados após o título SEE ALSO. Um bom ponto de partida para expandir sua pesquisa.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.