3

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

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

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

bad config line X in file .gitconfig`

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

4

1 回答 1

4

必须转义反斜杠。从 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"; };
于 2017-02-22T23:02:56.263 回答