Por que existem alternativas curtas e longas para opções de linha de comando?

23

A maioria dos comandos unixóides apresenta alternativas curtas e longas para opções de linha de comando, como ls -ae ls --all, ou ls -Ae ls --almost-all. Por que essas duas maneiras existem? Um é mais curto para digitar, o outro é mais fácil de ler e entender. Mas toda vez que escrevo um script de shell, preciso decidir qual quero usar. Sabe-se por que as duas alternativas existem? Qual foi o primeiro, por que o outro foi introduzido. No DOS / Windows, por exemplo, há quase apenas opções de uma letra que não diferenciam maiúsculas de minúsculas.

ygoe
fonte

Respostas:

24

Originalmente, havia apenas opções de um caractere. Alguns programas adotaram opções de vários caracteres, mas ainda com um único traço. As opções de múltiplos caracteres AFAIK de traço duplo vêm do GNU ; eles foram introduzidos porque são mais legíveis e muitas vezes mais memoráveis ​​(e você pode ter mais de 52). Muitos programas agora têm as duas opções: opções curtas para quando você digita na linha de comando e lembra-se do caractere, opções longas para scripts ou na linha de comando, se você se lembrar apenas do nome mais longo da opção.

Gilles 'SO- parar de ser mau'
fonte
15
1 para mencionar que as opções longas são melhores para scripts, porque eles ajudam documento coisas
Norman Grey
5
Quanto a "apenas 52 deles": Tente ls -BartSimpsonIsJustCool(ou Greatse você estiver usando Solaris.
Aaron Digulla 11/11/10
1
@AaronDigulla É este ovo de Páscoa?
user712092
5
@ user712092 Não, é um truque. No Linux, tudo o que se Isegue a ele é o argumento da -Iopção, portanto, só faz diferença se você tiver um arquivo chamado sJustCoolno diretório atual. A -BartSimpsonpeça pode ser reordenada, exceto que o S(classificar por tamanho) deve permanecer após o t(classificar por data). Também mnão tem efeito quando nou oestá presente. Portanto, o comando é equivalente a ls -BSainopsr, e se eu não perdi nada, você não pode remover outra letra para obter a mesma saída e pode reordenar essas letras livremente.
Gilles 'SO- stop be evil'
2
@ Gilles: a propósito, para ser o mais preciso possível, pode haver 62 opções curtas diferentes (incluindo dígitos), e não 52. Considere, gzip -9 filenamepor exemplo.
Radko Dinev
1

Você pode adivinhar que é uma questão de gosto. Ao digitar na linha de comando, uma opção curta pode ser preferida, especialmente no caso de opções de execução em conjunto (por exemplo ls -AL). As opções longas são melhores para transmitir a intenção, portanto, você não precisa consultar a página de manual ao ler ls --almost-all --dereference.

Naturalmente, à medida que você ganha experiência, pode aprender que as opções curta -Ae -Lcurta são suficientemente conhecidas e não exigem essa documentação extra. Especialmente em um comando complexo que pode combinar vários comandos de maneiras interessantes com avaliação, redirecionamento etc. Nesse caso, você pode preferir concisão do que documentação.

Chen Levy
fonte
1

Outro objetivo que vejo em diferentes maneiras de especificar parâmetros (curtos e longos) é que, ao digitar, o pessoal da linha de comando do Unix / Linux gosta de ter o mais curto possível de comandos. No entanto, eles podem se tornar enigmáticos e, se um script for escrito usando essas versões curtas, eles poderão se tornar difíceis de entender no futuro. O uso da versão longa pode tornar o comando SAME mais legível e compreensível por alguém que não é o guru desse comando, especialmente se esse comando for realmente um script escrito localmente, em oposição a um comando conhecido.

jfmessier
fonte