A versão ls
no Mac OS X é baseada em BSD ls
e não suporta opções de formato longo, incluindo --help
. Consulte a a ls
manpage ou a man ls
no seu sistema para detalhes.
Marias-MacBook-Air:~ marias$ ls --help
ls: illegal option -- -
usage: ls [-ABCFGHLOPRSTUWabcdefghiklmnopqrstuwx1] [file ...]
A versão ls
no Mac OS X é baseada em BSD ls
e não suporta opções de formato longo, incluindo --help
. Consulte a a ls
manpage ou a man ls
no seu sistema para detalhes.
Comandos diferentes suportam estilos de opções diferentes. As principais tendências são:
getopt()
: getopt () é uma API de programação de 30 anos para analisar as opções. Está amplamente disponível e é o único padrão POSIX.
Ele suporta apenas opções de letras únicas, algumas das quais podem receber argumentos. Várias opções podem ser combinadas para maior brevidade.
Exemplo: tail -fn -2
: uma opção sem argumento ( -f
) seguida por -n
que recebe um argumento de -2
(também pode ser escrito tail -fn-2
ou tail -f -n -2
). --
é usado para marcar o final das opções.
XrmParseCommand()
: (80's) pediu instância de XtOpenApplication()
.
A API usada por aplicativos X11 tradicionais (leia old-style hoje em dia). Lá, as opções são argumentos únicos, geralmente e tradicionalmente -option
(ou +option
).
As opções podem receber argumentos, mas não podem ser combinadas como getopt()
(mesmo que sejam definidas como opções de letra única como -d
por um curto para -display
).
GNU getopt_long
. (final dos anos 80). O GNU estendeu a API getopt()
para adicionar suporte a opções longas de maneira compatível.
O GNU é a origem dessas --long
opções e a razão pela qual elas são muito comuns nos sistemas GNU e não tanto em outros lugares.
Lá, você tem dois tipos de opções: longa e curta. Os longos são --foo
. Aqueles que aceitam argumentos podem ser escritos em --foo=arg
ou --foo
arg
.
Outra extensão são as opções que podem, opcionalmente, receber argumentos ( -o
ou -oarg
, --opt
ou --opt=arg
), embora a variante curta não permita passar um argumento vazio. Opções longas também podem ser abreviadas. Como em vez de --help
, você pode passar --he
ou --h
(desde que seja a única opção que começa com h
). A análise de opção GNU também permite a interligação de argumentos opcionais e não opcionais (embora --
ainda possa ser usado para marcar o final das opções).
O estilo GNU de opções está se tornando um novo padrão, com a maioria das linguagens tendo uma API para analisá-las (às vezes com o conjunto de recursos completo, às vezes com extensões).
Agora, se algum comando tem alguma opção para imprimir uma mensagem de ajuda ou de uso, também fica totalmente a critério do redator do aplicativo.
Muitos aplicativos imprimem uma mensagem uso quando uma opção não é reconhecida (para os comandos que recebem opções). Alguns podem imprimir uma mensagem em -h
, -?
, -help
, --help
, --usage
, --long-help
...
Agora, chamar um comando com um argumento aleatório, sem saber o que isso pode fazer, é um negócio perigoso. -h
pode ser para ajuda ou qualquer outra coisa. Por exemplo shutdown -h
é para h alt o sistema. -help
seria curto para -h -e -l -p
(ou -h -e lp
ou -h elp
como em --host=elp
...) para um comando que usa getopt()
ou getopt_long()
...
Se você sabe que um comando aceita opções, uma aposta relativamente segura é -?
ou -:
. Em um shell:
cmd -\?
cmd -:
Para a getopt()
API, os :
e ?
têm um significado especial, por isso, é improvável que sejam opções válidas. Em seguida, você recebe uma mensagem de erro que pode lhe dar uma dica sobre a opção válida para obter ajuda, se possível.
$ xterm -:
xterm: bad command line option "-:"
usage: xterm [-/+132] [-C] [-Sccn] [-T string] [-/+ah] [-/+ai] [-/+aw]
[...]
Type xterm -help for a full description.
$ dd -:
dd: invalid option -- ':'
Try 'dd --help' for more information.
$ ls -:
ls: illegal option -- :
usage: ls -1RadCxmnlogrtucpFbqisfL [files]
Não funciona com todos os comandos.
Em qualquer caso, sua melhor aposta é tentar man
primeiro, como já mencionado.
Cuidado com o fato de que alguns comandos são embutidos no shell (tente type the-command
para descobrir), então a documentação para eles será encontrada no manual do seu shell.
Esse geralmente não é o caso de ls
.
Tags command-line osx