<五> shell輸入/輸出重定向

大多數(shù) UNIX 系統(tǒng)命令從你的終端接受輸入,并將所產(chǎn)生的輸出發(fā)送回??到您的終端屈溉。一個命令通常從一個叫標準輸入的地方讀取輸入塞关,默認情況下,這恰好是你的終端子巾。同樣帆赢,一個命令通常將其輸出寫入到標準輸出,默認情況下线梗,這也是你的終端椰于。重定向的意思就是將這種標準默認的輸入和輸出重新按照命令定向到指定的地方。

1仪搔、重定向命令列表

image.png

需要注意的是文件描述符 0 通常是標準輸入(STDIN)瘾婿,1 是標準輸出(STDOUT),2 是標準錯誤輸出(STDERR)

2烤咧、輸出重定向

  • 語法
command1 > file1

上面這個命令執(zhí)行command1然后將輸出的內(nèi)容存入file1偏陪。
注意任何file1內(nèi)的已經(jīng)存在的內(nèi)容將被新內(nèi)容替代。如果要將新內(nèi)容添加在文件末尾煮嫌,請使用>>操作符笛谦。

  • 實例
who > users

執(zhí)行上面的 who 命令,它將命令的完整的輸出重定向在用戶文件中(users):

$ cat users
tianqixin    console  Oct 31 17:35 

輸出重定向會覆蓋文件內(nèi)容昌阿,請看下面的例子:

$ echo "菜鳥教程:www.runoob.com" > users
$ cat users
菜鳥教程:www.runoob.com

如果不希望文件內(nèi)容被覆蓋饥脑,可以使用 >> 追加到文件末尾恳邀,例如:

$ echo "菜鳥教程:www.runoob.com" >> users
$ cat users
菜鳥教程:www.runoob.com
菜鳥教程:www.runoob.com

3、輸出重定向

  • 和輸出重定向一樣好啰,Unix 命令也可以從文件獲取輸入轩娶,語法為:
command1 < file1

這樣,本來需要從鍵盤獲取輸入的命令會轉(zhuǎn)移到文件讀取內(nèi)容框往。
注意:輸出重定向是大于號(>)鳄抒,輸入重定向是小于號(<)。

  • 實例
    我們需要統(tǒng)計users文件的行數(shù)椰弊,執(zhí)行一下命令
$ wc -l users
       2 users

也可以將輸入重定向到 users 文件:

$  wc -l < users
       2 

注意:上面兩個例子的結(jié)果不同:第一個例子许溅,會輸出文件名;第二個不會秉版,因為它僅僅知道從標準輸入讀取內(nèi)容贤重。

4、同時替換輸入和輸出

command1 < infile > outfile

同時替換輸入和輸出清焕,執(zhí)行command1并蝗,從文件infile讀取內(nèi)容,然后將輸出寫入到outfile中秸妥。

5滚停、重定向深入講解

一般情況下,每個 Unix/Linux 命令運行時都會打開三個文件:

  • 標準輸入文件(stdin):stdin的文件描述符為0粥惧,Unix程序默認從stdin讀取數(shù)據(jù)键畴。
  • 標準輸出文件(stdout):stdout 的文件描述符為1,Unix程序默認向stdout輸出數(shù)據(jù)突雪。
  • 標準錯誤文件(stderr):stderr的文件描述符為2起惕,Unix程序會向stderr流中寫入錯誤信息。

默認情況下咏删,command > file 將 stdout 重定向到 file惹想,command < file 將stdin 重定向到 file。

  • a督函、如果希望 stderr 重定向到 file勺馆,可以這樣寫:
$ command 2 > file
  • b、如果希望 stderr 追加到 file 文件末尾侨核,可以這樣寫:
$ command 2 >> file

2 表示標準錯誤文件(stderr)。

  • c灌灾、如果希望將 stdout 和 stderr 合并后重定向到 file搓译,可以這樣寫:
$ command > file 2>&1

或者

$ command >> file 2>&1
  • d、如果希望對 stdin 和 stdout 都重定向锋喜,可以這樣寫:
$ command < file1 >file2

command 命令將 stdin 重定向到 file1些己,將 stdout 重定向到 file2豌鸡。

6、/dev/null 文件

如果希望執(zhí)行某個命令段标,但又不希望在屏幕上顯示輸出結(jié)果涯冠,那么可以將輸出重定向到 /dev/null

$ command > /dev/null

