萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 作業系統 >  >> Linux 教學

Linux cat 指令完整用法與進階技巧大全

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 等表示

三大核心應用場景

1. 檢視檔案內容


cat /etc/hosts
cat -n /var/log/syslog | head -20   # 顯示前 20 行含行號
cat -A script.sh                    # 檢查隱藏字元(^M 換行、^I Tab)

2. 建立/寫入檔案(Here Document 配合)


# 互動式輸入,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

3. 合併與重導向


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

效能與注意事項

  • 大檔(>1GB)直接 cat 會佔用大量記憶體緩衝,建議改用 less 或 head/tail
  • 二進位檔案輸出至終端會亂碼並可能鎖死終端,務必重導向或搭配 xxd/hexdump
  • cat -v 可檢測 Windows 換行符 ^M(CRLF),配合 dos2unix 或 sed 's/\r$//' 轉換
  • 標準輸入 `-` 代表 stdin:cat - file.txt 先輸入標準輸入再接檔案內容

替代工具比較

  • bat:語法高亮、Git 整合、自動分頁(cat 現代替代品)
  • head/tail:僅需檢視檔案首尾
  • zcat/zless:直接讀取 .gz 壓縮檔
  • jq:JSON 結構化輸出

cat 雖簡單,但配合重導向、Here Document、管線與參數控制,是 Shell 腳本與互動操作中最高頻的資料流操作基石。

copyright © 萬盛學電腦網 all rights reserved