7
$ ls one.tar.gz
one.tar.gz
$ tar -xvfz one.tar.gz
tar: z: Cannot open: No such file or directory
tar: Error is not recoverable: exiting now
$ tar -xvzf one.tar.gz
one
$ tar -xzvf one.tar.gz
one
$ tar -zxvf one.tar.gz
one
$

2 ответа2

16

-f принимает аргумент (имя файла). Если z появляется после f то это имя файла.

tar -xvfz one.tar.gz

такой же как

tar -xvf z one.tar.gz

Если вы сделали это:

tar -xvf -z one.tar.gz

тогда -z было бы взято в качестве имени файла, и вы бы получили аналогичную ошибку.

Это, однако, сработало бы:

tar -xvz -f one.tar.gz

Страница руководства по GNU tar гласит:

Первым аргументом tar должен быть один из параметров: Acdrtux, за которым следуют любые необязательные функции. Последними аргументами tar являются имена файлов или каталогов, которые должны быть заархивированы.

Обратите внимание, что если входные данные не из stdin или выходные данные не предназначены для stdout (где это уместно), необходимо указать параметр -f filename и аргумент. В то время как справочная страница подразумевает, что порядок фиксирован, в действительности параметры могут быть в любом порядке. Даже эта странная работа (но она может не работать во всех версиях tar):

tar -v files_to_archive* -f xyz.tar.gz -cz

Для переносимости, вероятно, лучше придерживаться идиоматического порядка аргументов и даже оставить дефис:

tar czvf xyz.tar.gz files_to_archive*
6

z может использоваться последним:

tar -x -v -f foo.tar.gz  -z

Но, как утверждает @Dennis, флаг f принимает аргумент.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .