Liste todos os argumentos opcionais de um comando em particular no bash

6

Eu queria saber se havia uma maneira de descobrir todos os argumentos opcionais de um comando no bash sem ter que abrir a página de manual e passar por muitas informações indesejadas.

Eg:
Input: <some_command> cat
Output: -A, --show-all           equivalent to -vET
  -b, --number-nonblank    number nonempty output lines, overrides -n
  -e                       equivalent to -vE
  -E, --show-ends          display $ at end of each line
  -n, --number             number all output lines
  -s, --squeeze-blank      suppress repeated empty output lines
  -t                       equivalent to -vT
  -T, --show-tabs          display TAB characters as ^I
  -u                       (ignored)
  -v, --show-nonprinting   use ^ and M- notation, except for LFD and TAB
      --help     display this help and exit
      --version  output version information and exit
    
por abhigyanghosh30 21.10.2017 / 15:16

2 respostas

10

Não é universal, mas muitos comandos fornecem um resumo de uso em resposta a um argumento -h ou --help , por exemplo

$ cat --help
Usage: cat [OPTION]... [FILE]...
Concatenate FILE(s) to standard output.

With no FILE, or when FILE is -, read standard input.

  -A, --show-all           equivalent to -vET
  -b, --number-nonblank    number nonempty output lines, overrides -n
  -e                       equivalent to -vE
  -E, --show-ends          display $ at end of each line
  -n, --number             number all output lines
  -s, --squeeze-blank      suppress repeated empty output lines
  -t                       equivalent to -vT
  -T, --show-tabs          display TAB characters as ^I
  -u                       (ignored)
  -v, --show-nonprinting   use ^ and M- notation, except for LFD and TAB
      --help     display this help and exit
      --version  output version information and exit

Examples:
  cat f - g  Output f's contents, then standard input, then g's contents.
  cat        Copy standard input to standard output.

GNU coreutils online help: <http://www.gnu.org/software/coreutils/>
Full documentation at: <http://www.gnu.org/software/coreutils/cat>
or available locally via: info '(coreutils) cat invocation'
    
por steeldriver 21.10.2017 / 15:18
4

A melhor abordagem depende do tipo de comando que você está executando. Você pode tentar -h ou --help como steeldriver sugere , embora para alguns comandos que podem não mostrar todos opções disponíveis. Idealmente , todas as opções seriam mostradas; mesmo assim, porém, nem todos podem ser explicados. Documentação oficial, como man ou info , geralmente mostrará e explicará todas as opções - ou pelo menos todas elas que o desenvolvedores esperam que os usuários realmente usem. (Opções não documentadas às vezes existem.)

Primeiramente, eu recomendo verificar se o comando é um comando externo ou um < href="http://mywiki.wooledge.org/BashGuide/CommandsAndArguments#Builtins"> shell embutido . Você pode fazer isso com o comando type . Em bash , você pode passar o -a flag para o type comando, para mostrar o que seria executado se a primeira correspondência não existisse:

ek@Io:~$ type -a ls
ls is aliased to 'ls --color=auto'
ls is /bin/ls

Para mim (e provavelmente você), ls é um alias. A expansão de alias não é recursiva, portanto, o ls in ls --color=auto não usa o alias, mas usa a segunda listagem, /bin/ls . Isso é um caminho para um arquivo executável e, portanto, um comando externo.

Portanto, para ver a documentação em ls incluindo todas as opções disponíveis , eu executaria man ls .

Alguns casos, como cat , são simples:

ek@Io:~$ type -a cat
cat is /bin/cat

Comandos que são construídos no shell geralmente não têm suas próprias páginas de manual, mas você pode usar o help incorporado para aprender sobre eles:

ek@Io:~$ type -a history
history is a shell builtin
ek@Io:~$ type -a help
help is a shell builtin

Assim, você pode executar help history para aprender sobre history ou help help para saber mais sobre help .

Para alguns recursos internos, como compgen , o help builtin mostra todas as suas opções, mas isso não explica a maioria deles. Sempre que precisar de mais informações sobre um shell embutido, você pode consultar a página de manual para bash ( man bash ), ou você pode consultar a documentação mais longa e completa executando info bash ou visitá-lo on-line . Você pode encontrar a seção sobre builtins especialmente útil.

Alguns comandos estão disponíveis como executáveis externos e como shell builtins, que é outra razão pela qual usar type -a primeiro pode ser útil:

ek@Io:~$ type -a printf
printf is a shell builtin
printf is /usr/bin/printf

Se você executar man printf , por exemplo, não será mostrada nenhuma informação sobre a opção -v , porque /usr/bin/printf não oferece suporte a ela. O bash embutido no shell, no entanto, e o texto mostrado quando você executa help printf lists e o explica.

Por fim, para manpages, é útil saber que você pode lê-los on-line .

    
por Eliah Kagan 21.10.2017 / 15:46