我知道许多程序使用颜色 – (vim,ack,color-l等等),但是仍然有很多情况下你被黑白的困住了。
有一些脚本会根据正则expression式来输出颜色(比如“做任何匹配的狗”红色“),但是这些脚本必须用pipe道调用 – 例如:”cat myfile | color dog red“,这对于任何事情都是没有用的互动。
我正在寻找的东西是挂钩terminal模拟器(或terminal,实际上是这样)和颜色与给定的正则expression式匹配的任何东西,独立于我正在使用的shell或程序。 如果这与ncurses一起工作,那也是非常棒的。 我有太多的黑白程序,如果我能指定一个关键字列表来突出显示/打印颜色,当它们出现或键入时,这将是非常好的。
我使用的可能使用GNOMEterminal的Guake控制台,我不知道GNOME是否已经有了这个function。
简短的版本是: 为什么,是的,你可以从shellpipe道输出,就像任何其他程序一样。
从那里,你可以使用任何你喜欢的,比如说
$ bash | sed "$(echo -e "s@dog@\e[31mdog\e[0m@g; s@more here@more here@g;")"
以为我会加上我的'彩虹'。 请享用:
for((b=0;$b<8;b++)); do echo -ne "\e[4${b}m4$b : "; \ for((f=0;$f<8;f++)); do echo -ne "\e[3${f}m3${f}"; done; echo -e "\e[0m"; done
我仍然在寻找这个function的Linuxterminal模拟器,但是对于那些阅读macOS X的人来说:
^.*\[ERROR\].*$并设置动作为“突出显示文本”,参数为“红色前景”。 我没有一个解决scheme,但我曾想过这种程序应该如何运作。 你所问的不是直截了当的。
例如,假设你的正则expression式是简单的“花”。 1.如果terminal输出为“f”“较低”,我们应该进行着色。 或者使用编辑器,我们首先键入“lower”,然后转到单词的开头,然后键入“f”。 2.如果terminal输出是“花”,我们应该取消已经执行的着色。 3.如果输出缓慢,说“花”中的所有字符之间的延迟时间为5秒,则不应该烦恼地停止输出,而应该能够立即执行着色。
要么function应该非常紧密地与terminal程序(如你所build议的)耦合,检查是否任何指定的正则expression式匹配当前行,然后做着色。 或者为了使它更有用,我们可以使用像terminal设备一样的程序(有点像/ usr / bin / script),并跟踪屏幕输出,为此需要知道terminal行为; 在这种情况下,我们也应该能够重新显示不同颜色的字符(执行着色和取消已经执行的着色)。
你提供很好的小编程思想…
我很确定KDE Konsole(至lessKDE3版本)可以做到这一点,但是我没有看到KDE4的支持。
你可以用grep做这样的事情:
grep -C 99999 --color <whatever>
这应该突出匹配,但有很多上下文,作为整个文件。
有可能比这更好的解决scheme,但你可能能够工作一些简单的预期: http : //expect.nist.gov/ 。 如果您宁愿避免使用TCL,也希望有许多其他编程/脚本语言的库可用。
一般来说,TCL用于自动化交互式程序,但也可以使它们交互。
我会给你一些代码,但我自己也没有用过它。