É apenas uma convenção (uma regra que muitos adotaram e que acabou sendo disseminada). Não é obrigatório, mas se vc fizer diferente com certeza causará estranheza com quem está acostumado.
A convenção é que opções que são compostas por apenas um caractere são precedidas por um hífen (como ls -l
, por exemplo). E existe a possibilidade de combinar mais de uma opção, ou seja, em vez de ls -a -l
, posso fazer ls -al
.
Já as opções longas (com mais de um caractere) foram criadas muitas vezes para dar mais clareza (já que correspondem a palavras completas), e convencionou-se usar dois hífens antes delas (como ls --help
).
Alguns comandos possuem ambas as alternativas para muitas opções. Por exemplo, a saída de ls --help
mostra algumas delas:
-a, --all do not ignore entries starting with .
-A, --almost-all do not list implied . and ..
--author with -l, print the author of each file
-b, --escape print C-style escapes for nongraphic characters
--block-size=SIZE with -l, scale sizes by SIZE when printing them;
-c with -lt: sort by, and show, ctime (time of last
modification of file status information);
with -l: show ctime and sort by name;
otherwise: sort by ctime, newest first
Ou seja, ls -a
seria o mesmo que ls --all
. Já a opção -c
não possui um equivalente "longo".
Repare que também seria possível fazer ls -all
, mas aí estamos passando a opção -a
mais a opção -l
duas vezes, que além de redundante, é diferente de usar --all
(pois este é equivalente a passar apenas a opção -a
). O uso dos dois hífens faz toda a diferença.