目錄
1 三種標準輸入輸出
- 標準輸入(STDIN),檔案描述符號為:0,預設從鍵盤獲取輸入;
- 標準輸出(STDOUT),檔案描述符號為:1,預設輸出到顯示終端;
- 標準錯誤輸出(STDERR),檔案描述符號為:2,預設輸出到顯示終端;
2 什麼是重定向?如何重定向?
(1)什麼是重定向?
IO 重定向是為了改變預設輸入、輸出的位置,如預設情況下標準輸出(STDOUT),標準錯誤輸出(STDERR)都是輸出到顯示終端,如對標準輸出、標準錯誤輸出改變其預設輸出位置,可重定向輸出到指定的檔案中(實際工作中經常這麼使用),要重定向就要配合一些語法符號。
(2)如何重定向?
- Linux Shell 使用 " > " 和 ">>" 進行對檔案描述符進行重定向
- ">" # 使用本次輸出內容替換原有檔案的內容;
- ">>" 把本次輸出追加到原檔案的後面;
- 常見的一些輸出重定向(標準輸出和標準錯誤輸出)表示
- 【>】標準輸出覆蓋重定向
- 【>>】標準輸出追加重定向
- 【2>】標準錯誤輸出覆蓋重定向
- 【2>>】標準錯誤輸出追加重定向
- 【&>】將標準輸出和標準錯誤輸出都同時覆蓋重定向
- 【&>>】將標準輸出和標準錯誤輸出都同時追加重定向
3 管道符以及和它容易混淆的一些符號使用
(1)管道符 |
- 格式 : 命令1 | 命令2 ...
- 解釋: 命令1 的輸出作為命令2的操作物件
(2)&和&&、|和|| 區別、分號(;)用法
- & 表示任務在後臺執行;
- && 邏輯與,只有前一條命令執行成功時,才執行後一條命令 ,如 echo '1' && echo '2';
- | 表示管道,上一條命令的輸出,作為下一條命令操作物件;
- || 邏輯或,只有上一條命令執行失敗後,才執行下一條命令;
- ";" 用法方式:command1 ; command2,用 ; 號隔開每個命令,每個命令按照從左到右的順序執行,彼此之間不關心是否失敗, 所有命令都會執行。
4 nohup 後臺啟動程式命令和案例
- nohup 讓某個程式在後臺執行。
- nohup 英文全稱 no hang up(不掛起),用於在系統後臺不結束通話地執行命令,退出終端不會影響程式的執行。
- nohup 命令,在預設情況下(非重定向時),會輸出一個名叫 nohup.out 的檔案到當前目錄下,如果當前目錄的 nohup.out 檔案不可寫,輸出重定向到 $HOME/nohup.out 檔案中。
# 以後臺程式執行啟動 grafana 命令,& 放在命令到結尾,表示後臺執行
nohup ./bin/grafana-server start > grafana.log 2>&1 &
# 2>&1 解釋:將標準錯誤輸出(2 表示)重定向到標準輸出(&1 表示) ,標準輸出(&1) 再被重定向輸入到 grafana.log 檔案中。
5 小結
- 總結了 Linux 中標準輸入(0 表示),標準輸出(1 表示),標準錯誤輸出(2 表示)以及它們的重定向用法;
- 接著簡述了管道符 | 用法,以及 &和&&、|和|| 區別、分號(;)用法;
- 最後結合 nohup 後臺啟動程式命令在實際工作中和上述提到的命令的綜合使用。
「不甩鍋的碼農」原創,轉載請註明來源,未經授權禁止商業用途!同名 GZH 請關注!