制作和管道后保持较少的颜色


5

在使用“make 2>& 1”编译某些程序后,我想保持颜色较少。 “grep”和“ls”命令有类似的主题,但解决方案不适用于此命令。

例如,

make 2>&1 | less -R 

不起作用。

谢谢你的帮助。

Answers:


7

最简单的解决方案是:

unbuffer make |& less -r

这是基于答案 在管道到发球台时保持颜色

我不得不“sudo apt-get install expect”来安装unbuffer命令。

请注意,less的“-r”选项告诉它显示ANSI颜色代码,同时使用|& STDOUT和STDERR中的管道。


2

我认为你需要将特殊参数传递给gcc。试试这个,让我知道它是否有效:

export CXXFLAGS="-fdiagnostics-color"
#or
export CFLAGS="-fdiagnostics-color"
make 2>&1 | less -R 

这是解决方案的第一步。 makefile包含gcc命令,选项“-fdiagnostics-color”是在gcc和pipe之后保持颜色所必需的。然而,制造和管道后不保留颜色。即使我使用一个只有一个“gcc”命令的简单Makefile而没有别的。
fylou

好的我明白了这个问题。您的解决方案部分工作您的CFLAGS可以被任何makefile覆盖。我想要的是在makefile中使用shell别名。别名g ++ =“g ++ -fdiagnostics-color = always”是不够的,或者不知道更清洁的解决方案。
fylou

部分解决方案是使用make -e,它使得从环境中获取的变量优先于来自makefile的变量。在我的情况下这不方便。
fylou

你尝试过小写选项吗? -r 对于 less
SΛLVΘ

@fylou为什么别名对你来说不是一个好的解决方案?看起来其他任何东西都会比这更糟糕。
cristi
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.