重定向和管道

? ? 哈哈!又到了一周一次的總結(jié)時(shí)光精肃,每次總結(jié)的時(shí)候秤涩,都能感到時(shí)間飛快。雖然是這樣司抱,但是這也是一段讓人享受的時(shí)光筐眷。以下是我的總結(jié),請各位多多指教习柠。


重定向和管道

1诚纸、Linux給程序提供三種I/O設(shè)備:

?標(biāo)準(zhǔn)輸入(STDIN)-0 默認(rèn)接受來自鍵盤的輸入(輸入到文件捉超,如tr 'a-z''A-Z' < /etc/issue)

?標(biāo)準(zhǔn)輸出(STDOUT)-1 默認(rèn)輸出到其他終端窗口 (前面是命令衷敌,如who >who.out)

?標(biāo)準(zhǔn)錯(cuò)誤(STDERR)-2 默認(rèn)輸出到終端窗口


STDOUT和STDERR可以被重定向到文件:格式:命令 操作符號 文件名

支持的操作符號包括:

> 或 1>(標(biāo)準(zhǔn)輸出)? 把STDOUT重定向到文件,將默認(rèn)或正確的傳到另一個(gè)終端

2>(標(biāo)準(zhǔn)錯(cuò)誤)? ? ? 把STDERR重定向到文件堤结,可將錯(cuò)誤信息傳到另一個(gè)終端,正確留下

&> (例子ls /err/boot &> /dev/all) 或>&或2>&1(放到末尾 例:ls /err/boot >/app/all 2>&1) 把所有輸出重定向到文件肉拓,將所有信息輸出到另一端


ls /etc/passwd /app/passwd &> /dev/null (將不要的內(nèi)容刪除)

2>&1 將錯(cuò)誤輸出轉(zhuǎn)為正確輸出

1>&2 將正確輸出轉(zhuǎn)為錯(cuò)誤輸出

此外后频,> 當(dāng)文件不存在時(shí)創(chuàng)建,當(dāng)文件存在時(shí),文件內(nèi)容會被覆蓋卑惜,可用set -C: 禁止將內(nèi)容覆蓋已有文件,但可追加(防止覆蓋)膏执,相反set +C: 允許覆蓋(可取消覆蓋)

如圖:

>| 文件:強(qiáng)制覆蓋(臨時(shí)取消)

>> 原有內(nèi)容基礎(chǔ)上,追加內(nèi)容

2>>: 追加重定向錯(cuò)誤輸出數(shù)據(jù)流

?標(biāo)準(zhǔn)輸出和錯(cuò)誤輸出各自定向至不同位置

COMMAND > /path/to/file.out 2> /path/to/error.out


?():合并多個(gè)程序輸出到目的文件

( cal 2007 ; cal 2008 ) > all.txt

()的比>的優(yōu)先級高露久,>的優(yōu)先級比更米;高



2、tr 轉(zhuǎn)換和刪除字符

?tr [選項(xiàng)]... SET1 [SET2] 例:tr -c ‘a(chǎn)dsc' ‘xrd’? aaadddssscc? xxxrrrddddd

ctrl+c 中斷命令

?選項(xiàng):-c –C --complement:補(bǔ)集毫痕,反向選擇

-d --delete:刪除所有屬于第一字符集的字符-s --squeeze-repeats:把連續(xù)重復(fù)的字符以單獨(dú)一個(gè)字符表示征峦,(把重復(fù)字符替換成一個(gè),多余的刪掉消请,只留一個(gè))

-t --truncate-set1:將第一個(gè)字符集對應(yīng)字符轉(zhuǎn)化為第二字符集(要一一對齊栏笆,沒對應(yīng)的原樣輸出,轉(zhuǎn)換時(shí)臊泰,前后參數(shù)對稱)

-dc 刪除除了某些字符之外的字符-v 垂直輸出例:tr -dc 'a-d'ahdkakjdhk 按ctrl+d才會有結(jié)果adad

對應(yīng)的字符? [:alnum:]:字母和數(shù)字 [:alpha:]:字母 [:cntrl:]:控制(非打域燃印)字符 [:digit:]:數(shù)字 [:graph:]:圖形字符 [:lower:]:小寫字母 [:print:]:可打印字符 [:punct:]:標(biāo)點(diǎn)符號 [:space:]:空白字符() [:upper:]:大寫字母 [:xdigit:]:十六進(jìn)制字符


3、從文件中導(dǎo)入STDIN(標(biāo)準(zhǔn)輸入)

