tar -xvfz foo.tar.gz
возвращает ошибку tar: z: Cannot open: No such file or directory
Это вполне понятно - f
коммутатор ожидает имя файла и поэтому должен быть последним.
Однако tar xvfz foot.tar.gz
пропуск дефиса работает, распаковывает и распаковывает файл.
Я проверял это на OS X 10.8 и Ubuntu 12.04.
Есть идеи почему?
[отредактировано, чтобы добавить]
Я всегда использую tar -zxvf foo.tar.gz
. Однако этот вопрос возник из-за этого xkcd и моего удивления, когда кто-то настаивал на том, что tar xvfz
это сработает.
Ответы:
У tar есть 3 типа синтаксиса (согласно этому ):
Для старого синтаксиса опции все буквы должны следовать за «tar» и должны падать в одну группу без пробелов. Порядок букв на самом деле не имеет значения, если аргументы этих букв следуют в том же порядке после набора опций.
Этот старый способ написания опций tar может удивить даже опытных пользователей. Например, две команды:
совсем разные. Первый пример использует «archive.tar.gz» в качестве значения параметра «f» и распознает параметр «z». Второй пример, однако, использует «z» в качестве значения для опции «f» - вероятно, не то, что предполагалось.
Старые параметры сохранены для совместимости со старыми версиями tar.
Команда с '-' эквивалентна
Вот почему ваш пример работает без "-", а не с "-"
источник