20170721 重定向和管道

一、標準輸入輸出

  • linux會為每一個打開的文件分配一個fd(file descriptor墙贱,文件描述符)
  • linux提供三種輸入輸出(I/O)設備
    • 標準輸入 (STDIN),0贱傀, 默認鍵盤輸入
    • 標準輸出 (STDOUT)惨撇,1,默認輸出終端窗口
    • 標準錯誤輸出 (STDERR)府寒,2魁衙,默認輸出終端窗口
  • I/O重定向指改變標準輸入、標準輸出株搔、標準錯誤輸出的默認位置

二纺棺、標準輸出、標準錯誤輸出重定向

  • 語法:
> file     <!--將標準輸出重定向至file-->
2 > file   <!--將標準錯誤輸出重定向至file-->
&> file    <!--將標準輸出和標準錯誤輸出一起重定向至file-->
  • 實驗:

1.標準輸出和標準錯誤輸出重定向



2.標準輸出和標準錯誤輸出一起重定向邪狞,其實質(zhì)是將標準錯誤輸出重定向至標準輸出祷蝌,再一起輸出至文件


注意:上圖中的兩種方法是等價的,但是注意使用第一種方法時要注意順序帆卓,2>&1必須放在標準輸出重定向后面巨朦,否則會報錯

  • >>>的區(qū)別:前者會覆蓋文件內(nèi)容,后者在原有內(nèi)容后追加
    • set -C禁止覆蓋文件操作剑令,set +C允許覆蓋文件操作
    • >|強行執(zhí)行覆蓋操作糊啡,即使已經(jīng)set -C狀態(tài)下也執(zhí)行
  • 多條命令結果合并重定向(command1 ; command2) > file
  • > linkfile 會將軟鏈接指向的源文件清空,而軟鏈接文件本身不變

三吁津、tr 轉(zhuǎn)換和刪除字符

  • 語法:tr [OPTION]... SET1 [SET2]
  • 選項意義:
-c -C     <!--取SET1字符集的補集-->
-s        <!--合并連續(xù)重復的字符>
-d        <!--刪除SET1字符集中的字符-->
-t        <!--按順序位將SET1字符集精確替換成SET2字符集中的字符-->
  • 實驗:理解-t選項的意義
  • 解釋:當SET1位數(shù)大于SET2時棚蓄,默認SET1找不到對應位的字符會自動使用SET2最后一位替換;當使用-t時碍脏,只會精確匹配到SET2的位數(shù)梭依,SET1多出的位數(shù)不再替換。

四典尾、標準輸入重定向

1.從文件輸入STDIN役拴,使用<將文件內(nèi)容重定向為命令的標準輸入

tr 'a-z' 'A-Z' < /etc/issue             <!--將/etc/issue內(nèi)容中的所有小寫字母變?yōu)榇髮戄敵龅浇K端-->
tr 'a-z' 'A-Z' < /etc/issue > a.out     <!--將上一個命令的結果重定向輸出至文件a.out-->
tr 'a-z' 'A-Z'  > b.out < /etc/issue    <!--效果與上一命令相同-->

2.使用<< 終止詞多行重定向至標準輸入

  • 實驗:使用多行重定向發(fā)送郵件

五、| 管道

  • 語法:command1 | command2 | command3
  • 管道將上一個命令的標準輸出傳給下一個命令作為標準輸入钾埂,從而能組合使用多個工具河闰。
  • 標準錯誤輸出無法通過管道傳輸給下一個命令,需要將上一個命令的標準錯誤轉(zhuǎn)換為標準輸出褥紫,再使用管道傳輸姜性。具體實現(xiàn)可以采用如下兩種方式:
    • command1 2>&1 | command2
    • command1 |& command2
  • 管道中的-符號:可以使用-代替管道命令中可能存在的臨時文件
tar -cvf - /home | tar -xvf -     <!--將/home文件打包后解包,打包文件是臨時文件髓考,用"-"代替-->
  • tee 重定向至多個目標
command1 | tee [-a ] file | command2  
<!--command1的標準輸出一方面?zhèn)鬏斨羉ommand2的標準輸入部念,另一方面重定向至文件file-->
  • tee命令默認覆蓋文件,若要追加內(nèi)容到文件,增加-a選項

  • 實驗:列出/root/err目錄下的文件印机,將輸出結果重定向為文件a.out矢腻,同時將結果中的小寫字母轉(zhuǎn)為大寫,然后重定向為文件b.out射赛。/err目錄不存在多柑。

  • 本實驗需要注意將標準錯誤輸出轉(zhuǎn)為標準輸出,這樣才能使用管道命令楣责。
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末竣灌,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子秆麸,更是在濱河造成了極大的恐慌初嘹,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,454評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件沮趣,死亡現(xiàn)場離奇詭異屯烦,居然都是意外死亡,警方通過查閱死者的電腦和手機房铭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評論 3 385
  • 文/潘曉璐 我一進店門驻龟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人缸匪,你說我怎么就攤上這事翁狐。” “怎么了凌蔬?”我有些...
    開封第一講書人閱讀 157,921評論 0 348
  • 文/不壞的土叔 我叫張陵霎箍,是天一觀的道長浸锨。 經(jīng)常有香客問我铐维,道長楔绞,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,648評論 1 284
  • 正文 為了忘掉前任计贰,我火速辦了婚禮钦睡,結果婚禮上,老公的妹妹穿的比我還像新娘躁倒。我一直安慰自己,他們只是感情好洒琢,可當我...
    茶點故事閱讀 65,770評論 6 386
  • 文/花漫 我一把揭開白布秧秉。 她就那樣靜靜地躺著,像睡著了一般衰抑。 火紅的嫁衣襯著肌膚如雪象迎。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,950評論 1 291
  • 那天,我揣著相機與錄音砾淌,去河邊找鬼啦撮。 笑死,一個胖子當著我的面吹牛汪厨,可吹牛的內(nèi)容都是我干的赃春。 我是一名探鬼主播,決...
    沈念sama閱讀 39,090評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼劫乱,長吁一口氣:“原來是場噩夢啊……” “哼织中!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起衷戈,我...
    開封第一講書人閱讀 37,817評論 0 268
  • 序言:老撾萬榮一對情侶失蹤狭吼,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后殖妇,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體刁笙,經(jīng)...
    沈念sama閱讀 44,275評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,592評論 2 327
  • 正文 我和宋清朗相戀三年谦趣,在試婚紗的時候發(fā)現(xiàn)自己被綠了疲吸。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,724評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡蔚润,死狀恐怖磅氨,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情嫡纠,我是刑警寧澤烦租,帶...
    沈念sama閱讀 34,409評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站除盏,受9級特大地震影響叉橱,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜者蠕,卻給世界環(huán)境...
    茶點故事閱讀 40,052評論 3 316
  • 文/蒙蒙 一窃祝、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧踱侣,春花似錦粪小、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至待榔,卻和暖如春逞壁,著一層夾襖步出監(jiān)牢的瞬間流济,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評論 1 266
  • 我被黑心中介騙來泰國打工腌闯, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留绳瘟,地道東北人。 一個月前我還...
    沈念sama閱讀 46,503評論 2 361
  • 正文 我出身青樓姿骏,卻偏偏與公主長得像糖声,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子工腋,可洞房花燭夜當晚...
    茶點故事閱讀 43,627評論 2 350

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