Bash Shell less

“less 可不止如此(less is more)!”你希望能够更充分地利用分页程序 less 的特性。

这里的 less is more 是一个双关语。原话是由著名的现代主义建筑大师 Ludwig Mies van der Rohe 于 1928 年提出的,意为“少即是多”。

解决方案

阅读 less 的手册页,使用 $LESS 变量以及~/.lessfilter~/.lesspipe 文件。

less 可以从 $LESS 变量中获取选项,因此无须再创建包含偏好选项的别名,只需将选项放入该变量即可。长短选项都能接受,在命令行上指定的选项会覆盖变量中的选项。我们建议在 $LESS 变量中使用长选项,因为这种选项形式更易于阅读。例如:

export LESS="--LONG-PROMPT --LINE-NUMBERS --ignore-case --QUIET"

这只是个开始而已。less 能利用输入预处理器(input preprocessor)进行扩展,此处理器可以是程序或脚本,负责对 less 要显示的文件进行预处理。这是通过对环境变量 $LESSOPEN$LESSCLOSE 做相应设置来实现的。

虽然可以自己动手,但时间能省则省(阅读完随后的讨论部分),不妨试试 Wolfgang Friebel 的 lesspipe.sh。该脚本在单独运行时会设置和导出环境变量

$LESSOPEN。
$ ./lesspipe.sh
LESSOPEN="|./lesspipe.sh %s"
export LESSOPEN
$

你只需将其放入 eval 语句,例如 eval $(/path/to/lesspipe.sh)eval '/path/to/lesspipe.sh' 中,然后像平常那样使用 less 就行了。1.82 版支持的部分格式包括:

gzip、compress、bzip2、zip、rar、tar、nroff、ar 归档、pdf、ps、dvi、共享库、可执行文件、目录、RPM、Microsoft Word、OASIS(OpenDocument、Openoffice、Libreoffice)格式、Debian、MP3 文件、图像格式(png、gif、jpeg、tiff……)、utf-16 文本、iso 镜像、可通过 /dev/xxx 访问的可移动介质文件系统。

有一点要注意,这些格式需要各种外部工具,没有的话,lesspipe.sh 示例中的有些特性是无法使用的。根据你当前可用的工具,该软件包中的 ./configure(或 make)脚本还可以生成适用于系统的过滤器版本。

讨论

less 的独特之处在于,在我们碰到过的所有单一测试系统中,它都是已经默认安装好的 GNU 工具。这一点甚至连 bash 都不敢保证。抛开版本差异不谈,less 在所有系统上的表现都一模一样。

但是,对于 lesspipe*$LESSOPEN 过滤器而言,可就不是这么回事了。除了 上文 中列出的那些,我们还发现了功能各异的其他版本。

  • Red Hat 包含 /usr/bin/lesspipe.sh,但不能像 eval '/path/to/less pipe.sh' 这样使用。
  • Debian 包含 /usr/bin/lesspipe,但不能用于 eval,另外还通过~/.lessfilter 文件支持额外的过滤器。
  • SUSE Linux 包含 /usr/bin/lessopen.sh,但不能用于 eval。
  • FreeBSD 包含一个不起眼的 /usr/bin/lesspipe.sh(不能用于 eval,不支持 .Z.gz.bz2)。
  • Solaris、HP-UX、其他版本的 BSD 和 macOS 默认什么都没有。

要想知道自己的系统中是否有这些文件,可以试验一下。Debian 系统包含 lesspipe,但并未使用(因为没有定义 $LESSOPEN)。

$ type lesspipe.sh; type lesspipe; set | grep LESS
-bash3: type: lesspipe.sh: not found
lesspipe is /usr/bin/lesspipe
$

Ubuntu 系统包含并使用了 Debian lesspipe。

$ type lesspipe.sh; type lesspipe; set | grep LESS
-bash: type: lesspipe.sh: not found
lesspipe is hashed (/usr/bin/lesspipe)
LESSCLOSE='/usr/bin/lesspipe %s %s'
LESSOPEN='| /usr/bin/lesspipe %s'
$

我们推荐你下载、配置并使用 Wolfgang Friebel 的 lesspipe.sh,因为其功能最为全面。另外还建议你阅读 less 的手册页,其内容非常有意思。

酷客网相关文章:

赞(0)

评论 抢沙发

评论前必须登录!