/dev/null 是一個特殊的文件,寫入到它的內(nèi)容都會被丟棄逼庞;如果嘗試從該文件讀取內(nèi)容蛇更,那么什么也讀不到。但是 /dev/null 文件非常有用赛糟,將命令的輸出重定向到它派任,會起到"禁止輸出"的效果

如果希望屏蔽 stdout 和 stderr,可以這樣寫:

$ command > /dev/null 2>&1
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末璧南,一起剝皮案震驚了整個濱河市掌逛,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌司倚,老刑警劉巖豆混,帶你破解...
    沈念sama閱讀 218,386評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異动知,居然都是意外死亡皿伺,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評論 3 394
  • 文/潘曉璐 我一進店門拍柒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來心傀,“玉大人,你說我怎么就攤上這事拆讯≈校” “怎么了?”我有些...
    開封第一講書人閱讀 164,704評論 0 353
  • 文/不壞的土叔 我叫張陵种呐,是天一觀的道長宰翅。 經(jīng)常有香客問我,道長爽室,這世上最難降的妖魔是什么汁讼? 我笑而不...
    開封第一講書人閱讀 58,702評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮阔墩,結(jié)果婚禮上嘿架,老公的妹妹穿的比我還像新娘。我一直安慰自己啸箫,他們只是感情好耸彪,可當我...
    茶點故事閱讀 67,716評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著忘苛,像睡著了一般蝉娜。 火紅的嫁衣襯著肌膚如雪唱较。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,573評論 1 305
  • 那天召川,我揣著相機與錄音南缓,去河邊找鬼。 笑死荧呐,一個胖子當著我的面吹牛汉形,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播坛增,決...
    沈念sama閱讀 40,314評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼获雕,長吁一口氣:“原來是場噩夢啊……” “哼喷面!你這毒婦竟也來了枉疼?” 一聲冷哼從身側(cè)響起诀黍,我...
    開封第一講書人閱讀 39,230評論 0 276
  • 序言:老撾萬榮一對情侶失蹤聚谁,失蹤者是張志新(化名)和其女友劉穎暇藏,沒想到半個月后务漩,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體瓢阴,經(jīng)...
    沈念sama閱讀 45,680評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡夏志,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,873評論 3 336
  • 正文 我和宋清朗相戀三年咐蚯,在試婚紗的時候發(fā)現(xiàn)自己被綠了童漩。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,991評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡春锋,死狀恐怖矫膨,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情期奔,我是刑警寧澤侧馅,帶...
    沈念sama閱讀 35,706評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站呐萌,受9級特大地震影響馁痴,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜肺孤,卻給世界環(huán)境...
    茶點故事閱讀 41,329評論 3 330
  • 文/蒙蒙 一罗晕、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧赠堵,春花似錦小渊、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至杂靶,卻和暖如春梆惯,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背吗垮。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評論 1 270
  • 我被黑心中介騙來泰國打工垛吗, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人烁登。 一個月前我還...
    沈念sama閱讀 48,158評論 3 370
  • 正文 我出身青樓怯屉,卻偏偏與公主長得像,于是被迫代替她去往敵國和親饵沧。 傳聞我的和親對象是個殘疾皇子锨络,可洞房花燭夜當晚...
    茶點故事閱讀 44,941評論 2 355

推薦閱讀更多精彩內(nèi)容

  • Shell 輸入/輸出重定向大多數(shù) UNIX 系統(tǒng)命令從你的終端接受輸入并將所產(chǎn)生的輸出發(fā)送回到您的終端。一個命令...
    海角hust閱讀 237評論 0 0
  • 大多數(shù) UNIX 系統(tǒng)命令從你的終端接受輸入并將所產(chǎn)生的輸出發(fā)送回??到您的終端狼牺。一個命令通常從一個叫標準輸入的地...
    Cooci_和諧學習_不急不躁閱讀 623評論 0 1
  • 大多數(shù) UNIX 系統(tǒng)命令從你的終端接受輸入并將所產(chǎn)生的輸出發(fā)送回??到您的終端是钥。一個命令通常從一個叫標準輸入的地...
    楓海閱讀 443評論 0 2
  • 大多數(shù) UNIX 系統(tǒng)命令從你的終端接受輸入并將所產(chǎn)生的輸出發(fā)送回到您的終端掠归。一個命令通常從一個叫標準輸入的地方讀...
    姜淑均閱讀 234評論 2 3
  • 大多數(shù) UNIX 系統(tǒng)命令從你的終端接受輸入并將所產(chǎn)生的輸出發(fā)送回??到您的終端。一個命令通常從一個叫標準輸入的地...
    AsaGuo閱讀 263評論 0 0