着色回声在 Solaris 中有效,但在 Linux 中无效

Colorizing echo works in Solaris but doesn't work in Linux

我有 2 个不同的服务器,我在其中使用相同的网络用户和 运行 相同的脚本登录。 一个是 Solaris,另一个是 Linux.

脚本中的示例回显行在这些服务器上的工作方式不同:

echo  "3[1;32mauto update3[m"

在 Solaris 中 -> 它以绿色正确显示文本 "auto update"

在 Linux -> 它显示文本不正确且没有颜色编码:"\033[1;32mauto update3[m"

.bashrc 配置文件具有以下行 PS1:

export PS1='${USER}@${HOST%%.*} ${PWD}> '

如果你能帮助我在 Linux 中使用颜色,我将不胜感激。 谢谢

这很好地说明了为什么 echo 不被认为是可移植的。

dash 和 Solaris sh 上:

echo    "3[1;32mauto update3[m"   # Works
echo -e "3[1;32mauto update3[m"   # Fails (prints -e)

bashashksh 上:

echo    "3[1;32mauto update3[m"   # Fails (doesn't interpret escapes)
echo -e "3[1;32mauto update3[m"   # Works

您可以改用 printf:

printf '3[1;32mauto update3[m\n'  # Works on all platforms