"menos" no descomprime automáticamente los archivos comprimidos con gzip

"menos" no descomprime automáticamente los archivos comprimidos con gzip

En Fedora/Redhat/CentOS el lesscomando parece detectar mágicamente un archivo comprimido con gzip y descomprimirlo sobre la marcha, por lo que puedes hacer:

less my_stuff.csv.gz

Me acabo de dar cuenta de que esto no funciona en Ubuntu 11.

less my_stuff.csv.gz
"my_stuff.csv.gz" may be a binary file.  See it anyway? 

He estado examinando mis máquinas virtuales CentOS para ver si hay algún alias mágico de shell que lo haga funcionar, pero no parece haberlo. ¿La compatibilidad con gzip está integrada en el binario de CentOS?

Si alguien sabe cómo funciona esto en CentOS y/o cómo se puede hacer que funcione en Ubuntu, se lo agradecería.

Soy consciente de que puedo hacer

zcat my_stuff.csv.gz | less

pero eso haría que mi teclado se desgastara más rápidamente.

Respuesta1

lessno hagas eso de forma predeterminada, pero hay una línea en el valor predeterminado ~/.bashrcque cambia el comportamiento predeterminado:

[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"

Asegúrese de no eliminar ni comentar esta línea.
Con esto implementado, puede paginar archivos comprimidos y no comprimidos sin saberlo, como en

less /var/log/dpkg.log*

donde algunos de los registros se pueden comprimir y otros no.

Para la cuenta raíz a la que se accede a través de sudoella no se puede hacer lo mismo, pero existen dos soluciones:

  1. sudo zless file*
  2. sudo -E less file*

En el primer caso utilicé zless, que también funciona para archivos no comprimidos.
En el segundo agregué la -Eopción de sudopreservar las variables de entorno, para hacer menos trabajo como era de esperar.

Respuesta2

MenosNo puedo leer archivos comprimidos con gzip, puedes comprobarlo en su página de manual. Hay un script, instalado de forma predeterminada en Ubuntu y en la mayoría de las distribuciones, llamadosin z, eso funciona como lo describiste.

Entonces la respuesta es usar:

zless my_stuff.csv.gz

La diferencia entre Fedora y Ubuntu es que Fedora establece la variable de entornoLECCION ABIERTApara forzar el argumento a través de lesspipe:

echo $LESSOPEN
||/usr/bin/lesspipe.sh %s

Tenga en cuenta que este comando no funcionará en Ubuntu.

información relacionada