echo 命令是 Shell 最基本、最常用的命令之一,它的核心功能是在终端(标准输出)上打印文本或变量值。

基本语法
echo 命令的基本语法非常简单:
echo [选项] [字符串/变量]
- 选项:用于控制
echo的行为,最常用的是-n和-e。 - 字符串/变量:这是你想要输出的内容,它可以是一个固定的字符串,也可以是一个变量的值。
基本用法示例
输出普通文本
这是最常见的用法,直接在 echo 后面跟上你想要打印的字符串。
echo "Hello, World!"
输出:
Hello, World!
注意:双引号 是可选的,但如果你的字符串中包含空格,使用双引号可以确保整个字符串被视为一个整体。

echo Hello World # 也会输出同样的结果,但作为最佳实践,建议使用引号
输出变量值
echo 经常用于查看变量的内容。
name="Alice" echo "Hello, $name"
输出:
Hello, Alice
这里,$name 是变量的引用方式,Shell 会将其替换为变量 name 的实际值 "Alice"。
输出转义字符
在不使用任何选项的情况下,echo 对反斜杠 \ 的解释是有限的。\n 会被当作两个普通字符输出。

echo "Hello\nWorld"
输出:
Hello\nWorld
如果你希望 \n 被解释为换行符,就需要使用 -e 选项。
常用选项详解
-e 选项:启用转义字符
这是 echo 最强大的选项之一,它告诉 echo 将字符串中的反斜杠转义字符进行解释。
常见转义字符:
| 转义字符 | 含义 |
|---|---|
\a |
警报(响铃) |
\b |
退格 |
\n |
换行 |
\r |
回车 |
\t |
水平制表符 |
\\ |
反斜杠本身 |
\" |
双引号 |
\v |
垂直制表符 |
示例:
echo -e "Hello\nWorld"
输出:
Hello
World
echo -e "ID\tName\tScore\n101\tAlice\t95"
输出:
ID Name Score
101 Alice 95
-n 选项:不输出结尾的换行符
默认情况下,echo 在输出完所有内容后会自动在末尾添加一个换行符,使用 -n 选项可以禁止这种行为。
示例:
echo -n "Please wait" echo " for a moment."
输出:
Please wait for a moment.
可以看到,第一行没有换行,直接和第二行的内容连接在了一起。
进阶用法和技巧
输出重定向
echo 的输出可以被重定向到文件中,而不是打印在屏幕上。
>:覆盖写入(如果文件存在,则清空并写入;如果不存在,则创建)>>:追加写入(如果文件存在,则在末尾追加;如果不存在,则创建)
示例:
# 创建一个新文件并写入内容 echo "This is the first line." > my_file.txt # 向文件追加内容 echo "This is the second line." >> my_file.txt # 查看文件内容 cat my_file.txt
输出:
This is the first line.
This is the second line.
输出命令结果
通过使用反引号 ` 或 语法,可以将一个命令的执行结果作为 echo 的输入。
# 使用反引号 echo `date`
输出(示例):
Mon Oct 26 10:30:55 CST 2025
# 使用 $() 语法(推荐,更易读且支持嵌套) echo "The current user is: $(whoami)"
输出(示例):
The current user is: john
输出彩色文本
在大多数现代终端中,你可以使用 ANSI 转义码来输出彩色文本,这需要结合 -e 选项使用。
格式:
echo -e "\e[颜色码m你的文本\e[0m"
\e[或\033[:开始转义序列。- 颜色码:
- 文本颜色:30(黑), 31(红), 32(绿), 33(黄), 34(蓝), 35(紫), 36(青), 37(白)
- 背景颜色:40(黑), 41(红), ..., 47(白)
m:结束颜色码。\e[0m:重置所有属性,恢复到默认颜色。
示例:
echo -e "\e[31mThis is red text.\e[0m" echo -e "\e[32mThis is green text.\e[0m" echo -e "\e[44;33mThis is yellow text on a blue background.\e[0m"
输出:
- 第一行会以红色显示。
- 第二行会以绿色显示。
- 第三行会以黄色文本显示在蓝色背景上。
重要注意事项:echo vs printf
虽然 echo 很简单,但在脚本编程中,printf 命令通常是更安全、更强大的选择。
| 特性 | echo |
printf |
|---|---|---|
| 可移植性 | 差,不同 Shell (如 bash 和 zsh) 对 -e, -n 等选项的支持和行为可能不同。 |
好,行为在 POSIX 标准中定义,几乎所有 Shell 都一致。 |
| 格式化能力 | 弱,基本没有格式化功能。 | 强,支持 C 语言风格的格式化(如 %d, %f, %s)。 |
| 安全性 | 较差,处理用户输入或文件名时,如果内容包含 或 \ 等特殊字符,可能会产生意外行为。 |
较好,对参数的处理更可控。 |
| 换行符 | 默认输出。 | 默认不输出换行符,需要手动添加 \n。 |
推荐:
- 在交互式命令行中快速查看内容,
echo非常方便。 - 在编写脚本时,尤其是需要可移植性、格式化输出或处理不可靠输入时,强烈推荐使用
printf。
printf 示例:
name="Bob" age=30 printf "Hello, %s. You are %d years old.\n" "$name" "$age"
输出:
Hello, Bob. You are 30 years old.
| 命令 | 功能 | 示例 |
|---|---|---|
echo "text" |
输出普通文本 | echo "Hello" |
echo $VAR |
输出变量值 | echo "$PATH" |
echo -e "text" |
启用转义字符(如 \n, \t) |
echo -e "Line1\nLine2" |
echo -n "text" |
输出不带换行符的文本 | echo -n "Progress: "; echo "100%" |
echo "text" > file |
将输出重定向到文件(覆盖) | echo "new" > data.txt |
echo "text" >> file |
将输出重定向到文件(追加) | echo "old" >> data.txt |
掌握 echo 是学习 Shell 脚本的第一步,虽然简单,但它是构建更复杂命令和脚本的基础。
