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

“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 VM,看是否有一些 shell 别名魔法可以让它工作,但似乎没有。gzip 支持是否内置在 CentOS 二进制文件中?

如果有人知道它在 CentOS 上如何运行和/或如何在 Ubuntu 上运行,我将不胜感激。

我知道我能做到

zcat my_stuff.csv.gz | less

但这会让我的键盘磨损得更快。

答案1

less默认情况下不会这样做,但是默认情况下有一行~/.bashrc可以改变默认行为:

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

确保不要删除或注释此行。
有了这个,你可以在不知情的情况下分页压缩文件和非压缩文件,例如

less /var/log/dpkg.log*

其中一些日志可以压缩,另一些则不能压缩。

对于通过以下方式访问的 root 帐户,sudo您无法执行相同的操作,但有两种解决方法:

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

在第一种情况下,我使用了zless,这也适用于非压缩文件。
在第二种情况下,我添加了-E选项来sudo保留您的环境变量,以减少您期望的工作量。

答案2

较少的无法读取 gzip 文件,您可以在其手册页中查看。Ubuntu 和大多数发行版中默认安装了一个脚本,名为,其工作原理正如您所描述的那样。

因此答案是使用:

zless my_stuff.csv.gz

Fedora 和 Ubuntu 的区别在于 Fedora 设置了环境变量莱索普强制通过 lesspipe 传递参数:

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

请注意,此命令在 Ubuntu 中不起作用。

相关内容