Dois-je classer les drapeaux par ordre alphabétique comme une bonne pratique?

14

Je sais que ces deux commandes font la même chose:

ls -la
ls -al

mais je me demande s'il y a une préférence entre eux. Est-il préférable de les commander d'une certaine manière?

Tim
la source
11
Vous avez également besoin de ce t-shirt: redbubble.com/people/digerati/works/… :)
Sergey
Chemise @Sergey Awesome!
Terrance

Réponses:

15

Cela n'a pas vraiment d'importance * sauf si une commande le mentionne explicitement. Je n'ai rencontré aucune référence qui donne quelque chose comme une ligne directrice sur la façon de mettre les options l'une après l'autre. Je pense donc que pour des raisons de lisibilité, les options peuvent être organisées par ordre alphabétique.

* Il y a un cavaet très très important: si une option a besoin d'un nom de fichier ou de toute autre entrée juste après, vous devez le mettre en conséquence.

Par exemple, l' -foption grepprend un fichier en entrée pour prendre le modèle à rechercher dans le fichier d'entrée. Vous devez donner la commande comme par exemple:

grep -cf input.txt file.txt 

Si vous l'utilisez comme:

grep -fc input.txt file.txt 

il échouera car il sera utilisé ccomme nom de fichier.

heemayl
la source
12

Les conventions POSIX définissent dans les lignes directrices 11 et 12 des lignes directrices sur la syntaxe des utilitaires que l'ordre « ne devrait pas avoir d'importance » à moins qu'il ne soit pas documenté pour l'utilitaire lui-même.

Le manuel de référence de la bibliothèque GNU C respecte également ces conventions POSIX dans 25.1.1 Conventions de syntaxe des arguments de programme .

Mais remarquez, il existe plusieurs utilitaires qui donnent dans certaines situations des ordres stricts sur la façon d'exécuter les paramètres (par exemple, trouver). Depuis la page de manuel find :

Le -nametest précède le -typetest afin d'éviter d'avoir à faire appel stat(2)à chaque fichier.

Parfois, l'utilitaire se plaint de la commande.

le chaos
la source
3
À proprement parler, findn'a que quelques options, POSIX ne définit que les deux options -Het -L. Le GNU finddans Ubuntu a quelques options supplémentaires, mais -typeet -nameetc sont considérés comme des opérateurs , pas des options . Et pour les opérateurs, l'ordre compte généralement.
geirha
5

Avec ls, vous pouvez difficilement vous tromper en commandant des options.

Mais gardez à l'esprit que d'autres commandes peuvent avoir des réponses différentes aux options selon l'ordre.

Un exemple est la commande find. Vous obtiendrez des résultats différents par exemple entre:

  find . -ls -mtime -1 

Et

  find . -mtime -1 -ls
user55570
la source
3

Si ce que vous voulez pratiquer, c'est alphabétiser des chaînes courtes, peut-être. Je trouve deux stratégies utiles: faire des mots (réduire les fautes de frappe) et faire des phrases (améliore la compréhension).

Pour ls, par exemple, j'utilise habituellement ls -halFparce que, même avec l'étrange capitalisation, je suis meilleur en tapant halF que quelque chose comme Falh qui n'est pas un mot.

Pour tar, par contre, je tape tar czvf filenameet dis (dans ma tête) "tar Create et Zip, Verbosely For filename" parce que c'est ainsi que j'ai appris ce que signifiaient les différentes lettres.

Vynce
la source
Je me souviens de e2fsck -fvcckt car cela indique la situation dans laquelle je peux être s'il renvoie trop d'erreurs. ;)
Joe
2

Comme d'autres ont répondu, cela n'a pas d'importance (sauf si documenté autrement ou que les arguments d'option prennent d'autres arguments).

Mais est-il préférable de commander les options par ordre alphabétique est discutable.

Personnellement, je trouve que les mnémoniques fournissent plus de valeur qu'un ordre alphabétique strict. Il est plus facile de se souvenir d'un ensemble d'options lorsqu'elles forment un mot mémorable, par exemple, considérez:

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

contre:

netstat -atn
netstat -nta

Donc, si vous vous retrouvez à répéter un certain combo d'options pour une commande, vous voudrez peut-être essayer de réorganiser les lettres dans un ordre qui est plus facile à retenir pour vous.

arielf
la source