Yo uso GNU tar. Puede detectar automáticamente el tipo de compresión al comprimir / descomprimir archivos. Pero necesito descomprimir un archivo de stdin y se desconoce el tipo de compresión. Noté que el alquitrán me puede dar sugerencias correctas como:
tar: Archive is compressed. Use -z option
Pero quiero que tar use esa opción de compresión automáticamente sin pedirme que ingrese ese argumento. ¿Cómo puedo hacer eso? ¿Por qué no tar simplemente descomprime ya que ya conoce el tipo de compresión?
¡Gracias!
tar
no sabe qué tipo de datos tiene stdin
hasta después de leerlos, y para entonces es demasiado tarde para llamar al programa de descompresión. Es compatible con gzip, bzip2 y otros. Evitar este problema no es fácil (tendría que almacenar los datos en el búfer), por lo que solo le indica que intente nuevamente.
fork()
/ exec()
método para canalizar los datos a través de una utilidad de descomprimir. La utilidad leería desde la stdin
tubería y ahora faltaría el primer 4K. No hay forma de volver a colocar los datos en la tubería después de leerlos.
cat buffer - | gunzip
. (Alternativamente, las E / S sin bloqueo podrían usarse para evitar la necesidad del proceso adicional).