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

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

ls -la
ls -al

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

1
задан 5 August 2015 в 19:44

4 ответа

Соглашения POSIX определяют в Руководящих принципах 11 и 12 Руководства по синтаксису служебных программ, что порядок «не имеет значения», если он не документирован для самой утилиты.

POSIX также соблюдает эти соглашения POSIX в Руководстве 11 и 12 Руководства по синтаксису служебных программ .

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

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

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

12
ответ дан 23 May 2018 в 19:57
  • 1
    Строго говоря, find имеет только несколько опций, POSIX определяет только две опции -H и -L. У GNU find в Ubuntu есть еще несколько опций, но -type и -name и т. Д. Считаются операторами , а не опциями . И для операторов порядок обычно имеет значение. – geirha 12 June 2015 в 21:17

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

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

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

  find . -ls -mtime -1 

И

  find . -mtime -1 -ls
5
ответ дан 23 May 2018 в 19:57

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

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

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

3
ответ дан 23 May 2018 в 19:57
  • 1
    Я помню e2fsck -fvcckt, потому что он описывает ситуацию, в которой я могу быть, если он возвращает слишком много ошибок. ;) – Joe 18 June 2015 в 04:21

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

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

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

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

vs:

netstat -atn
netstat -nta

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

2
ответ дан 23 May 2018 в 19:57

Другие вопросы по тегам:

Похожие вопросы: