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?

Tim
fonte
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.

heemail
fonte
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.

caos
fonte
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
user55570
fonte
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.

Vynce
fonte
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.

arielf
fonte