是否可以对通过管道传输到更多的输出进行着色?

问题描述 投票:0回答:3

我有

ls
grep
别名为
ls --color=auto
grep --color=auto
用于彩色输出,但是当我通过管道传输到更多时,颜色会丢失。

more
less
似乎都没有用于对输出进行着色的参数。有什么办法可以做到这一点吗?

linux bash unix pipe
3个回答
18
投票

问题不在于

more
less
没有对它们的输出进行着色,而是
ls
没有输出颜色,因为它连接到另一个进程而不是终端。

您无法轻松地让

ls
在输出颜色时变得更加智能,但您可以添加
--color
以在将其管道传输到
more

时强制其输出颜色

当您有颜色输出时,使用

... |less -R
使
less
将颜色传递到终端,而不是将转义码显示为文本


3
投票
ls --color | less -r

在 Linux、GNU 用户空间上测试。


1
投票

在 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
的手册页。

© www.soinside.com 2019 - 2024. All rights reserved.