Analisando sua mensagem de erro, é óbvio que você não usou tar , mas sim gtar .
Em geral, isso pode ajudar a entender as coisas:
-
tarnormalmente 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.starmudou isso em 1982 para usar stdin / stdout por padrão e algumas outras implementações de tar (por exemplo, gtar) seguiram esse exemplo recentemente. -
tarnão implementa o-para as opções que são chamadaskey lettersno 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
taranalisa 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.starpor esse motivo (se chamado nativamente comostar) não permite que "f" seja concatenado com outras opções. Sestarfor 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.