macOS 可以使用 brew install less
安装最新的 GNU Less.
GNU Less 常用的选项
# set options for less
export LESS='--quit-if-one-screen --ignore-case --status-column --LONG-PROMPT --RAW-CONTROL-CHARS --HILITE-UNREAD --tabs=4 --no-init --window=-4'
# short version
export LESS='-F -i -J -M -R -W -x4 -X -z-4'
在 ~/.bashrc
或 ~/.zshrc
中添加下面的设置,可以使 man
命令显示更多色彩
# Set colors for less. Borrowed from https://wiki.archlinux.org/index.php/Color_output_in_console#less
export LESS_TERMCAP_mb=$'\E[1;31m' # begin bold
export LESS_TERMCAP_md=$'\E[1;36m' # begin blink
export LESS_TERMCAP_me=$'\E[0m' # reset bold/blink
export LESS_TERMCAP_so=$'\E[01;44;33m' # begin reverse video
export LESS_TERMCAP_se=$'\E[0m' # reset reverse video
export LESS_TERMCAP_us=$'\E[1;32m' # begin underline
export LESS_TERMCAP_ue=$'\E[0m' # reset underline
Input Preprocessor 和 Input Pipe
less
允许定义一个 输入预处理器 (Input Preprocessor),可以在打开文件之前对文件内容进行预处理。输入预处理器通常是一个可执行文件或 shell 脚本,它将处理过的内容写到一个替换文件并显示给用户,但还是显示原来的文件名,所以用户感觉打开的是原始文件。要定义输入预处理器,需要将调用命令行设置在环境变量 LESSOPEN,如:LESSOPEN="lesspipe.sh %s"
,参数 %s
在调用时会被替换成要处理的文件名。
也可以让输入预处理器直接将文件内容管道输出给 less
,而不是放到替换文件,这种处理方式称为 输入管道 (Input Pipe)。要使用输入管道,需要将 LESSOPEN 环境变量中命令行的第一个字符设置为竖线 (|
),如:|LESSOPEN="lesspipe.sh %s"
,表明输入预处理器现在是一个输入管道。
使用 lesspipe 作为输入预处理器
lesspipe 是最常用的 less
输入预处理器,可以实现以下功能:
- 查看压缩包以及压缩包内的单个文件内容
- 查看目录
- 查看非文本文件,例如word文档
- 代码高亮
查看 README 或 man lesspipe
来了解 lesspipe.sh
所支持功能的详细信息。
Homebrew 安装
brew install lesspipe
安装后会自动将 lesspipe.sh
,code2color
, tarcolor
和 sxw2xt
链接到 /usr/local/bin/
Github 安装
git clone https://github.com/wofr06/lesspipe.git
cd lesspipe
./configure --yes
cp lesspipe.sh sxw2txt code2color tarcolor /usr/local/bin
# 复制 lesspipe.1 手册页到系统手册页目录
cp lesspipe.1 /usr/local/share/man/man1/
man lesspipe
设置 LESSOPEN 启用输入预处理器
export LESSOPEN="|/usr/local/bin/lesspipe.sh %s"
示例
# 查看 tar 压缩包内容
less lesspipe.tar.gz
# 查看 tar 压缩包内某个文件内容
less lesspipe.tar.gz:lesspipe/README
# 解压 tar 压缩包内某个文件
less lesspipe.tar.gz:lesspipe/README > ./README
# 查看多层压缩包嵌套
less a1.tgz:b2.tgz:README
# 查看目录
less /etc
使用 Pygments 作为输入预处理器
安装 pygments
brew install pygments
# or
pip install pygments
ln -s ~/.pyenv/shims/pygmentize /usr/local/bin/pygmentize
设置 LESSOPEN
export LESSOPEN="|/usr/local/bin/pygmentize -g -O style=solarized-dark %s"