用于输出文本着色的鱼壳自定义功能

时间:2016-10-13 10:33:53

标签: linux shell terminal fish terminal-emulator

当在终端仿真器(例如终结器)中使用fish shell以及输出大量文本的命令时,在输出上获得一些颜色编码会很有用。我知道脚本可以向输出添加颜色代码信息,如“ grep --color = auto ”。我想可以修改鱼终端扫描输出并将其添加到特殊位置?

我想要做的是,任何脚本输出中出现的文本“错误”始终标记为红色,“警告”始终标记为黄色。有人知道是否可以通过在〜/ .config / fish / functions 目录或类似的地方引入功能文件来实现这一点吗?

2 个答案:

答案 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以实现此目的。