Czy powinienem zamówić alfabetycznie flagi w poleceniu jako dobrą praktykę?

14

Wiem, że te dwa polecenia robią to samo:

ls -la
ls -al

ale zastanawiam się, czy są jakieś preferencje między nimi. Czy lepiej jest zamówić je w określony sposób?

Tim
źródło
11
Potrzebujesz również tej koszulki: redbubble.com/people/digerati/works/… :)
Sergey
@Sergey Awesome shirt!
Terrance

Odpowiedzi:

15

To naprawdę nie ma znaczenia *, chyba że polecenie wyraźnie wspomina. Nie spotkałem się z żadnym odniesieniem, które dałoby coś w rodzaju wskazówki, jak ustawiać opcje jedna po drugiej. Myślę więc, że ze względu na czytelność opcje mogą być ułożone alfabetycznie.

* Istnieje bardzo bardzo ważny cavaet, który polega na tym, że jeśli jakakolwiek opcja wymaga nazwy pliku lub innego wejścia bezpośrednio po niej, musisz ją odpowiednio umieścić.

Na przykład -fopcja greppobierania pliku jako danych wejściowych w celu wzięcia wzoru do wyszukania z pliku wejściowego. Musisz wydać polecenie jako np .:

grep -cf input.txt file.txt 

Jeśli używasz go w następujący sposób:

grep -fc input.txt file.txt 

zakończy się niepowodzeniem, ponieważ będzie używany cjako nazwa pliku.

heemayl
źródło
12

W POSIX konwencje określić w wytycznej 11 i 12 wytycznych składnia Utility że porządek „ nie powinien materia ”, o ile to nie jest udokumentowane dla samego narzędzia.

The GNU C Library Reference Manual wyróżnieniem także te konwencje POSIX w argumencie 25.1.1 Program Konwencje składni .

Ale zauważ, że istnieje kilka narzędzi, które w niektórych sytuacjach dają ścisłe rozkazy, jak wykonać parametry (na przykład znaleźć). Ze strony znalezienia :

-nameTest przychodzi przed -typetestem w celu uniknięcia konieczności wzywania stat(2)na każdym pliku.

Czasami narzędzie narzeka na zamówienie.

chaos
źródło
3
Ściśle mówiąc, findma tylko kilka opcji, POSIX definiuje tylko dwie opcje -Hi -L. GNU findw Ubuntu ma jeszcze kilka opcji, ale -typei -nameetc są uważane za podmioty , a nie opcje . A dla operatorów zamówienie zwykle ma znaczenie.
geirha
5

Z ls nie możesz się pomylić z kolejnością opcji.

Należy jednak pamiętać, że inne polecenia mogą mieć różne odpowiedzi na opcje w zależności od kolejności.

Przykładem jest polecenie find. Otrzymasz różne wyniki, na przykład między:

  find . -ls -mtime -1 

I

  find . -mtime -1 -ls
użytkownik55570
źródło
3

Jeśli chcesz ćwiczyć alfabetycznie krótkie ciągi znaków. Uważam, że dwie strategie są przydatne: tworzenie słów (zmniejsza literówki) i tworzenie zdań (poprawia zrozumienie).

Na przykład w przypadku ls zwykle używam, ls -halFponieważ nawet przy dziwnej pisowni wielkimi literami lepiej piszę halF niż coś takiego jak Falh, który nie jest słowem.

Z drugiej strony, dla smoły piszę tar czvf filenamei mówię (w mojej głowie) „tworzenie i zamykanie smoły, werbalnie dla nazwy pliku”, ponieważ w ten sposób dowiedziałem się, co oznaczają różne litery.

Vynce
źródło
Pamiętam e2fsck -fvcckt, ponieważ oznacza sytuację, w której mogę być, jeśli zwraca zbyt wiele błędów. ;)
Joe
2

Podobnie jak inni odpowiedzieli, nie ma to znaczenia (chyba że udokumentowano inaczej lub argumenty opcji przyjmują kolejne argumenty).

Ale czy lepiej jest zamówić opcje alfabetycznie, jest dyskusyjna.

Osobiście uważam, że mnemoniki zapewniają większą wartość niż ścisła kolejność alfabetyczna. Łatwiej jest zapamiętać zestaw opcji, gdy tworzą pamiętne słowo, na przykład rozważ:

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

vs:

netstat -atn
netstat -nta

Jeśli więc powtarzasz określoną kombinację opcji dla polecenia, możesz spróbować zmienić kolejność liter w kolejności, która jest dla ciebie najłatwiejsza do zapamiętania.

arielf
źródło