66 votes

"less" ne décompresse pas automatiquement les fichiers gzippés

Sur Fedora/Redhat/CentOS, le fichier less semble détecter comme par magie un fichier gzippé et le décompresser à la volée, de sorte que vous pouvez le faire :

less my_stuff.csv.gz

Je viens de remarquer que cela ne fonctionne pas sur Ubuntu 11.

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

J'ai examiné mes VM CentOS pour voir s'il n'y avait pas un alias Shell magique qui le fasse fonctionner, mais il ne semble pas y en avoir. Le support gzip est-il simplement intégré au binaire CentOS ?

Si quelqu'un sait comment cela fonctionne sous CentOS et/ou comment le faire fonctionner sous Ubuntu, je lui en serais reconnaissant.

Je suis conscient que je peux faire

zcat my_stuff.csv.gz | less

mais cela ferait que mon clavier s'userait plus rapidement.

50voto

enzotib Points 86709

less ne le font pas par défaut, mais il y a une ligne dans la version par défaut de l'application ~/.bashrc qui modifient le comportement par défaut :

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

Veillez à ne pas supprimer ou commenter cette ligne.
Avec ceci en place, vous pouvez paginer les fichiers zippés et non zippés sans le savoir, comme dans

less /var/log/dpkg.log*

où certains des journaux peuvent être zippés et d'autres non zippés.

Pour le compte root auquel on accède par sudo vous ne pouvez pas faire la même chose, mais il existe deux solutions de contournement :

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

Dans le premier cas, j'ai utilisé zless qui fonctionne également pour les fichiers non zippés.
Dans le second, j'ai ajouté le -E option pour sudo pour préserver vos variables d'environnement, pour faire moins de travail comme vous le souhaitez.

30voto

jhornnes Points 1211

Moins ne peut pas lire les fichiers gzippés, vous pouvez le vérifier dans sa page de manuel. Il existe un script, installé par défaut dans Ubuntu et la plupart des distros, appelé zless qui fonctionne comme vous l'avez décrit.

La réponse est donc d'utiliser :

zless my_stuff.csv.gz

La différence entre Fedora et Ubuntu est que Fedora définit la variable d'environnement LESSOPEN pour forcer l'argument à travers lesspipe :

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

Notez que cette commande ne fonctionnera pas sous Ubuntu.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X