echo 是 Shell 中最常用的输出命令,用来在终端显示文本或变量值。虽然简单,但有些细节值得注意。
直接输出字符串:
echo "Hello, World!"
echo Hello, World!
两种写法都可以,但推荐用引号包住字符串,避免特殊字符被 Shell 解释。
输出变量:
name="张三"
echo "你好,$name"
echo "当前目录:$PWD"
运行结果:
你好,张三
当前目录:/home/user
echo 默认会在末尾加换行符。用 -n 选项可以取消:
echo -n "正在处理"
echo -n "..."
echo "完成"
运行结果:
正在处理...完成
这在显示进度、拼接输出时很有用。
用 -e 选项启用转义字符解析:
echo -e "第一行\n第二行\n第三行"
echo -e "制表符\t示例"
echo -e "响铃\a"
运行结果:
第一行
第二行
第三行
制表符 示例
响铃
常用的转义字符:
| 转义符 | 含义 |
|---|---|
\n | 换行 |
\t | 制表符 |
\\ | 反斜杠 |
\a | 响铃 |
\r | 回车 |
双引号会解析变量和命令替换,单引号原样输出:
name="张三"
echo "你好,$name"
echo '你好,$name'
运行结果:
你好,张三
你好,$name
如果字符串里有特殊字符(如 $、"、`),用单引号可以避免被解释。
echo 可以输出带颜色的文本,格式是 \033[颜色代码m:
echo -e "\033[31m红色文字\033[0m"
echo -e "\033[32m绿色文字\033[0m"
echo -e "\033[33m黄色文字\033[0m"
echo -e "\033[34m蓝色文字\033[0m"
颜色代码:
| 代码 | 颜色 |
|---|---|
| 30 | 黑色 |
| 31 | 红色 |
| 32 | 绿色 |
| 33 | 黄色 |
| 34 | 蓝色 |
| 35 | 紫色 |
| 36 | 青色 |
| 37 | 白色 |
背景色用 40-47,加粗用 1:
echo -e "\033[1;31m加粗红色\033[0m"
echo -e "\033[41;37m红底白字\033[0m"
记得用 \033[0m 重置颜色,否则后面的文字都会受影响。
echo 和 /bin/echo 的区别:
Shell 内置的 echo 和 /bin/echo 行为可能不同。内置 echo 的行为取决于 Shell,/bin/echo 的行为取决于系统。用 type echo 可以查看:
type echo
运行结果:
echo is a shell builtin
不同系统的差异:
在有些系统上,echo 不支持 -e 选项。如果遇到问题,可以用 printf 替代,它的行为更一致。
-n 不换行,-e 启用转义字符\033[颜色代码m 输出彩色文本