我有2个不同的服务器,我使用相同的网络用户登录并运行相同的脚本。 一个是Solaris,另一个是Linux。
脚本中的示例回显行在这些服务器上的工作方式不同:
echo "\033[1;32mauto update\033[m"
在Solaris中 - >它以绿色
正确显示文本“自动更新”在Linux中 - >它显示错误的文字,没有颜色编码:“\ 033 [1; 32mauto update \ 033 [m”
.bashrc配置文件具有PS1的以下行:
export PS1='${USER}@${HOST%%.*} ${PWD}> '
感谢你能帮助我在Linux中使用颜色。 感谢
答案 0 :(得分:5)
这很好地说明了为什么echo
不被视为可移植的。
在dash
和Solaris sh
上:
echo "\033[1;32mauto update\033[m" # Works
echo -e "\033[1;32mauto update\033[m" # Fails (prints -e)
在bash
,ash
和ksh
:
echo "\033[1;32mauto update\033[m" # Fails (doesn't interpret escapes)
echo -e "\033[1;32mauto update\033[m" # Works
您可以使用printf
:
printf '\033[1;32mauto update\033[m\n' # Works on all platforms