-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*
z может использоваться в последний раз:
tar -x -v -f foo.tar.gz -z
Но, как указано @Dennis, флаг f берет аргумент.