在Git函数中为别名输出添加颜色

4

我正在尝试添加一个复杂的git别名,它可以在执行命令时输出消息。我想将一些消息着色(例如,错误为红色等)。

[alias]
    test = !"f() { echo "\033[31mHello\033[0m World"; }; f"

然而,当我执行该别名时,我会收到一个错误:
bad config line X in file .gitconfig`

在终端中运行相同的命令 echo "\033[31m你好\033[0m 世界" 可以成功地给文字着色。

1个回答

5

反斜杠必须转义。从git-config文档中得知...

在双引号内,双引号 " 和反斜杠 \ 字符必须转义:使用 \" 代替 ",使用 \ 代替反斜杠。

除了 \" 和 \ 之外,还识别以下转义序列:\n 表示换行符(NL),\t 表示水平制表符(HT、TAB),\b 表示退格键(BS)。其他字符转义序列(包括八进制转义序列)无效。

这将起作用。

test = !"f() { echo \"\\033[31mHello\\033[0m World\"; }; f"

但是,如果你的别名太复杂,需要定义函数来实现,这可能会变得非常混乱。我建议将这些函数放在它们自己的文件中,并进行源代码引用。

test = !"source ~/.gitfuncs; f"

$ cat ~/.gitfuncs
f() { echo "\033[31mHello\033[0m World"; };

我差点就成功了,可能是我漏掉了其中一个转义字符。我打算在完成工作后再把它解决掉 - 不过还是谢谢你提供的信息! - Jared Knipp

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接