Como canalizar um arquivo como entrada para o comando tar

Como canalizar um arquivo como entrada para o comando tar

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 0af62b1gera 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_nameseguidos 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ê gitpara 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.

informação relacionada