我目前正在尝试显示所有 Makefile 目标以构建make help
命令,并且通过以下方式使其工作:
help:
@grep -E '^[a-zA-Z0-9_-]+:.*?## .*$$' $(MAKEFILE_LIST) \
| sed -n "s/^\(.*\): \(.*\)##\(.*\)/$(printf '\033[0;1;31m')\1$(printf '\033[0m') \2 \3/p" \
| column -t -s '##'
正如您在 sed 命令中看到的,我将第一列(目标名称)显示为红色。
现在,当我在 shell 中运行这个命令时,输出非常好,颜色显示出来了。但是当我运行时make help
,所有文本都是白色的。
命令中是否缺少我的东西,或者有没有办法为 Makefiles “启用”颜色?
您忘记通过将它们加倍来逃避部分中的
$
符号,因此该部分本身也是如此并且没有找到扩展。如果您愿意,可以使用make 运行命令。$(printf...)
$$
make
$(shell printf '\033[0;1;31m')