I/O重定向詳解

一箕慧、I/O重定向基本概念

I/O重定向有三種定義打開(kāi)文件:stdin (the keyboard), stdout (the screen), and stderr (error messages output to the screen)躯泰。每個(gè)打開(kāi)的文件都是通過(guò)文件描述符(File Descriptor)來(lái)標(biāo)識(shí)的唧躲,內(nèi)核為每個(gè)進(jìn)程維護(hù)了一個(gè)文件描述符表挟秤,這個(gè)表以FD為索引,再進(jìn)一步指向文件的詳細(xì)信息挤渔。在進(jìn)程創(chuàng)建時(shí)栗菜,內(nèi)核為進(jìn)程默認(rèn)創(chuàng)建了0、1钩杰、2三個(gè)特殊的FD纫塌,這就是stdin、stdout和stderr讲弄。

二措左、stdout和stderr

查看文件File Descriptor

    [root@localhost/dev/fd]#ll /dev/fd/
    total 0
    lrwx------ 1 root root 64 Jul 16 07:18 0 -> /dev/pts/2
    lrwx------ 1 root root 64 Jul 16 07:18 1 -> /dev/pts/2
    lrwx------ 1 root root 64 Jul 16 07:18 2 -> /dev/pts/2
    lr-x------ 1 root root 64 Jul 16 07:18 3 -> /proc/5696/fd

支持的操作符號(hào)包括:

  • 1>或 > 把stdout重定向到文件中,并覆蓋文件中的內(nèi)容
示例1  
    [root@localhost~]#touch a.txt
    [root@localhost~]#ls > a.txt
    [root@localhost~]#cat a.txt
    a
    anaconda-ks.cfg
    Desktop
    Documents
    Downloads
    ...
 示例2 
    [root@localhost~]#touch b.txt
    [root@localhost~]#cat /etc/passwd b.txt
    root:x:0:0:root:/root:/bin/bash
    bin:x:1:1:bin:/bin:/sbin/nologin
    daemon:x:2:2:daemon:/sbin:/sbin/nologin
    adm:x:3:4:adm:/var/adm:/sbin/nologin
    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
    ...
  • 2> 把stderr重定向到文件中并覆蓋文件中的內(nèi)容
示例1  
    [root@localhost~]#lss 2> c.txt
    [root@localhost~]#cat c.txt
    bash: lss: command not found...
    Similar command is: 'ls'
示例2  
    [root@localhost~]#ls /ett 2> c.txt
    [root@localhost~]#cat c.txt
    ls: cannot access /ett: No such file or directory
  • &> 把所有輸出重定向到文件中并覆蓋文件中的內(nèi)容
示例1 
    [root@localhost~]#touch d.txt
    [root@localhost~]#ls /etc  /err &> d.txt
    [root@localhost~]#cat d.txt
    ls: cannot access /err: No such file or directory
    /etc:
    abrt
    adjtime
    aliases
    aliases.db
    ...

追加重定向(>>),不會(huì)覆蓋文件內(nèi)容

示例1   
    [root@localhost~]#cat a.txt
     /etc/drirc
    [root@localhost~]#ls /etc/issue >> a.txt
    [root@localhost~]#cat a.txt
    /etc/drirc
    /etc/issue
示例2
    [root@localhost~]#cat b.txt
    /etc/dnsmasq.conf
    [root@localhost~]#ls /ett 2>>b.txt
    [root@localhost~]#cat b.txt
    /etc/dnsmasq.conf
ls: cannot access /ett: No such file or directory
示例3
    [root@localhost~]#cat c.txt
    ls: cannot access /ett: No such file or directory
    [root@localhost~]#ls /etc/d
    dbus-1/                     dnsmasq.conf
    dconf/                      dnsmasq.d/
    default/                    dracut.conf
    depmod.d/                   dracut.conf.d/
    dhcp/                       drirc
    dleyna-server-service.conf  
    [root@localhost~]#ls /etc/drirc /ett &> c.txt
    [root@localhost~]#cat c.txt
    ls: cannot access /ett: No such file or directory
    /etc/drirc
  • 2>&1 將錯(cuò)誤和正確的信息放到同一個(gè)文件中,與>&和1>&2等價(jià)
    [root@localhost~]#ls /etc/issue /stt > d.txt 2>&1
    [root@localhost~]#cat d.txt
    ls: cannot access /stt: No such file or directory
