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
多行文本輸出
- 使用轉義換行:
echo -e "line1\nline2\nline3"
- 推薦使用
printf
(可移植、格式強):
printf "line1\nline2\nline3\n"
- 寫入多行到文件(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
。- 在
dash
、busybox
、fish
等環境里,echo -e
行為可能不同。 - 區分 Shell 內建
echo
與/bin/echo
:type echo # 查看 echo 來自何處
速查表
- 基礎:
echo "text"
- 不換行:
echo -n "text"
- 解析轉義:
echo -e "a\nb"
- 覆蓋/追加到文件:
> / >>
- 寫 root 文件:
echo ... | sudo tee /path
- 推薦復雜輸出:使用
printf