tar -xvfz foo.tar.gz
retorna um erro tar: z: Cannot open: No such file or directory
Isso é completamente compreensível - o f
switch espera um nome de arquivo e, portanto, precisa ser o último.
No entanto, omitir o hífen tar xvfz foot.tar.gz
funciona, descompacta e descompacta o arquivo.
Eu testei isso no OS X 10.8 e no Ubuntu 12.04.
Alguma idéia do porquê?
[editado para adicionar]
Eu sempre uso tar -zxvf foo.tar.gz
. No entanto, essa pergunta surgiu por causa desse xkcd , e minha surpresa quando alguém insistiu que tar xvfz
funcionaria.
Respostas:
O tar possui 3 tipos de sintaxe (de acordo com isso ):
Para a sintaxe da opção antiga, todas as letras devem seguir "tar" e devem cair em um único grupo sem espaços. A ordem das letras realmente não importa, desde que os argumentos dessas cartas sigam a mesma ordem após o grupo de opções.
Essa maneira antiga de escrever opções de tar pode surpreender até usuários experientes. Por exemplo, os dois comandos:
são bem diferentes. O primeiro exemplo usa 'archive.tar.gz' como o valor da opção 'f' e reconhece a opção 'z'. O segundo exemplo, no entanto, usa 'z' como o valor da opção 'f' - provavelmente não o que foi planejado.
As opções antigas são mantidas para compatibilidade com versões antigas do tar.
O comando com '-' é equivalente a
Essa é a razão pela qual seu exemplo está funcionando sem um "-" e não com "-"
fonte