LinuxMastery
•
•
By asdlkfj
LinuxMastery 10: 資料流重導向與管線 | > >>
讓指令互相合作
Linux 的強大之處在於「組合」。每個指令只做一件事並把它做好,然後透過「管線 (Pipe)」將它們串接起來,完成複雜的任務。此外,「重導向 (Redirection)」能讓我們靈活控制資料的輸入與輸出。
核心符號詳解
| (Pipe)
- 用途:將左邊指令的「輸出」,變成右邊指令的「輸入」。
- 範例:
# 列出所有進程,然後過濾出包含 'nginx' 的行 ps aux | grep nginx # 讀取 log 檔,然後計算行數 (wc -l) cat access.log | wc -l
> (Output Redirection)
- 用途:將指令的輸出寫入檔案 (會覆蓋原有內容)。
- 範例:
# 將 ls 的結果存成 filelist.txt ls -l > filelist.txt
>> (Append Redirection)
- 用途:將指令的輸出追加到檔案末尾 (不會覆蓋)。
- 範例:
# 將一段文字追加到 Log 檔最後 echo "Backup completed" >> /var/log/backup.log
2> (Error Redirection)
- 用途:只重導向「錯誤訊息」。
- 範例:
# 執行指令,正常輸出顯示在螢幕,錯誤訊息存到 error.log ./script.sh 2> error.log
實戰心法
最經典的用法是 > /dev/null 2>&1。這串咒語的意思是:「把標準輸出丟進黑洞 (/dev/null),然後把錯誤輸出也導向到標準輸出 (也就是一起丟進黑洞)」。這常用於 Crontab 中,當你不希望腳本執行時產生任何信件或 Log 時使用。