Nos manuais de comando do Linux, qual é a diferença entre ter na descrição um “short_option comma long_option” e “short_option long_option”

3

Por exemplo, dê uma olhada em

man stat

na descrição, há várias opções como:

-L, --dereference

e

-c --format=FORMAT

qual é a diferença com ou sem vírgula? E como eu aprendo esse tipo de coisa? Eu tenho medo de estar perdendo alguns detalhes simples.

Atualmente estou lendo: link

Mas parece que não diz muito. Como / onde você consulta informações sobre o Linux?

    
por Tiago Oliveira 17.09.2018 / 23:25

2 respostas

3

Em stat especificamente, isso parece um erro de digitação. As opções -c e --format são intercambiáveis e, portanto, a vírgula deve estar lá para consistência de estilo com as outras opções.

A forma como se lê é que você precisa de -c then --format , o que não é o caso.

    
por 18.09.2018 / 01:45
3

what is the difference with or without a comma?

Nenhum. Use a opção curta ou longa, a vírgula não importa.

No meu Kubuntu, copiei arquivos de /usr/share/man/man1 e /usr/share/man/man8 , descomprimidos, higienizados (fluff removido) e pesquisado com regex para opções sem a vírgula. Eu naveguei pelos resultados, examinei alguns arquivos "suspeitos". Minhas conclusões (heurística, não estrita):

  • Relativamente poucos manuais usam o estilo sem-vírgula.
  • Aqueles que raramente misturam com o estilo com-comma.
  • man stat usa sem vírgula para -c --format , provavelmente é apenas um erro de digitação.

how do I learn this kind of stuff?

Meu jeito: se familiarizar. Man pages são para pessoas; a maioria das pessoas (mesmo nerds) é capaz de lidar com padrões difusos, erros de digitação, pequenas inconsistências ou exceções. Alguns manuais são tão grandes ( man 1 bash ) ou precisam lidar com conceitos abstratos ( man 5 sudoers ), então eles são mais formais; mas quando você precisa resolver um problema específico, você raramente estuda todo o manual, você procura exemplos. Então você experimenta , adapta exemplos disponíveis, escreve comandos que não funcionam, escreve comandos que funcionam, compara o que funciona com a documentação.

E então você começa a conhecer essas convenções um pouco difusas. Você confia na Regra de menor surpresa , você espera para ver algumas opções curtas equivalentes a algumas opções longas. Você nem percebe que alguns manuais omitem vírgulas. Você vê man stat é inconsistente apenas porque a vírgula ausente se destaca visualmente; você dá de ombros e continua ...

... porque você está familiarizado com alguns outros manuais que explicitamente avisam sobre uma sintaxe surpreendente, se houver; e você acha ótimo seus autores terem feito uma coisa tão boa.

Mas mesmo que houvesse uma diferença com ou sem vírgula, até que ponto isso importa? desde

  • você executa stat -c '%n' / e recebe / , o que é esperado;
  • você executa stat --format='%n' / e obtém o mesmo resultado;

mas

  • você executa stat -c --format='%n' / e obtém --format=/ .

I'm afraid I might be missing some simple detail.

Compare isso com o caso das reticências nos menus das ferramentas GUI. Você sabia que muitos aplicativos usam reticências ( ) para indicar itens de menu que não tomam medidas imediatas? Por exemplo. Print… gera janela adicional onde você pode alterar algo antes de prosseguir com a impressão real ou pode cancelar; em tal aplicação Print (sem reticências) imprimiria imediatamente.

Eu tenho usado ferramentas GUI de maneira eficiente por vários anos, antes de aprender o que as reticências significam. Foi por acaso que li algumas curiosidades e só então percebi que as reticências estão (e "sempre" estavam) ali. Agora eu sei que qualquer item de menu com reticências é "seguro", deve me fornecer uma maneira de cancelar.

Meu ponto é: tal detalhe pode significar algo, pode ser bastante útil (então você fez uma pergunta razoável); mas se você pode fazer o stat fazer o que você quer (e se eu posso usar menus para conseguir o que eu quero), então perder o detalhe não é grande coisa.

    
por 18.09.2018 / 03:04