使用<來重定向標(biāo)準(zhǔn)輸入某些命令能夠接受從文件中導(dǎo)入的STDIN? tr ‘a(chǎn)-z’ ‘A-Z’< /etc/issue 或tr ‘a(chǎn)-z’ ‘A-Z’< /etc/issue >f1 或tr ‘a(chǎn)-z’ ‘A-Z ’>f2 < /etc/issue該命令會把/etc/issue中的小寫字符都轉(zhuǎn)換成大寫字符


?tr –d abc < /etc/fstab 刪除fstab文件中的所有abc中任意字符


4缸逃、使用“<<終止詞”命令從鍵盤把多行重導(dǎo)向給STDIN针饥,多數(shù)使用EOF或END?

有時(shí)被稱為就地文本(heretext)mail -s "Please Call(標(biāo)題名)" admin@magedu.com(接收人)

>? Please give me a call when you get in. We may need

>? to do some maintenance on server1.

>? Details when you're on-site

>? Zhang

>? END

如圖:

查看是否收到? 輸入mail

群發(fā)文件:mail -s "hello" wang


重頭戲來了,在以后的學(xué)習(xí)中我們常用管道來轉(zhuǎn)發(fā)各種標(biāo)準(zhǔn)輸出

什么是管道需频?

(使用符號“|”表示)用來連接命令傳給下一條命令(輸出正確的定向丁眼,)

命令1 | 命令2 | 命令3 | …

?STDERR(標(biāo)準(zhǔn)錯(cuò)誤)默認(rèn)不能通過管道轉(zhuǎn)發(fā),可利用2>&1 或 |& 實(shí)現(xiàn)


管道可以無限接續(xù)下去直到把文件處理滿意

實(shí)例:獲取本機(jī)的ip地址


管道中 - 符號

?示例:

將 /home 里面的文件打包昭殉,但打包的數(shù)據(jù)不是記錄到文件苞七,而是傳送到 stdout,經(jīng)過管道后饲化,將 tar -cvf - /home 傳送給后面的 tar -xvf - , 后面的這個(gè) - 則是取前一個(gè)命令的stdout, 因此吗伤,就不需要使用臨時(shí)file了

?tar -cvf - /home | tar -xvf -

重定向到多個(gè)目標(biāo)(tee)

Command1 | tee [-a] filename | Command2

可以把Command1的STDOUT保存在文件中吃靠,此外做為Command2的輸入

-a可以追加內(nèi)容


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市足淆,隨后出現(xiàn)的幾起案子巢块,更是在濱河造成了極大的恐慌,老刑警劉巖巧号,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件族奢,死亡現(xiàn)場離奇詭異,居然都是意外死亡丹鸿,警方通過查閱死者的電腦和手機(jī)越走,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人廊敌,你說我怎么就攤上這事铜跑。” “怎么了骡澈?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵锅纺,是天一觀的道長。 經(jīng)常有香客問我肋殴,道長囤锉,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任护锤,我火速辦了婚禮官地,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘蔽豺。我一直安慰自己区丑,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布修陡。 她就那樣靜靜地躺著沧侥,像睡著了一般。 火紅的嫁衣襯著肌膚如雪魄鸦。 梳的紋絲不亂的頭發(fā)上宴杀,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天,我揣著相機(jī)與錄音拾因,去河邊找鬼旺罢。 笑死,一個(gè)胖子當(dāng)著我的面吹牛绢记,可吹牛的內(nèi)容都是我干的扁达。 我是一名探鬼主播,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼蠢熄,長吁一口氣:“原來是場噩夢啊……” “哼跪解!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起签孔,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤叉讥,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后饥追,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體图仓,經(jīng)...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年但绕,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了救崔。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,622評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖帚豪,靈堂內(nèi)的尸體忽然破棺而出碳竟,到底是詐尸還是另有隱情,我是刑警寧澤狸臣,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布莹桅,位于F島的核電站,受9級特大地震影響烛亦,放射性物質(zhì)發(fā)生泄漏诈泼。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一煤禽、第九天 我趴在偏房一處隱蔽的房頂上張望铐达。 院中可真熱鬧,春花似錦檬果、人聲如沸瓮孙。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽杭抠。三九已至,卻和暖如春恳啥,著一層夾襖步出監(jiān)牢的瞬間偏灿,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工钝的, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留翁垂,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓硝桩,卻偏偏與公主長得像沿猜,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子碗脊,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評論 2 348

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