Должен ли я в алфавитном порядке упорядочить флаги в команде как хорошую практику?

14

Я знаю, что эти две команды выполняют одно и то же:

ls -la
ls -al

, но мне интересно, есть ли между ними предпочтения. Лучше ли это упорядочить их определенным образом?

    
задан Tim 10.06.2015 в 23:08
источник

5 ответов

15

Это не имеет значения * если команда явно не упоминает. Я не нашел ссылки, которая давала что-то вроде руководства, как ставить опции один за другим. Поэтому я считаю, что для удобства чтения варианты могут быть расположены в алфавитном порядке.

* Существует очень очень важный cavaet, если какая-либо опция нуждается в имени файла или любом другом вводе сразу после того, как вам нужно поместить его соответствующим образом.

Например, параметр -f grep принимает файл в качестве ввода, чтобы взять шаблон, который нужно искать из входного файла. Вам нужно указать команду, например:

grep -cf input.txt file.txt 

Если вы используете его как:

grep -fc input.txt file.txt 

он будет терпеть неудачу, так как он будет использовать c в качестве имени файла.

    
ответ дан heemayl 10.06.2015 в 23:19
источник
12

Соглашения POSIX определяют в Руководстве 11 и 12 Утилиты Руководства по синтаксису , что порядок не должен иметь значения ", если он не документирован для самой утилиты.

Справочное руководство по библиотеке Справочника по GNU C также соблюдает эти соглашения POSIX в 25.1.1. Обозначения синтаксиса аргументов программы .

Но заметьте, есть несколько утилит, которые в некоторых ситуациях дают строгие заказы, как выполнять параметры (например, найти). Из найдите manpage :

  

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

Иногда утилита жалуется на упорядочение.

    
ответ дан chaos 11.06.2015 в 01:01
5

С помощью ls вы вряд ли ошибетесь при заказе опций.

Но помните, что другие команды могут иметь разные ответы на опции в зависимости от порядка.

Примером является команда find. Вы получите разные результаты, например, между:

  find . -ls -mtime -1 

И

  find . -mtime -1 -ls
    
ответ дан user55570 11.06.2015 в 00:15
3

Если вы хотите практиковать, это, возможно, алфавитные короткие строки. Я нахожу две стратегии полезными: делать слова (уменьшает опечатки) и делать предложения (улучшает понимание).

Для ls, например, я обычно использую ls -halF , потому что, даже со странной капитализацией, я лучше печатаю halF , чем что-то вроде Falh , что isn ' t слово.

Для tar, с другой стороны, я набираю tar czvf filename и говорю (в моей голове) «tar Create и Zip, Verbosely For filename», потому что именно так я узнал, что означают разные буквы.

    
ответ дан Vynce 12.06.2015 в 21:06
2

Как и другие ответили, это не имеет значения (если не указано иначе, или аргументы опции принимают дополнительные аргументы).

Но предпочтительнее ли порядок сортировки в алфавитном порядке дискутировать.

Лично я считаю, что мнемоники обеспечивают большую ценность, чем строгий алфавитный порядок. Легче запомнить набор опций, когда они образуют запоминающееся слово, например, считают:

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

против

netstat -atn
netstat -nta

Итак, если вы обнаружите, что повторяете определенную комбинацию параметров для команды, вы можете попробовать и переставить буквы в том порядке, который вам легче запомнить.

    
ответ дан arielf 12.06.2015 в 20:07