函数中的 Git 别名输出着色

Jar*_*ipp 4 git bash git-alias

我试图添加一个复杂的 git 别名,它将在执行命令时回显消息。我想对一些消息进行着色(红色表示错误等)。

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

但是,当我执行别名时,出现错误:

bad config line X in file .gitconfig`
Run Code Online (Sandbox Code Playgroud)

echo "\033[31mHello\033[0m World"在终端中运行相同的命令可以很好地着色。

Sch*_*ern 5

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

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

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

这会起作用。

test = !"f() { echo \"\\033[31mHello\\033[0m World\"; }; f"
Run Code Online (Sandbox Code Playgroud)

但是,如果您的别名非常复杂,以至于您需要定义可能会变得一团糟的函数。我建议将这些函数放在自己的文件中并获取它。

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

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