Я стесняюсь задать этот вопрос, но если я этого не сделаю, я никогда не узнаю, поэтому здесь я попробую:
Я заметил, что большинство команд оболочки используют «-» для параметров, но я также заметил, что у некоторых команд его нет. Например, для архивации файлов в заданном прямом виде команда:
tar czvf allmyfiles.tar.gz *
Однако для извлечения архива я узнал следующую команду:
tar -zxvf allmyfiles.tar.gz
Глядя на оба приведенных выше примера, имеет ли какое-то значение, включать дефис или нет?
Большинство современных программ используют Getopt для разбора своих аргументов:
... оригинальные авторы выбрали из вариантов поддержки односимвольных опций, нескольких опций, указанных вместе, и опций с аргументами (-a arg или -aarg), и все они управляются строкой опций.
Но, как всегда, есть программы, которые работают по-своему независимо от (dd
хороший пример).
Обновить: Программы BSD, как правило, используют параметры без дефисов - например, справочная страница ps
состояния:
Эта версия ps поддерживает несколько типов опций:
- Параметры UNIX, которые могут быть сгруппированы и должны начинаться с тире.
- Опции BSD, которые можно сгруппировать, и их нельзя использовать с тире.
- Длинные параметры GNU, которым предшествуют два дефиса.
Команды tar и ar очень, очень старые и предшествуют соглашению с использованием дефисов.
С участием tar
, это (обычно) не имеет значения. Нет правила, чтобы сказать, будут ли все команды следовать этому соглашению или нет, но общее руководство таково: command -arguments
.