Назад | Перейти на главную страницу

Использование дефиса в команде оболочки

Я стесняюсь задать этот вопрос, но если я этого не сделаю, я никогда не узнаю, поэтому здесь я попробую:

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

tar czvf allmyfiles.tar.gz *

Однако для извлечения архива я узнал следующую команду:

tar -zxvf allmyfiles.tar.gz

Глядя на оба приведенных выше примера, имеет ли какое-то значение, включать дефис или нет?

Большинство современных программ используют Getopt для разбора своих аргументов:

... оригинальные авторы выбрали из вариантов поддержки односимвольных опций, нескольких опций, указанных вместе, и опций с аргументами (-a arg или -aarg), и все они управляются строкой опций.

Но, как всегда, есть программы, которые работают по-своему независимо от (dd хороший пример).

Обновить: Программы BSD, как правило, используют параметры без дефисов - например, справочная страница ps состояния:

Эта версия ps поддерживает несколько типов опций:

  1. Параметры UNIX, которые могут быть сгруппированы и должны начинаться с тире.
  2. Опции BSD, которые можно сгруппировать, и их нельзя использовать с тире.
  3. Длинные параметры GNU, которым предшествуют два дефиса.

Команды tar и ar очень, очень старые и предшествуют соглашению с использованием дефисов.

С участием tar, это (обычно) не имеет значения. Нет правила, чтобы сказать, будут ли все команды следовать этому соглашению или нет, но общее руководство таково: command -arguments.