"less" dekomprimiert gzippte Dateien nicht automatisch

"less" dekomprimiert gzippte Dateien nicht automatisch

Unter Fedora/Redhat/CentOS lessscheint der Befehl eine gzippte Datei wie durch Zauberhand zu erkennen und sie sofort zu dekomprimieren, sodass Sie Folgendes tun können:

less my_stuff.csv.gz

Mir ist gerade aufgefallen, dass dies unter Ubuntu 11 nicht funktioniert

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

Ich habe meine CentOS-VMs untersucht, um zu sehen, ob es irgendeine Shell-Alias-Magie gibt, mit der es funktioniert, aber das scheint nicht der Fall zu sein. Ist die GZIP-Unterstützung einfach in die CentOS-Binärdatei integriert?

Wenn jemand weiß, wie dies unter CentOS funktioniert und/oder wie es unter Ubuntu zum Laufen gebracht werden kann, wäre ich dankbar.

Ich bin mir bewusst, dass ich das kann

zcat my_stuff.csv.gz | less

aber dadurch würde meine Tastatur schneller verschleißen.

Antwort1

lesstun Sie dies nicht standardmäßig, aber es gibt eine Zeile im Standard ~/.bashrc, die das Standardverhalten ändert:

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

Achten Sie darauf, diese Zeile nicht zu entfernen oder zu kommentieren.
Wenn diese Zeile vorhanden ist, können Sie gezippte und nicht gezippte Dateien auslagern, ohne es zu wissen, wie in

less /var/log/dpkg.log*

wobei einige der Protokolle gezippt und andere nicht gezippt werden können.

Für das über dieses Konto aufgerufene Root-Konto sudoist dies nicht möglich. Es gibt jedoch zwei Problemumgehungen:

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

Im ersten Fall habe ich verwendet zless, das funktioniert auch für nicht komprimierte Dateien.
Im zweiten habe ich die -EOption hinzugefügt, sudoIhre Umgebungsvariablen beizubehalten, um weniger Arbeit zu machen, als Sie erwarten würden.

Antwort2

Wenigerkann keine gzippten Dateien lesen, Sie können es in der Manpage nachlesen. Es gibt ein Skript, das standardmäßig in Ubuntu und den meisten Distributionen installiert ist, namenszlos, das funktioniert wie von Dir beschrieben.

Die Antwort lautet also:

zless my_stuff.csv.gz

Der Unterschied zwischen Fedora und Ubuntu besteht darin, dass Fedora die UmgebungsvariableWENIGER OFFENum das Argument durch Lesspipe zu zwingen:

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

Beachten Sie, dass dieser Befehl unter Ubuntu nicht funktioniert.

verwandte Informationen