在 Linux 和 FreeBSD 之间不断切换时,我总是遇到这个问题。当我这样做时:
less something.tgz
Linux 系统(嗯……确切地说是 Ubuntu)向我显示文件列表,这通常是我想要的,而 FreeBSD 显示二进制内容。这种行为(显示文件内容)在 Linux 上是如何实现的?是否可以在 FreeBSD 系统上复制它?
答案1
查看Ubuntu 机器上的lesspipe
(或) 的手册页。lessopen
对于 Debian/Ubuntu 版本,您只需添加
eval "$(lesspipe)"
到你的.bashrc
。
在 FreeBSD 上,你可以lesspipe.sh
在名为 lesspipe 的单独端口中找到该脚本,它使用来自源码(尽管没有上面的便捷设置——less 的手册页有更多信息)。
这是我在以下位置找到的另一个版本的脚本鲜肉:lesspipe,一个用于浏览器 less 的插件
答案2
我要扮演一个脾气暴躁的老头,大喊“嘿,你们这些孩子,从我的草坪上走开!”但是......
你做得不对。
Less 和 more 是两个常见的分页程序,它们应该在管道命令字符串的末尾运行。这些程序不是为了读取任何随机类型的文件而设计的,例如 cpio 存档、tar 存档或 uuencoded gzipped tarred des 加密的 bzip2ed 文件。
学习 unix 的做事方式,你也会开始理解一大堆其他事情是怎么回事。这样你就会了解 stdin、stdout 和 stderr 之类的东西。
gzip -d < 文件 | tar -tvf - | less
你稍后就会感谢我。
答案3
您可能会看到一些有用的内容zless somefile.tgz
,但我认为您真正想要做的是:
tar ztvf somefile.tgz |less
适用于所有系统。请注意,t 只是告诉您有什么,而 x 则提取文件。
答案4
我从未见过它在.tgz
文件上起作用,只在.gz
文本文件上起作用,但也许它确实起作用。无论如何,许多 Linux 发行版less
都会检测文件是否经过 gzip 压缩,并在显示时解压缩流。我不能代表 FreeBSD 发言,但至少在 OpenBSD 上,zless
如果查看经过 gzip 压缩的文本文件,则需要使用它。我想它也包含在 FreeBSD 中,或者至少可以从 ports 树中获得。