Colorizing echo在Solaris中有效,但在Linux中不起作用

Sky*_*ine 0 linux bash shell solaris colors

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

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

echo  "\033[1;32mauto update\033[m"
Run Code Online (Sandbox Code Playgroud)

在Solaris中 - >它以绿色正确显示文本"自动更新"

在Linux - >它显示错误的文本,没有颜色编码:"\ 033 [1; 32mauto update\033 [m"

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

export PS1='${USER}@${HOST%%.*} ${PWD}> '
Run Code Online (Sandbox Code Playgroud)

感谢你能帮助我在Linux中使用颜色.谢谢

tha*_*guy 5

这很好地说明了为什么echo不被认为是便携式的.

dash和Solaris上sh:

echo    "\033[1;32mauto update\033[m"   # Works
echo -e "\033[1;32mauto update\033[m"   # Fails (prints -e)
Run Code Online (Sandbox Code Playgroud)

bash,ashksh:

echo    "\033[1;32mauto update\033[m"   # Fails (doesn't interpret escapes)
echo -e "\033[1;32mauto update\033[m"   # Works
Run Code Online (Sandbox Code Playgroud)

你可以改用printf:

printf '\033[1;32mauto update\033[m\n'  # Works on all platforms
Run Code Online (Sandbox Code Playgroud)