在 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
您无法执行相同的操作,但有两种解决方法:
sudo zless file*
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 中不起作用。