我希望我的Vagrant配置脚本运行一些检查,如果他们不满意则需要用户操作。很简单:
if [ ! -f /some/required/file ]; then
echo "[Error] Please do required stuff before provisioning"
exit
fi
但是,只要这不是真正的错误,我就会将echo
打印成绿色。我希望我的输出为红色(或者至少是不同的颜色)以提醒用户。
我试过了:
echo "\033[31m[Error] Blah blah blah"
在本地工作,但在Vagrant输出上,颜色代码被转义,我得到它以绿色回显。
这可能吗?
答案 0 :(得分:2)
这种情况正在发生,因为有些工具会将一些消息写入stderr
,然后Vagrant会将其解释为错误并以红色打印。
并非所有终端都支持ANSI色码,而Vagrant也不会照顾它。说,我不建议通过将单词发送到stderr
来为其着色,除非是错误。
要实现这一目标,您可以简单地:
echo "Your error message" > /dev/stderr
答案 1 :(得分:1)
您需要使用keep_color true,然后按预期工作;
config.vm.provision "shell", keep_color: true, inline: $echoes
$echoes = <<-ECHOES
echo "\e[32mPROVISIONING DONE\e[0m"
ECHOES
来自https://www.vagrantup.com/docs/provisioning/shell.html
keep_color(布尔值)-流浪者根据输出是来自stdout还是stderr来自动将颜色输出为绿色和红色。如果是这样,Vagrant将不会执行此操作,从而允许输出脚本中的本机颜色。
答案 2 :(得分:0)
Vagrant命令默认使用--no-color
选项运行。您可以尝试使用--color
设置颜色。 Vagrant的环境变量记录在案here。