tar с использованием опции короткой формы по сравнению со старым стилем

В руководстве GNU для tar приведен следующий пример, демонстрирующий важность порядка опций:

tar -cfv collection.tar blues folk jazz

В этом случае, поскольку v ставится после f ], тогда архив tar будет называться «v», и tar попытается добавить collection.tar в архив, если он существует в текущем каталоге. Но если я опущу - с самого начала, то команда работает так, как нам хотелось бы, несмотря на то, что v ставится после f. Почему?

5
задан 24 August 2019 в 14:43

2 ответа

Поскольку это - путь другая работа стилей опции, и они ведут себя по-другому.


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

Любое число вариантов, не берущее аргументы, может кластеризироваться вместе после единственного тире, например,-vkp. Опции, которые берут аргументы (или обязательный или дополнительный), могут появиться в конце такого кластера, например,-vkpf a.tar.


Традиционный стиль параметра стиля, тот без тире:

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


Как Вы видите, стиль UNIX или короткой опции ожидает аргументы опциям непосредственно после опции.
Принимая во внимание, что традиционный стиль параметра стиля ожидает блок опций и подходящих аргументов опциям в правильном порядке.

4
ответ дан 23 November 2019 в 09:04

Это ясно описано в man tar:

Стили опции

   Options to GNU tar can be given in three different styles.  In
   traditional style, the first argument is a cluster of option
   letters and all subsequent arguments supply arguments to those
   options that require them.  The arguments are read in the same
   order as the option letters.  Any command line words that
   remain after all options has been processed are treated as
   non-optional arguments: file or archive member names.

   For example, the c option requires creating the archive, the v
   option requests the verbose operation, and the f option takes
   an argument that sets the name of the archive to operate upon.
   The following command, written in the traditional style,
   instructs tar to store all files from the directory /etc into
   the archive file etc.tar verbosely listing the files being
   archived:

   tar cfv a.tar /etc

Так в этом случае:

tar cfv collection.tar blues folk jazz

collection.tar аргумент в пользу f и blues folk jazz быть остальной частью аргументов рассматривают как имена элемента архива.

3
ответ дан 23 November 2019 в 09:04

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

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