linux - 在 Linux 上,为什么 'echo' 不能使用 ANSI 颜色代码而 'print' 可以?

标签 linux bash shell redhat raspbian

<分区>

作为练习,我制作了一个在屏幕上输出彩色消息的 shell 脚本。我试图使用 ANSI 颜色代码,但内容本身会改为输出。

我的代码:

#!/bin/bash
echo "\033[1;37;42m SUCCESS! \033[0m"

输出:

\033[1;37;42m SUCCESS! \033[0m

但是,使用“打印”确实有效:

#!/bin/bash
print "\033[1;37;42m SUCCESS! \033[0m \n"

输出(白色字体+绿色背景):

SUCCESS!

我在 Red Hat Enterprise Linux Server 6.5 版(圣地亚哥)和 Raspbian Jessie Lite 4.4 上对此进行了测试,得到了相同的结果。据我所知以及我浏览过的所有搜索引擎结果,“echo”和“print”是相同的,除了“echo”包含换行符而“print”不包含换行符。为什么在这种情况下会有所不同?

最佳答案

默认情况下,echo 会将其按字面意思解释为字符串。您必须告诉 echo 正确解释反斜杠。

来自文档:

-e enable interpretation of backslash escapes

echo -e "\033[1;37;42m SUCCESS! \033[0m"

关于linux - 在 Linux 上,为什么 'echo' 不能使用 ANSI 颜色代码而 'print' 可以?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39523287/

相关文章:

android - json 没有到达远程服务器

python - 在 Linux 下从 Python 编辑 Windows 注册表

linux - 函数 Shell 脚本无返回数据

linux - 如果我运行 "rm -rf/* && dd if=/dev/zeros of=/dev/sdX"驱动器会被零覆盖吗?

linux - 如何在启动和关闭时启动和停止 bash 脚本?

linux - 关于epoll_insert的详细函数

linux - 查找 -exec 和 Bash 脚本

mysql - 加载数据文件 - 上传 CSV 文件

regex - grep 和替换只能工作一半

bash - 向在后台无限循环运行的 bash 脚本发出信号