/etc/issue

set -C :禁止將內(nèi)容覆蓋已有文件避除,但可追加強(qiáng)制覆蓋:“>|”
set +C :允許覆蓋

示例1
    [root@localhost~]#set -C
    [root@localhost~]#ls /etc/issue > a.txt
    -bash: a.txt: cannot overwrite existing file
    [root@localhost~]#ls /ett 2> a.txt
    -bash: a.txt: cannot overwrite existing file

()合并多個(gè)程序的stdout

    [root@localhost~]#(ls /etc/issue ; cat a.txt) > c.txt
    [root@localhost~]#cat c.txt
    /etc/issue
    /etc/drirc
    /etc/issue
    /etc/issue

三怎披、標(biāo)準(zhǔn)輸入

示例1
    [root@localhost~]#cat </etc/issue
    \S
    Kernel \r on an \m
示例2
    [root@localhost~]#cat >f1 <<eof
    > aaa
    > bbb
    > ccc
    > eof
<<終止詞必須相等,最后一個(gè)輸入相同即退出瓶摆;

四凉逛、其他

管道:
COMMAND1 | COMMAND2
將錯(cuò)誤和正確標(biāo)準(zhǔn)輸出

    ls /boot /err 2>&1 |tr 'a-z' 'A-Z'
    ls /boot /err  |& tr 'a-z' 'A-Z'

less 命令可以上下翻 直接退出
more 命令不可以上翻 退出按q

‘- ’符號(hào)
示例
將/home里面的文件打包,但打包的數(shù)據(jù)不是記錄到文件群井,而是傳遞到stdout状飞,經(jīng)過(guò)管道后,將tar - CVF - /home傳遞給后面的tar -xvg -,后面的這個(gè) - 則是天譴一個(gè)命令的stdout,因此诬辈,就不需要使用臨時(shí)file了

    tar -cvf - /home |tar -xvf -

tee命令
-a append 附加 ;不覆蓋原文件
示例

  ls /boot |tee ls.out
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末酵使,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子焙糟,更是在濱河造成了極大的恐慌口渔,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,194評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件穿撮,死亡現(xiàn)場(chǎng)離奇詭異缺脉,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)悦穿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門攻礼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人咧党,你說(shuō)我怎么就攤上這事秘蛔。” “怎么了傍衡?”我有些...
    開(kāi)封第一講書人閱讀 156,780評(píng)論 0 346
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)负蠕。 經(jīng)常有香客問(wèn)我蛙埂,道長(zhǎng),這世上最難降的妖魔是什么遮糖? 我笑而不...
    開(kāi)封第一講書人閱讀 56,388評(píng)論 1 283
  • 正文 為了忘掉前任绣的,我火速辦了婚禮,結(jié)果婚禮上欲账,老公的妹妹穿的比我還像新娘屡江。我一直安慰自己,他們只是感情好赛不,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,430評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布惩嘉。 她就那樣靜靜地躺著,像睡著了一般踢故。 火紅的嫁衣襯著肌膚如雪文黎。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 49,764評(píng)論 1 290
  • 那天殿较,我揣著相機(jī)與錄音耸峭,去河邊找鬼。 笑死淋纲,一個(gè)胖子當(dāng)著我的面吹牛劳闹,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 38,907評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼本涕,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼业汰!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起偏友,我...
    開(kāi)封第一講書人閱讀 37,679評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤蔬胯,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后位他,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體氛濒,經(jīng)...
    沈念sama閱讀 44,122評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,459評(píng)論 2 325
  • 正文 我和宋清朗相戀三年鹅髓,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了舞竿。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,605評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡窿冯,死狀恐怖骗奖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情醒串,我是刑警寧澤执桌,帶...
    沈念sama閱讀 34,270評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站芜赌,受9級(jí)特大地震影響仰挣,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜缠沈,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,867評(píng)論 3 312
  • 文/蒙蒙 一膘壶、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧洲愤,春花似錦颓芭、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,734評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至躺率,卻和暖如春玛界,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背悼吱。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,961評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工慎框, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人后添。 一個(gè)月前我還...
    沈念sama閱讀 46,297評(píng)論 2 360
  • 正文 我出身青樓笨枯,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子馅精,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,472評(píng)論 2 348

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