Na maioria das versões de tar
, existem dois modos diferentes, dependendo se você coloca um menos antes de suas opções.
A parte superior do Página man do AIX resume as diferenças:
Berkeley Standards:
tar {c|r|t|u|x} ... [ Archive ] Directory | File ...
X/Open Standards:
tar {-c|-r|-t|-u|-x} ... [-f Archive] ... [-C Directory] File | Directory...
Sem o menos, tar
funciona no modo de compatibilidade de Berkeley. Nesse modo, as opções não seguem as convenções de linha de comando do UNIX agora padrão. Em vez disso, todas as bandeiras devem ser colocadas juntas (em qualquer ordem). O sinalizador f
significa que a primeira palavra após os sinalizadores é um nome de arquivo que deve ser usado em vez da unidade de fita, /dev/rmt0
. (O t
em tar
significa fita e os padrões refletem isso.) Observe também que não há -C
opção no modo de compatibilidade.
Com o menos, tar
funciona como a maioria dos comandos do UNIX. Todos os sinalizadores (e seus argumentos) devem ser especificados primeiro, depois os não sinalizadores vêm depois. -f
aceita um nome de arquivo como um argumento (essencialmente, o nome do arquivo pertence ao -f
flag), portanto, o file.tar
deve vir imediatamente após o -f
. É por isso que a página man diz [-f Archive]
com Archive
ao lado de -f
. Mas -x
não recebe argumentos ( filename
não pertence ao -x
). Novamente, olhando para a man page, filename
no seu exemplo corresponde a File | Directory...
, que estão no final da linha de comando.
As versões fixas dos seus comandos parecem
(cd /home/dir; tar xvf /path/to/file.tar filename)
e
tar -x -f file.tar -C /home/dir filename
O GNU tar faz algo semelhante. Os três estilos de opção explicam bem as diferenças.