我有
ls
和 grep
别名为 ls --color=auto
和 grep --color=auto
用于彩色输出,但是当我通过管道传输到更多时,颜色会丢失。
more
和less
似乎都没有用于对输出进行着色的参数。有什么办法可以做到这一点吗?
问题不在于
more
和 less
没有对它们的输出进行着色,而是 ls
没有输出颜色,因为它连接到另一个进程而不是终端。
您无法轻松地让
ls
在输出颜色时变得更加智能,但您可以添加 --color
以在将其管道传输到 more
时强制其输出颜色
当您有颜色输出时,使用
... |less -R
使 less
将颜色传递到终端,而不是将转义码显示为文本
ls --color | less -r
在 Linux、GNU 用户空间上测试。
在 macOS 10.15 Catalina (darwin 19.0.0) 上,您可以通过对 zsh 配置进行以下调整,对通过管道传输到
ls
、head
、grep
和 less
的 more
的输出进行着色:
~/.zshrc
alias less="less -R"
alias more="more -R"
~/.zshenv
export GREP_COLOR=always
export CLICOLOR_FORCE=true
运行
open x-man-page://command
打开命令 command
的手册页。