En Fedora/Redhat/CentOS el less
comando 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
less
no hagas eso de forma predeterminada, pero hay una línea en el valor predeterminado ~/.bashrc
que 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 sudo
ella no se puede hacer lo mismo, pero existen dos soluciones:
sudo zless file*
sudo -E less file*
En el primer caso utilicé zless
, que también funciona para archivos no comprimidos.
En el segundo agregué la -E
opción de sudo
preservar 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.