Devo ordenar alfabeticamente as bandeiras em um comando como boa prática?


14

Eu sei que esses dois comandos fazem a mesma coisa:

ls -la
ls -al

mas estou me perguntando se há alguma preferência entre eles. É uma prática melhor ordená-los de uma certa maneira?


11
Você também precisa este t-shirt: redbubble.com/people/digerati/works/... :)
Sergey

@Sergey Camisa impressionante!
Terrance

Respostas:


15

Realmente não importa *, a menos que um comando mencione explicitamente. Não encontrei nenhuma referência que desse algo como uma orientação sobre como colocar as opções uma após a outra. Então, para facilitar a leitura, as opções podem ser organizadas em ordem alfabética.

* Existe um cavaet muito muito importante, ou seja, se alguma opção precisa de um nome de arquivo ou qualquer outra entrada logo após, é necessário colocá-lo de acordo.

Por exemplo, a -fopção de greppega um arquivo como entrada para pegar o padrão a procurar no arquivo de entrada. Você precisa dar o comando como por exemplo:

grep -cf input.txt file.txt 

Se você usá-lo como:

grep -fc input.txt file.txt 

falhará como será usado ccomo um nome de arquivo.


12

As convenções POSIX definem nas Diretrizes 11 e 12 das Diretrizes de sintaxe do utilitário que a ordem " não deve importar ", a menos que não esteja documentada para o próprio utilitário.

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

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

O -nameteste vem antes do -typeteste para evitar a necessidade de chamar stat(2)todos os arquivos.

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


3
A rigor, findsó existem algumas opções, o POSIX define apenas as duas opções -He -L. O GNU findno Ubuntu tem mais algumas opções, mas -typee -nameetc são considerados operadores , não opções . E para os operadores, a ordem geralmente é importante.
geirha

5

Com ls, você dificilmente pode dar errado com a ordenação de opções.

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

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

  find . -ls -mtime -1 

E

  find . -mtime -1 -ls

3

Se o que você deseja praticar é alfabetizar cadeias curtas, talvez. Acho úteis duas estratégias: criar palavras (reduzir erros de digitação) e criar frases (melhorar a compreensão).

Para ls, por exemplo, eu costumo usar ls -halFporque, mesmo com a capitalização estranha, sou melhor digitando halF do que algo como Falh que não é uma palavra.

Para tar, por outro lado, digito tar czvf filenamee digo (na minha cabeça) "tar Create and Zip, Verbosely For filename" porque foi assim que aprendi o que as diferentes letras significavam.


Lembro-me do e2fsck -fvcckt porque explica a situação em que posso estar se retornar muitos erros. ;)
Joe

2

Como outros responderam, isso não importa (a menos que os argumentos documentados de outra forma ou as opções tenham mais argumentos).

Mas é preferível pedir opções em ordem alfabética é discutível.

Pessoalmente, acho que a mnemônica fornece 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

Portanto, se você repetir uma certa combinação de opções para um comando, tente reorganizar as letras para uma ordem mais fácil de lembrar.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.