Um hífen é o caminho que opções para um comando tradicionalmente foi dado aos comandos Unix. Eles têm um hífen seguido por uma única letra (ou às vezes um número) ( -a
-i
-T
). Algumas opções são seguidas por um argumento ( -ofilename
-o filename
).
Dois hífens são usados principalmente - e são a maneira preferida de dar opções - para programas / comandos em sistemas GNU - ie. principalmente em sistemas Linux. Eles têm dois hipens seguidos de uma ou mais palavras separadas por hipens simples ( --version
--ignore-case
). Opções com argumentos usa um sinal de igual para separar opção e argumento ( --log-file=filename
)
A desvantagem com as opções antigas de um-hypen é que não há uma carta padrão para fazer a mesma coisa sobre comandos diferentes. Sim, -v
é frequentemente usado para "verbose" - e -V
é algumas vezes usado para "versão" - mas não há consesnsus reais entre os comandos. Por exemplo, -i
significa "interativo" para cp
, mv
, ln
e rm
- o comando solicitará antes de sobrescrever ou excluir. Mas isso significa "ignorar maiúsculas e minúsculas" em grep
. Para dificultar ainda mais, o comando sort
usa -f
- para "fold case" - da mesma forma, para ignorar letras maiúsculas e minúsculas. Para completar a confusão, muitos comandos - incluindo mv
e cp
- usam -f
para "força" ... que o comando deve fazer algo (como sobrescrever um arquivo existente), mesmo que normalmente não fosse.
Além disso, os comandos para diferentes sistemas Unix (Solaris, * BSD, SysV, AIX, ...) podem usar letras diferentes para fazer a mesma coisa. Por exemplo, o comando who
lista os usuários em um sistema. Esse comando pode, opcionalmente, mostrar quais usuários aceitam mensagens de outros usuários em seus terminais - a opção para isso é -w
no Linux, enquanto o Solaris usa -T
.
As opções longas, por outro lado, permitem que a mesma opção seja usada em todos os comandos e, na verdade, descrevem o que as opções fazem. Por exemplo, --ignore-case
, --interactive
, --version
, --force
. Assim, --ignore-case
é usado em grep
e sort
.
Mas, novamente, eles são quase usados apenas em comandos / programas feitos como parte do projeto GNU ...
Finalmente, um hypen duplo é usado para dizer a um comando que a lista de opções está concluída, e que o que segue são argumentos - não importa o quanto eles possam parecer opções. Se um nome de arquivo começar com um hífen (por exemplo, -this_is_a_bad_filename
), os comandos podem confundi-lo com uma opção e tentar analisá-lo - o hífen duplo evita isso. mv -vi -- -this_is_a_bad_filename this_is_a_better_filename
(o único comando que você deve usar se um nome de arquivo começar com um hífen ...; -)