我正在尝试添加一个复杂的git别名,它可以在执行命令时输出消息。我想将一些消息着色(例如,错误为红色等)。
[alias]
test = !"f() { echo "\033[31mHello\033[0m World"; }; f"
然而,当我执行该别名时,我会收到一个错误:
bad config line X in file .gitconfig`
在终端中运行相同的命令 echo "\033[31m你好\033[0m 世界"
可以成功地给文字着色。
反斜杠必须转义。从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"; };