Analisando sua mensagem de erro, é óbvio que você não usou tar
, mas sim gtar
.
Em geral, isso pode ajudar a entender as coisas:
-
tar
normalmente sempre precisa de um argumento de arquivo. Se estiver faltando, ele irá ler / gravar de / para o dispositivo de fita real padrão do sistema.star
mudou isso em 1982 para usar stdin / stdout por padrão e algumas outras implementações de tar (por exemplo, gtar) seguiram esse exemplo recentemente. -
tar
não implementa o-
para as opções que são chamadaskey letters
no caso do comando tar. Algumas implementações posteriormente adicionaram-
como uma letra-chave não operacional para a conveniência dos usuários, mas você não pode confiar nisto. -
A maneira como
tar
analisa seus argumentos (em particular o argumento do arquivo archive) é altamente arriscada. Eu tenho visto muitos arquivos tar que destruíram um dos arquivos que deveriam estar no arquivo porque o argumento do arquivo relacionado foi tomado como arquivo tar.star
por esse motivo (se chamado nativamente comostar
) não permite que "f" seja concatenado com outras opções. Sestar
for chamado detar
, implementará a compatibilidade da linha de comando comtar
, mas ainda tratará o argumento da letra "f" de maneira diferente: o argumento só será permitido se se referir a um arquivo de dispositivo real ou write mode) o arquivo ainda não existe.
Eu recomendo evitar a arriscada linha de comando original do tar e usar a sintaxe moderna e segura da linha de comando que você obtém com star
.
Devido à problemática sintaxe da linha de comando de tar
, havia o chamado tar wars
no início dos anos 90. Como resultado, o programa pax
(latim para "paz" nas guerras de alcatrão) foi criado e padronizado. No entanto, pax
não ganhou popularidade, pois sua sintaxe é menos arriscada, mas também menos intuitiva que a sintaxe de tar. Outro problema pode ser que gpax
seja mais ou menos não mantido.