cat(concatenate)是 Linux 最基礎且威力強大的文字處理指令,除顯示檔案外,還具備建立檔案、合併檔案、行號標示、特殊字元顯示等功能。
cat [OPTION]... [FILE]...
# 常用參數
-n, --number # 所有行編號(含空行)
-b, --number-nonblank # 僅非空行編號
-s, --squeeze-blank # 壓縮連續空行為單一空行
-E, --show-ends # 行尾顯示 $
-T, --show-tabs # Tab 顯示為 ^I
-A, --show-all # 等同 -vET(顯示所有控制字元)
-v, --show-nonprinting# 非印刷字元用 ^M 等表示
cat /etc/hosts
cat -n /var/log/syslog | head -20 # 顯示前 20 行含行號
cat -A script.sh # 檢查隱藏字元(^M 換行、^I Tab)
# 互動式輸入,Ctrl+D 結束
cat > newfile.txt
This is line 1
This is line 2
^D
# Here Document 批次寫入(變數展開)
cat > config.conf < config.conf <<'EOF'
server_port = $PORT
log_dir = $LOG_DIR
EOF
cat file1 file2 file3 > combined.txt # 合併多檔
cat file1 >> file2 # 附加到既有檔案
cat file1 file2 | sort | uniq > uniq.txt # 管線處理
cat /dev/null > large.log # 清空檔案(保留 inode)
| 需求 | 指令組合 |
|---|---|
| 顯示行號並存新檔 | cat -n src.txt > dst.txt |
| 合併檔案且非空行編號 | cat -b file1 file2 > all.txt |
| 移除重複空行 | cat -s messy.txt > clean.txt |
| 反向輸出(配合 tac) | cat file | tac |
| 二進位檔案安全複製 | cat binary.bin > /dev/usb |
| 建立稀疏檔案測試 | cat /dev/zero | head -c 1G | cat > sparse.img |
cat 會佔用大量記憶體緩衝,建議改用 less 或 head/tailxxd/hexdumpcat -v 可檢測 Windows 換行符 ^M(CRLF),配合 dos2unix 或 sed 's/\r$//' 轉換cat - file.txt 先輸入標準輸入再接檔案內容bat:語法高亮、Git 整合、自動分頁(cat 現代替代品)head/tail:僅需檢視檔案首尾zcat/zless:直接讀取 .gz 壓縮檔jq:JSON 結構化輸出cat 雖簡單,但配合重導向、Here Document、管線與參數控制,是 Shell 腳本與互動操作中最高頻的資料流操作基石。