1 三種標準輸入輸出
- 標準輸入(STDIN)肾胯,文件描述符號為:0闲勺,默認從鍵盤獲取輸入砚亭;
- 標準輸出(STDOUT)灯变,文件描述符號為:1殴玛,默認輸出到顯示終端;
- 標準錯誤輸出(STDERR),文件描述符號為:2添祸,默認輸出到顯示終端滚粟;
2 什么是重定向?如何重定向刃泌?
(1)什么是重定向凡壤?
IO 重定向是為了改變默認輸入、輸出的位置耙替,如默認情況下標準輸出(STDOUT)亚侠,標準錯誤輸出(STDERR)都是輸出到顯示終端,如對標準輸出俗扇、標準錯誤輸出改變其默認輸出位置硝烂,可重定向輸出到指定的文件中(實際工作中經常這么使用),要重定向就要配合一些語法符號铜幽。
(2)如何重定向滞谢?
- Linux Shell 使用 " > " 和 ">>" 進行對文件描述符進行重定向
- ">" # 使用本次輸出內容替換原有文件的內容;
- ">>" 把本次輸出追加到原文件的后面啥酱;
- 常見的一些輸出重定向(標準輸出和標準錯誤輸出)表示
- 【>】標準輸出覆蓋重定向
- 【>>】標準輸出追加重定向
- 【2>】標準錯誤輸出覆蓋重定向
- 【2>>】標準錯誤輸出追加重定向
- 【&>】將標準輸出和標準錯誤輸出都同時覆蓋重定向
- 【&>>】將標準輸出和標準錯誤輸出都同時追加重定向
3 管道符以及和它容易混淆的一些符號使用
(1)管道符 |
- 格式 : 命令1 | 命令2 ...
- 解釋: 命令1 的輸出作為命令2的操作對象
(2)&和&&爹凹、|和|| 區(qū)別、分號(;)用法
- & 表示任務在后臺執(zhí)行镶殷;
- && 邏輯與禾酱,只有前一條命令執(zhí)行成功時,才執(zhí)行后一條命令 绘趋,如 echo '1' && echo '2'颤陶;
- | 表示管道,上一條命令的輸出陷遮,作為下一條命令操作對象滓走;
- || 邏輯或,只有上一條命令執(zhí)行失敗后帽馋,才執(zhí)行下一條命令搅方;
- ";" 用法方式:command1 ; command2,用 ; 號隔開每個命令绽族,每個命令按照從左到右的順序執(zhí)行姨涡,彼此之間不關心是否失敗, 所有命令都會執(zhí)行吧慢。
4 nohup 后臺啟動進程命令和案例
- nohup 讓某個進程在后臺運行涛漂。
- nohup 英文全稱 no hang up(不掛起),用于在系統后臺不掛斷地運行命令,退出終端不會影響程序的運行匈仗。
- nohup 命令瓢剿,在默認情況下(非重定向時),會輸出一個名叫 nohup.out 的文件到當前目錄下悠轩,如果當前目錄的 nohup.out 文件不可寫间狂,輸出重定向到 $HOME/nohup.out 文件中。
# 以后臺進程執(zhí)行啟動 grafana 命令哗蜈,& 放在命令到結尾前标,表示后臺運行
nohup ./bin/grafana-server start > grafana.log 2>&1 &
# 2>&1 解釋:將標準錯誤輸出(2 表示)重定向到標準輸出(&1 表示) 坠韩,標準輸出(&1) 再被重定向輸入到 grafana.log 文件中距潘。
5 小結
- 總結了 Linux 中標準輸入(0 表示),標準輸出(1 表示)只搁,標準錯誤輸出(2 表示)以及它們的重定向用法音比;
- 接著簡述了管道符 | 用法,以及 &和&&氢惋、|和|| 區(qū)別洞翩、分號(;)用法;
- 最后結合 nohup 后臺啟動進程命令在實際工作中和上述提到的命令的綜合使用焰望。
「不甩鍋的碼農」原創(chuàng)骚亿,轉載請注明來源,未經授權禁止商業(yè)用途熊赖!同名 GZH 請關注来屠!