Por que usamos hífen duplo em “tar --anchored” e hífen único em “tar -b”? [duplicado]

1
    

Esta pergunta já tem uma resposta aqui:

    

Por que usamos hífen duplo em tar --anchored e hífen único em tar -b ?

Eu quero dizer por que algumas opções de linha de comando têm hífen único (-) enquanto outras têm duplo (-)?

Também um exemplo git :

git commit --amend
git commit -a
    
por amitasthana 28.08.2014 / 12:20

4 respostas

4

Tradicionalmente, as opções longas (mais de uma letra) são escritas com dois traços e as curtas (uma letra) com um único traço. Nem todos os programas respeitam isso.

Uma das referências mais antigas que eu encontrei para isso é: link .

    
por 28.08.2014 / 12:26
4

É uma convenção :

  • Um único traço para um ( ou muitos ) argumentos abreviados:

    command -abc
    
  • Um duplo para argumentos únicos e não abreviados:

    command --alice --barry --catherine
    

É importante notar que isso é apenas uma convenção. Qualquer comando pode receber qualquer argumento em qualquer estilo (desde que escape do shell), independentemente dos traços. Se nosso exemplo command aqui foi programado para aceitá-los, os seguintes poderiam ser sinônimos válidos dos exemplos acima:

command abc
command alice barry catherine

Estes são provavelmente exemplos horríveis, mas o que estou tentando transmitir é uma convenção de como lidar com argumentos como argumentos não posicionais. Algumas coisas não querem isso. Algumas coisas usam apenas traços únicos. Alguma coisa usa caracteres que não sejam traços (já vi aplicativos Windows compilados ainda usando / ) ... Realmente não faz muita diferença.

    
por 28.08.2014 / 12:26
1

Como outros caras já disseram, esta é uma convenção iniciada pelo projeto GNU para usar um único sinal de menos para abreviar, o que significa uma letra longa e um sinal de menos para opções longas, ou seja, opções com mais de uma letra . Esta convenção é bem estabelecida e usada por muitos projetos fora do GNU, mas quando foi introduzida, confundiu algumas pessoas acostumadas a usar exclusivamente opções curtas. No entanto, há mais para isso:

  • alguns programas, como git , permitem usar um único sinal de menos antes de uma primeira letra de uma opção longa. Nesse caso, essa opção será expandida para a opção longa, começando com esta carta, como se dois sinais de menos e um nome de opção completo fossem fornecidos. Por exemplo:

$ git pull -r

é equivalente a:

$ git pull --rebase

  • alguns programas como o GNU date agem de forma semelhante ao git, mas apenas expandem uma opção de nome longo parcial se forem precedidos por dois sinais de menos:

$ date --s

é equivalente a:

$ date --set

  • alguns programas como mutt ou git permitem omitir um espaço em branco após uma opção e antes de um valor:

$ mutt -f/var/mail/user

é equivalente a:

$ mutt -f /var/mail/user

  • alguns programas, como o GUN rm , permitem agrupar opções únicas. Por exemplo:

$ rm -rv dir

é equivalente a:

$ rm -r -v dir

  • alguns programas que usam opções que usam parâmetros usam a opção vazia menos dupla para marcar o final das opções. Por exemplo, se você quiser usar o comando touch para criar um arquivo que comece com um sinal de menos, será necessário fazer isso:

$ touch -- -file

Tudo depende de como um determinado software analisa suas opções.

Observe também como "-" sinais que você chama de hífens são conhecidos como menos para a maioria dos usuários Unix, principalmente porque existem programas que usam a opção que começa com plus sinal ( X por exemplo). Veja aqui .

    
por 28.08.2014 / 14:07
0
rmdir --ignore-fail-on-non-empty {directory} ...

O traço duplo (-) está antes da palavra completa, caso contrário, use apenas uma letra com um traço no início (-).

Olhando para outros manuais, por ex. rmdir manual , mostra uma tabela das opções que você pode usar:

-p
--ignore-fail-on-non-empty
-f, --force
-r, -R, --recursive
-v, --verbose
    
por 28.08.2014 / 12:27