当前位置: 首页>>技术教程>>正文


“less”不会自动解压缩gzip压缩文件

, ,

问题描述

在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帐户,您无法执行相同的操作,但有两种解决方法:

  1. sudo zless file*

  2. 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中不起作用。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/2236.html,未经允许,请勿转载。