echo 命令

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 替代,它的行为更一致。

小结

  • echo 是最简单的输出命令,适合日常使用
  • -n 不换行,-e 启用转义字符
  • 双引号解析变量,单引号原样输出
  • \033[颜色代码m 输出彩色文本
  • 复杂格式化推荐用 printf