Os traços são usados para denotar opções , que modificam o comportamento do comando. Argumentos sem traços denotam os principais parâmetros do comando, geralmente são nomes de arquivos.
Os hífens simples geralmente apresentam opções que consistem em apenas uma letra. Várias dessas opções podem ser agrupadas, por isso ls -a -l
pode ser abreviado como ls -al
. Essa foi a convenção padrão para os comandos mais antigos do Unix.
Os hifens duplos introduzem opções que são palavras inteiras. Essa convenção é necessária para distingui-los do agrupamento descrito acima. Este estilo de opção foi popularizado pelas versões GNU dos utilitários, porque eles frequentemente tinham tantos recursos que eles ficavam sem letras mnemônicas.
Às vezes, uma opção requer um parâmetro próprio. Os estilos variam: alguns comandos usam -o parameter
, alguns usam -oparameter
, alguns usam --option=parameter
e alguns permitem vários formulários.
Há também um punhado de comandos que inventaram seus próprios estilos de argumentos ideoincráticos. Estes são tipicamente comandos muito antigos, desde antes de haver um consenso sobre convenções de argumentos. Exemplos disso são tar
e dd
. find
também é incomum em ser um comando antigo que usou opções de palavras completas antes da criação da convenção --
; seus argumentos são praticamente uma linguagem própria, porque suas necessidades não se encaixam no paradigma típico command -options parameters
.
Outras razões para a variação entre comandos é que o Unix não possuía originalmente uma função de biblioteca de análise de argumentos. Não foi até a metade da sua existência que as funções getopt
e getopts
foram criadas. O uso dessas bibliotecas essencialmente força você a seguir práticas comuns. Mas os programas mais antigos fizeram sua própria análise de argumentos ad hoc e diferentes programadores tomaram decisões diferentes.