当在终端仿真器(例如终结器)中使用fish shell以及输出大量文本的命令时,在输出上获得一些颜色编码会很有用。我知道脚本可以向输出添加颜色代码信息,如“ grep --color = auto ”。我想可以修改鱼终端扫描输出并将其添加到特殊位置?
我想要做的是,任何脚本输出中出现的文本“错误”始终标记为红色,“警告”始终标记为黄色。有人知道是否可以通过在〜/ .config / fish / functions 目录或类似的地方引入功能文件来实现这一点吗?
答案 0 :(得分:3)
这基本上是一个分层违规。通常外部命令的输出不会通过shell返回。它直接进入终端。
此外,您在此处执行的任何操作都有可能降低输出速度。 (由于鱼问题#1396,这可能相当极端)。
也就是说,如果你总是使用这样的函数,它是可能的
function colorstuff
while read -l input
switch $input
case "*error*"
set_color red
echo $input
case "*warning*"
set_color yellow
echo $input
case "*"
set_color normal
echo $input
end
end
set_color normal
end
像somecommand | colorstuff
一样使用它。 (如果您还希望使用stderr着色,可以添加^&1
在我的测试中,这会导致明显的减速,即使修复了这个问题,它仍然会变慢,因为它必须匹配每一行。
真的,真正的解决方案是用于为自己着色的任何工具,因为它知道输出意味着什么。所有这一切都可以找到关键字。
答案 1 :(得分:0)
对于常规输出着色需求,我将grc
插件添加到Tackle以实现此目的。