Чи слід в алфавітному порядку впорядковувати прапори в команді як гарну практику?


14

Я знаю, що ці дві команди роблять те саме:

ls -la
ls -al

але мені цікаво, чи є між ними якісь переваги. Чи краще практика замовляти їх певним чином?


11
Вам також потрібна ця футболка: redbubble.com/people/digerati/works/… :)
Сергій

@Sergey Awesome сорочка!
Терранс

Відповіді:


15

Це насправді не має значення *, якщо команда прямо не згадує. Я не натрапив на жодні посилання, які давали б щось на зразок вказівки, як ставити варіанти один за одним. Тож я думаю, що для зручності читати варіанти можна впорядковувати за алфавітом.

* Існує дуже важливий cavaet, який є, якщо будь-який варіант потребує імені файлу або будь-якого іншого вводу відразу після нього, вам потрібно його встановити відповідно.

Наприклад, -fопція grepвзяти файл як вхідний, щоб прийняти шаблон, який потрібно шукати з вхідного файлу. Вам потрібно дати команду, наприклад:

grep -cf input.txt file.txt 

Якщо ви використовуєте його так:

grep -fc input.txt file.txt 

він не вдасться, оскільки він використовуватиме cяк ім'я файлу.


12

У POSIX конвенції визначають в Положенні 11 і 12 Керівництва підсобного синтаксичному , що порядок « не повинен не має значення » , якщо це не задокументовані для самої утиліти.

У GNU C Library Reference Manual також відмінністю цих конвенцій POSIX в 25.1.1 Програма Синтаксис аргументів конвенцій .

Але зауважте, є кілька утиліт, які дають у деяких ситуаціях чіткі накази щодо виконання параметрів (наприклад, пошук). З сторінки пошуку :

-nameВипробування приходить перед -typeвипробуванням для того , щоб уникнути того , щоб дзвонити stat(2)по кожному файлу.

Іноді утиліта скаржиться на замовлення.


3
Строго кажучи, findє лише кілька варіантів, POSIX визначає лише два варіанти -Hта -L. У GNU findв Ubuntu є ще кілька варіантів, але -typeі -nameт. Д. Вважаються операторами , а не варіантами . А для операторів замовлення зазвичай має значення.
geirha

5

З ls ви навряд чи помилитесь із впорядкуванням варіантів.

Але майте на увазі, що інші команди можуть мати різні відповіді на варіанти залежно від порядку.

Приклад - команда find. Ви отримаєте різні результати, наприклад, між:

  find . -ls -mtime -1 

І

  find . -mtime -1 -ls

3

Якщо ви хочете попрактикуватись, це, мабуть, алфавітні короткі рядки. Я вважаю корисними дві стратегії: складання слів (зменшує помилки) та складання речень (покращує розуміння).

Наприклад, я зазвичай використовую, ls -halFтому що, навіть при дивному написанні великої літери, я краще вводити halF, ніж щось на зразок Falh, яке не є словом.

З іншого боку, для дьогтю я набираю tar czvf filenameі кажу (в голові) "tar Create and Zip, Verbosely For name file", оскільки саме так я дізнався, що означають різні літери.


Я пам’ятаю e2fsck -fvcckt, оскільки він пише ситуацію, в якій я можу опинитися, якщо він повертає занадто багато помилок. ;)
Джо

2

Як і інші, відповіли, це не має значення (якщо документовано інше або аргументи опціону не беруть додаткових аргументів).

Але чи бажано замовляти параметри в алфавітному порядку - це дискусійний.

Особисто я вважаю, що мнемоніка надає більше значення, ніж строгий алфавітний порядок. Простіше запам’ятати набір варіантів, коли вони утворюють запам’ятоване слово, наприклад, врахуйте:

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

vs:

netstat -atn
netstat -nta

Тож якщо ви виявите, що ви повторюєте певну комбінацію параметрів команди, можливо, ви захочете спробувати переставити букви в той порядок, який вам легше запам’ятати.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.