问题描述
在Fedora /Redhat /CentOS上,less
命令似乎神奇地检测到一个gzip压缩文件并在运行时对其进行解压缩,因此您可以执行以下操作:
less my_stuff.csv.gz
我刚刚注意到这在Ubuntu 11上不起作用
less my_stuff.csv.gz
"my_stuff.csv.gz" may be a binary file. See it anyway?
我一直在检查我的CentOS虚拟机,看看是否有一些shell别名魔法让它起作用,但似乎没有。 gzip支持是否内置于CentOS二进制文件中?
如果有人知道它如何在CentOS上工作和/或如何在Ubuntu上工作,我将不胜感激。
我知道我能做到
zcat my_stuff.csv.gz | less
但这会让我的键盘磨得更快。
最佳解决方案
默认情况下,less
不会这样做,但默认~/.bashrc
中有一行更改默认行为:
[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"
请务必不要删除或评论此行。有了这个,您可以在不知道的情况下页面压缩和non-zipped文件,例如
less /var/log/dpkg.log*
其中一些日志可以压缩,其他一些日志可以压缩non-zipped。
对于通过sudo
访问的root帐户,您无法执行相同的操作,但有两种解决方法:
-
sudo zless file*
-
sudo -E less file*
在第一种情况下,我使用了zless
,它也适用于non-zipped文件。在第二个中,我将-E
选项添加到sudo
以保留您的环境变量,以减少您期望的工作量。
次佳解决方案
少读取gzip压缩文件,可以在手册页中查看。默认情况下,在Ubuntu和大多数发行版中安装了一个名为zless的脚本,如您所述。
所以答案是使用:
zless my_stuff.csv.gz
Fedora和Ubuntu之间的区别在于Fedora设置环境变量LESSOPEN以通过lesspipe强制参数:
echo $LESSOPEN
||/usr/bin/lesspipe.sh %s
请注意,此命令在Ubuntu中不起作用。