我经常使用 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
,这样才能正常工作。