Почему есть короткие и длинные альтернативы для параметров командной строки?

23

Большинство команд unixoid имеют короткие и длинные альтернативы для параметров командной строки, такие как ls -aи ls --all, или ls -Aи ls --almost-all. Почему существуют эти два пути? Один из них короче, другой легче читать и понимать. Но каждый раз, когда я пишу сценарий оболочки, мне нужно решить, какой из них я хочу использовать. Известно ли, почему существуют две альтернативы? Кто был первым, почему был представлен другой? Например, в DOS / Windows практически не учитывается регистр букв из одной буквы.

ygoe
источник

Ответы:

24

Изначально были только односимвольные варианты. Некоторые программы выбирали несколько символов, но все еще с одной чертой. AFAIK много-символьные опции двойной черты происходят из GNU ; они были введены потому, что они более читабельны и часто более запоминаемы (и их может быть более 52). Многие программы теперь имеют и то и другое: короткие опции для ввода текста в командной строке и запоминания символа, длинные опции для скриптов или в командной строке, если вы помните только более длинное имя опции.

Жиль "ТАК - перестань быть злым"
источник
15
+1 за упоминание , что длинные варианты лучше для скриптов, так как они помогают документ вещи
Norman Gray
5
Что касается «только 52 из них»: попробуйте ls -BartSimpsonIsJustCool(или Greatесли вы находитесь на Солярисе.
Аарон Дигулла
1
@AaronDigulla Это пасхальное яйцо?
user712092
5
@ user712092 Нет, это трюк. В Linux все , что указывается после параметра, Iявляется аргументом -Iопции, поэтому это имеет значение, только если у вас есть файл, вызываемый sJustCoolв текущем каталоге. -BartSimpsonЧасть может быть заказана, за исключением того, что S(сортировка по размеру) должен остаться после t(сортировка по дате). Также не mимеет никакого эффекта, когда nили oприсутствуют. Таким образом, команда эквивалентна ls -BSainopsr, и если я ничего не пропустил, вы не можете удалить еще одну букву для достижения того же результата, и вы можете изменить порядок этих букв свободно.
Жиль "ТАК - перестань быть злым"
2
@ Жиль: кстати, чтобы быть максимально точным, может быть 62 различных коротких варианта (включая цифры), а не 52. Рассмотрим, gzip -9 filenameнапример.
Радько Динев
1

Вы можете догадаться, что это дело вкуса. При наборе текста в командной строке может быть предпочтительнее использовать короткий параметр, особенно в случае параметров запуска (например ls -AL). Длинные опции лучше передают намерения, поэтому вам не нужно обращаться к справочной странице, когда вы читаете ls --almost-all --dereference.

Естественно, когда вы набираетесь опыта, вы можете узнать, что оба варианта -Aи -Lкороткий достаточно хорошо известны и не требуют дополнительной документации. Особенно в сложной команде, которая может комбинировать несколько команд интересными способами с оценкой, перенаправлением и т. Д. В таком случае вы можете предпочесть краткость, а не документацию.

Чен Леви
источник
1

Еще одна цель, которую я вижу, имея разные способы задания параметров (короткие и длинные), заключается в том, что при вводе текста пользователи командной строки Unix / Linux предпочитают иметь как можно более короткие команды. Тем не менее, они могут стать загадочными, и если сценарий написан с использованием этих коротких версий, их может стать трудно понять в будущем. Использование длинной версии может сделать команду SAME более читаемой и понятной для кого-то, кто не является гуру этой команды, особенно если эта команда на самом деле написана локально, а не известной командой.

jfmessier
источник