Cómo canalizar un archivo como entrada al comando tar

Cómo canalizar un archivo como entrada al comando tar

Recibo el siguiente error al intentar descomprimir un archivo tar canalizado con el siguiente 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

La primera parte git archive --format=tar 0af62b1genera un archivo tar, impreso en la pantalla. Esta salida se puede capturar en un archivo usando el parámetro --output file_name.

En la segunda parte intento extraer el contenido del archivo en la ruta indicada. Cuando se ejecutan por separado, ambos funcionan perfectamente, git archive 0af62b1 --output file_nameseguido de tar -xf file_name -C /the/path/here/.

¿Por qué no es posible la canalización en este caso y cómo sé si un determinado comando acepta entradas canalizadas?

Respuesta1

Intentaría canalizarlo githacia tar -xf - -C /the/path/here/donde -también se encuentra la entrada estándar. O más simple tar -xC /the/path/here( -es el archivo predeterminado).

Respuesta2

El problema se da en su resultado de error:

$ git archivo --format=tar 0af62b1 | alquitrán-xf -C/la/ruta/aquí/
tar:-C: No se puede abrir:No existe tal archivo o directorio
tar: el error no es recuperable: saliendo ahora

Le está diciendo a tar que use un archivo llamado -C que no existe y, por lo tanto, falla.

En el caso de trabajo, está proporcionando un archivo llamado nombre_archivo que existe y todo funciona.

Posible solución: elimine "-f -C" en el comando.

información relacionada