着色回声在 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)
在 bash
、ash
和 ksh
上:
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
我有 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)
在 bash
、ash
和 ksh
上:
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