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 0af62b1
genera 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_name
seguido 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 git
hacia 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.