Eu sou novo em trabalhar no shell e o uso desses comandos parece arbitrário. Existe uma razão para um sinalizador ter um único traço e outro poder ter um traço duplo?
Eu sou novo em trabalhar no shell e o uso desses comandos parece arbitrário. Existe uma razão para um sinalizador ter um único traço e outro poder ter um traço duplo?
Respostas:
Um único hífen pode ser seguido por vários sinalizadores de caractere único. Um hífen duplo prefixa uma opção única de vários caracteres.
Considere este exemplo:
tar -czf
Neste exemplo, -czfespecifica três bandeiras com um único caractere: c, z, e f.
Agora considere outro exemplo:
tar --exclude
Nesse caso, --excludeespecifica uma opção única com vários caracteres denominada exclude. O hífen duplo disambiguates o argumento de linha de comando, assegurando que tarinterpreta como exclude, em vez de uma combinação de e, x, c, l, u, d, e e.
cdrecordmencionado anos atrás nos comentários acima.
Tudo depende do programa. Normalmente "-" é usado para opções 'curtas' (uma letra, -h) e "-" é usado para opções "longas" (er) (--help).
Opções curtas geralmente podem ser combinadas (portanto "-h -a" é igual a "-ha")
Em sistemas tipo Unix, o hífen ASCII – menos é comumente usado para especificar opções. O caractere geralmente é seguido por uma ou mais letras. Um argumento que é um único hífen – menos por si só, sem nenhuma letra, geralmente especifica que um programa deve manipular dados provenientes da entrada padrão ou enviar dados para a saída padrão. Dois caracteres hífen – menos (-) são usados em alguns programas para especificar "opções longas" onde nomes de opções mais descritivos são usados. Esse é um recurso comum do software GNU.
É realmente uma convenção. No entanto, pode ajudar os analisadores a conhecer com mais eficiência as opções passadas para o programa. Além disso, existem utilitários interessantes que podem ajudar a analisar esses comandos, como getopt(3)o não padrão, getopt_long(3)para ajudar a analisar os argumentos de um programa.
É bom, pois podemos ter várias opções curtas combinadas, como outras respostas dizem, como tar -xzf myfile.tar.gz.
Se houvesse um argumento "lisa" para ls, haveria provavelmente tem um significado diferente para escrever ls -lisado que ls --lisa. Os primeiros são os l, i, s, e aparâmetros, não a palavra.
Na verdade, você poderia escrever ls -l -i -s -a, significando exatamente o mesmo que ls -lisa, mas isso dependeria do programa.
Existem também programas que não obedecem a esta convenção. Mais notavelmente para a minha vista, dde gcc.
opções curtas com traço único vs opções longas com traço duplo
opções curtas podem ser combinadas em um único argumento;
for example: ls -lrt #instead of ls -l -r -t
Se permitirmos opções longas com traço único, isso causará ambiguidade. Para resolver isso, usamos traço duplo para opções longas.