Recebo o seguinte erro ao tentar descompactar o arquivo tar canalizado com o seguinte comando:
$ git archive --format=tar 0af62b1 | tar -xf -C /the/path/here/
tar: -C: Cannot open: No such file or directory
tar: Error is not recoverable: exiting now
A primeira parte git archive --format=tar 0af62b1
gera um arquivo tar, impresso na tela. Esta saída pode ser capturada em um arquivo usando o parâmetro --output file_name
.
Na segunda parte estou tentando extrair o conteúdo do arquivo no caminho indicado. Quando executados separadamente, ambos funcionam perfeitamente, git archive 0af62b1 --output file_name
seguidos por tar -xf file_name -C /the/path/here/
.
Por que a tubulação não é possível neste caso e como posso saber se um determinado comando aceita entrada canalizada?
Responder1
Eu tentaria direcionar você git
para tar -xf - -C /the/path/here/
onde -
é sinônimo de entrada padrão. Ou mais simples tar -xC /the/path/here
( -
é o arquivo padrão).
Responder2
O problema é fornecido na sua saída de erro:
$ arquivo git --format=tar 0af62b1 | alcatrão-xf-C/o/caminho/aqui/
tar:-C: Não é possível abrir:Nenhum arquivo ou diretório
tar: O erro não é recuperável: saindo agora
Você está dizendo ao tar para usar um arquivo chamado -C que não existe e, portanto, você falha.
No caso de trabalho, você está fornecendo um arquivo chamado file_name que existe e tudo funciona.
Correção possível: remova "-f -C" do comando.