Devo ordenar alfabeticamente os sinalizadores em um comando como boa prática?

14

Eu sei que esses dois comandos fazem a mesma coisa:

ls -la
ls -al

mas eu estou querendo saber se existe alguma preferência entre eles. É melhor praticá-los de uma determinada maneira?

    
por Tim 10.06.2015 / 23:08

5 respostas

15

Realmente não importa * a menos que um comando mencione explicitamente. Eu não encontrei nenhuma referência que desse uma diretriz como colocar as opções uma após a outra. Então eu acho que, por uma questão de legibilidade, as opções podem ser organizadas em ordem alfabética.

* Existe uma cavaet muito importante que é se alguma opção precisar de um nome de arquivo ou qualquer outra entrada logo após você precisar colocá-la de acordo.

Por exemplo, a opção -f de grep usa um arquivo como entrada para obter o padrão a ser procurado no arquivo de entrada. Você precisa dar o comando como, por exemplo:

grep -cf input.txt file.txt 

Se você usar como:

grep -fc input.txt file.txt 

falhará, pois usará c como nome de arquivo.

    
por heemayl 10.06.2015 / 23:19
12

As convenções POSIX definem em Directrizes 11 e 12 da Utility Diretrizes de Sintaxe que a ordem " não deve importar " a menos que não esteja documentada para o utilitário em si.

O Manual de Referência da Biblioteca GNU C também respeita as convenções POSIX em 25.1.1 Convenções de Sintaxe do Argumento do Programa .

Mas observe, existem vários utilitários que dão em algumas situações ordens estritas de como executar os parâmetros (por exemplo find). Na localize a página de manual :

  

O teste -name vem antes do teste -type para evitar          ter que chamar stat(2) em todos os arquivos.

Às vezes, o utilitário reclama da encomenda.

    
por chaos 11.06.2015 / 01:01
5

Com o ls, você dificilmente pode errar com o pedido de opções.

Mas lembre-se de que outros comandos podem ter respostas diferentes às opções, dependendo do pedido.

Um exemplo é o comando find. Você obterá resultados diferentes, por exemplo, entre:

  find . -ls -mtime -1 

e

  find . -mtime -1 -ls
    
por user55570 11.06.2015 / 00:15
3

Se o que você quer praticar é alfabetizar seqüências curtas, talvez. Eu acho duas estratégias úteis: criar palavras (reduz erros de digitação) e fazer frases (melhora a compreensão).

Para ls, por exemplo, eu geralmente uso ls -halF porque, mesmo com a capitalização estranha, eu sou melhor em digitar halF do que algo como Falh que não é uma palavra.

Para o tar, por outro lado, eu digito tar czvf filename e digo (na minha cabeça) "tar Create e Zip, Verbosely For filename" porque foi assim que aprendi o significado das diferentes letras.

    
por Vynce 12.06.2015 / 21:06
2

Como outros já responderam, não importa (a menos que documentado de outra forma ou argumentos de opção levem mais argumentos).

Mas é preferível encomendar opções alfabeticamente é discutível.

Pessoalmente, acho que os mnemônicos fornecem mais valor do que a ordem alfabética estrita. É mais fácil lembrar de um conjunto de opções quando elas formam uma palavra memorável, por exemplo, considere:

netstat -tan
# alphabetic is good (by chance) in this case
netstat -ant

vs:

netstat -atn
netstat -nta

Então, se você se encontrar repetindo um certo combo de opções para um comando, você pode tentar reorganizar as letras em uma ordem que seja mais fácil de lembrar.

    
por arielf 12.06.2015 / 20:07