Fish shell 输出文本着色的自定义函数
Fish shell custom function for output text coloring
当在终端仿真器(如终结器)中使用 fish shell 以及输出大量文本的命令时,在输出上获得一些颜色编码可能很有用。我知道脚本可以将颜色代码信息添加到输出,如“grep --color=auto”。我想可以修改 fish 终端以扫描输出并将其添加到特殊位置吗?
我想要做的是任何脚本输出中出现的文本 "error" 始终标记为红色,而 "warning" 始终标记为黄色。任何人都知道这是否可以通过在 ~/.config/fish/functions 目录或类似目录中引入函数文件来实现?
这基本上是一种分层违规行为。通常外部命令的输出不会通过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
)
在我的测试中,这会导致明显的速度下降,即使解决了这个问题,它仍然会变慢,因为它必须匹配每一行。
真的,真正的解决方案是使用任何工具来给自己上色,因为它知道输出 的意思。所有这些都可以做的就是寻找关键字。
为了一般的输出着色需求,我将 grc
插件添加到 Tackle 正是为了这个目的。
当在终端仿真器(如终结器)中使用 fish shell 以及输出大量文本的命令时,在输出上获得一些颜色编码可能很有用。我知道脚本可以将颜色代码信息添加到输出,如“grep --color=auto”。我想可以修改 fish 终端以扫描输出并将其添加到特殊位置吗?
我想要做的是任何脚本输出中出现的文本 "error" 始终标记为红色,而 "warning" 始终标记为黄色。任何人都知道这是否可以通过在 ~/.config/fish/functions 目录或类似目录中引入函数文件来实现?
这基本上是一种分层违规行为。通常外部命令的输出不会通过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
)
在我的测试中,这会导致明显的速度下降,即使解决了这个问题,它仍然会变慢,因为它必须匹配每一行。
真的,真正的解决方案是使用任何工具来给自己上色,因为它知道输出 的意思。所有这些都可以做的就是寻找关键字。
为了一般的输出着色需求,我将 grc
插件添加到 Tackle 正是为了这个目的。