-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*