我知道很多程序都使用颜色 - (vim、ack、color-ls 等等),但仍然有很多情况下你会被黑白卡住。
有一些脚本会根据正则表达式对输出进行着色(即“使任何匹配 'dog' 红色的东西”),但必须使用管道调用这些脚本 - 例如:"> cat myfile | color dog red" 这对任何事情都没有用交互的。
我正在寻找的是挂钩终端模拟器(或实际执行此操作的终端)并为与给定正则表达式匹配的任何内容着色的东西,独立于我当前使用的外壳或程序。如果这也适用于 ncurses,那就太棒了。我有太多的单色程序,如果我可以指定一个关键字列表以在它们出现或输入时突出显示/着色,那就太好了。
我使用可能使用 GNOME 终端的 Guake 控制台,我不知道 GNOME 是否已经具有此功能。
简短的版本是:为什么,是的,您可以像任何其他程序一样通过管道输出 shell。
从那里,你可以使用任何你喜欢的东西,比如,说
以为我会添加我的“彩虹”。享受:
我仍在寻找具有此功能的 linux 终端仿真器,但对于那些在 macOS X 上阅读本文的人:
^.*\[ERROR\].*$
并将操作设置为“突出显示文本”,并将参数设置为“红色前景”。可能有比这更好的解决方案,但是您可以通过 expect: http://expect.nist.gov/解决一些简单的问题。如果您宁愿避免使用 TCL,则可以使用许多其他编程/脚本语言的期望库。
通常,TCL 用于自动化交互程序,但也可以使它们交互。
我会给你一些代码开始,但我自己已经有一段时间没有使用它了。
我没有解决方案,但我已经考虑过这种程序应该如何运行。你问的不是直截了当的。
例如,假设您的正则表达式是简单的“花”。1.如果终端输出是“f”“lower”我们应该进行着色。或者使用编辑器,我们首先输入“lower”,然后转到单词的开头并输入“f”。2.如果终端输出是“花”我们应该取消已经执行的着色。3. 如果输出很慢,比如说“花”中所有字符之间有五秒的延迟,我们不应该烦人地停止输出,应该能够立即进行着色。
该功能应该与终端程序非常紧密地耦合(就像您建议的那样),检查是否有任何指定的正则表达式与当前行匹配,然后进行着色。或者为了让它更有用,我们可以使用一个程序(有点像 /usr/bin/script),它的作用类似于终端设备并跟踪屏幕输出,为此它需要非常了解终端行为;在这种情况下,我们还应该能够用不同的颜色重新显示字符(执行着色并取消已经执行的着色)。
您提供了不错的小编程想法...
我很确定 KDE Konsole(至少是 KDE3 版本)可以做到这一点,但是我看不到 KDE4 中的支持。
您可以使用 grep 执行以下操作:
这应该突出显示匹配项,但具有如此多的上下文以成为整个文件。
带有匹配器插件的 urxvt 具有此功能,例如,如果您想更改看起来像电影 IP 地址的字符串的前景(4x3 数字,中间有点),您可以在 .Xdefaults 中包含以下内容:
它会实现这一点。您将需要向其中添加更多内容,但它可以工作。