使用管道从 grep 到 less 时获取彩色结果

使用管道从 grep 到 less 时获取彩色结果

我经常使用 grep 的 --colour 选项,但也经常使用 less。如何将 grep 结果通过管道传输到 less 并保留颜色。(或者这可能吗?)

grep "search-string" -R * --colour | less 

编辑

我正在寻找直接的解决方案或与此等效的任何解决方案。

答案1

当您简单地运行grep --color它时grep --color=auto,它会检测输出是否是终端,如果是,则启用颜色。但是,当它检测到管道时,它会禁用着色。以下命令:

grep --color=always -R "search string" * | less

将始终启用着色并覆盖自动检测,并且您将获得颜色突出显示less

编辑:尽管使用less对我来说只是有用的,但也许旧版本需要-R标志来处理颜色,正如这里建议的那样。

答案2

您可以将其放入您的.bashrc文件中:

export GREP_OPTIONS="--color=always"

或者创建这样的别名:

alias grepc="grep --color=always"

并且您将需要使用-R选项less,正如therefromhere指出的那样

答案3

在这种情况下,我更喜欢实际创建小的 sh 文件并将它们放在 上/usr/local/bin
我通常grep在 上使用递归方式pwd,所以这是我的个人脚本:

#!/bin/sh
grep --color=always -r "$@" . | less -R

然后我就把它复制为/usr/local/bin/g(是的,我经常使用它)

答案4

你可以运行

grep --color=always -R "search string" * | less -r

-r在 之后加上标志less,这样才能正常工作。

相关内容