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

41

Sur Fedora / Redhat / CentOS, la commande less semble détecter comme par magie un fichier compressé et le décompresser à la volée, ce qui vous permet de:

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'examine mes machines virtuelles CentOS pour voir s'il y a des alias de shell qui les font fonctionner, mais cela ne semble pas être le cas. Le support gzip est-il simplement intégré au binaire CentOS?

Si quelqu'un sait comment cela fonctionne sur CentOS et / ou comment il peut être fait pour fonctionner sur Ubuntu, je vous en serais reconnaissant.

Je sais que je peux faire

zcat my_stuff.csv.gz | less

mais cela rendrait mon clavier plus vite usé.

    
posée AndrewR 23.09.2011 - 08:53
la source

2 réponses

34

less ne le font pas par défaut, mais une ligne dans la valeur par défaut ~/.bashrc modifie 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 rechercher des fichiers compressés et non compressés sans savoir, comme dans

less /var/log/dpkg.log*

où certains journaux peuvent être compressés et d’autres non compressés.

Pour le compte root accessible via 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 compressés.
Dans la seconde, j'ai ajouté l'option -E à sudo pour préserver vos variables d'environnement, afin de réduire le travail comme prévu.

    
réponse donnée enzotib 23.09.2011 - 09:29
la source
19

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

Donc, la réponse est 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 via lesspipe:

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

Notez que cette commande ne fonctionnera pas dans Ubuntu.

    
réponse donnée Javier Rivera 23.09.2011 - 09:15
la source

Lire d'autres questions sur les étiquettes