Linux echo 命令使用说明

echo 命令使用说明(Linux)

适用环境

  • Bash/Zsh 等常见 Shell(echo 通常为内建命令)
  • 也可能存在外部 /bin/echo(行为与内建略有差异)

基本语法

echo [选项] [字符串...]

常用选项

  • -n: 结尾不输出换行
  • -e: 解析反斜杠转义(非 POSIX,部分系统默认无效)
  • -E: 禁用转义解析(通常为默认行为)

说明:不同系统/不同 Shell 对 -e/-E 的支持存在差异;可移植脚本更推荐使用 printf

常见转义(配合 -e

  • \n: 换行
  • \t: 制表符(Tab)
  • \r: 回车
  • \a: 响铃(Beep)
  • \b: 退格
  • \c: 结尾不再输出后续内容
  • \e\x1b: ESC(有的实现不支持 \e
  • \0NNN: 八进制字符(NNN 为 1-3 位八进制)
  • \xHH: 十六进制字符(HH 为 1-2 位十六进制)

示例:

echo -e "第一行\n第二行"
echo -e "列1\t列2\t列3"

不换行输出

echo -n "正在处理..."; sleep 1; echo "完成"

重定向输出到文件

  • 覆盖写入:>
  • 追加写入:>>
echo "hello" > file.txt
echo "world" >> file.txt

以 root 权限写入(避免 sudo 只作用于 echo 而非重定向):

echo "配置" | sudo tee /etc/my.conf > /dev/null

多行文本输出

  1. 使用转义换行:
echo -e "line1\nline2\nline3"
  1. 推荐使用 printf(可移植、格式强):
printf "line1\nline2\nline3\n"
  1. 写入多行到文件(Here-Doc):
cat > notes.txt << 'EOF'
第一行
第二行
包含 $VAR 与 \n 等字符不会被展开
EOF

颜色与高亮(ANSI 转义)

echo -e "\e[31m红色\e[0m 普通 \e[1m加粗\e[0m"

常用颜色码:30-37 前景色,90-97 亮色;40-47 背景色。\e[0m 重置。

变量与命令替换

name="Alice"
echo "Hello, $name"            # 变量
echo "今日日期: $(date +%F)"   # 命令替换

注意:若包含空格或通配符,建议加引号:

echo "$PATH"

与 printf 的对比(为何常推荐 printf)

  • echo 在不同平台的选项与转义行为不一致(如 -e)。
  • printf 语义一致、可控,适合脚本与复杂格式化:
printf "%-10s %5d\n" "user" 42

常见用法示例

# 1) 追加日志并带时间戳
echo "[$(date +%F' '%T)] task done" >> /var/log/app.log

# 2) 输出 JSON(注意引号)
echo '{"name":"bob","id":1}'

# 3) 生成简单配置文件
echo "PORT=8080" > .env
echo "DEBUG=true" >> .env

# 4) 输出空行
echo

# 5) 显示包含反斜杠的原文
echo "path=C:\\Windows\\System32"

跨平台与兼容性提示

  • echo 更适合简单输出;脚本严谨性与可移植性优先时使用 printf

  • dashbusyboxfish 等环境里,echo -e 行为可能不同。

  • 区分 Shell 内建 echo/bin/echo

    type echo   # 查看 echo 来自何处
    

速查表

  • 基础:echo "text"
  • 不换行:echo -n "text"
  • 解析转义:echo -e "a\nb"
  • 覆盖/追加到文件:> / >>
  • 写 root 文件:echo ... | sudo tee /path
  • 推荐复杂输出:使用 printf
posted @ 2025-08-31 14:26  UNbuff  阅读(57)  评论(0)    收藏  举报