久久精品精选,精品九九视频,www久久只有这里有精品,亚洲熟女乱色综合一区
    分享

    Linux shell的標(biāo)準(zhǔn)輸入、輸出和錯(cuò)誤

     浸心閣 2016-03-17

    1.文件描述符

    在linux shell執(zhí)行命令時(shí),每個(gè)進(jìn)程都和三個(gè)打開的文件相聯(lián)系,并使用文件描述符來(lái)引用這些文件。由于文件描述符不容易記憶,shell同時(shí)也給出了相應(yīng)的文件名:

    文件 文件描述符
    輸入文件—標(biāo)準(zhǔn)輸入 0(缺省是鍵盤,為0時(shí)是文件或者其他命令的輸出)
    輸出文件—標(biāo)準(zhǔn)輸出 1(缺省是屏幕,為1時(shí)是文件)
    錯(cuò)誤輸出文件—標(biāo)準(zhǔn)錯(cuò)誤 2(缺省是屏幕,為2時(shí)是文件)
    系統(tǒng)中實(shí)際上有12個(gè)文件描述符,我們可以任意使用文件描述符3到9.


    2.文件重定向:改變程序運(yùn)行的輸入來(lái)源和輸出地點(diǎn)

    2.1.輸出重定向:

    Command > filename 把標(biāo)準(zhǔn)輸出重定向到一個(gè)新文件中
    Command >> filename 把標(biāo)準(zhǔn)輸出重定向到一個(gè)文件中(追加)
    Command > filename 把標(biāo)準(zhǔn)輸出重定向到一個(gè)文件中
    Command > filename 2>&1 把標(biāo)準(zhǔn)輸出和錯(cuò)誤一起重定向到一個(gè)文件中
    Command 2 > filename 把標(biāo)準(zhǔn)錯(cuò)誤重定向到一個(gè)文件中
    Command 2 >> filename 把標(biāo)準(zhǔn)輸出重定向到一個(gè)文件中(追加)
    Command >> filename2>&1 把標(biāo)準(zhǔn)輸出和錯(cuò)誤一起重定向到一個(gè)文件(追加)

    2.2.輸入重定向:

    Command < filename > filename2 Command命令以filename文件作為標(biāo)準(zhǔn)輸入,以filename2文件作為標(biāo)準(zhǔn)輸出
    Command < filename Command命令以filename文件作為標(biāo)準(zhǔn)輸入
    Command << delimiter  從標(biāo)準(zhǔn)輸入中讀入,知道遇到delimiter分界符

    2.3.綁定重定向

    Command >&m 把標(biāo)準(zhǔn)輸出重定向到文件描述符m中
    Command < &- 關(guān)閉標(biāo)準(zhǔn)輸入
    Command 0>&- 同上


    3.shell重定向的一些高級(jí)用法

    3.1.重定向標(biāo)準(zhǔn)錯(cuò)誤

    例子1:
    command 2> /dev/null
    如果command執(zhí)行出錯(cuò),將錯(cuò)誤的信息重定向到空設(shè)備
    例子2:
    command > out.put 2>&1
    將command執(zhí)行的標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯(cuò)誤重定向到out.put(也就是說不管command執(zhí)行正確還是錯(cuò)誤,輸出都打印到out.put)。


    3.2.exec用法
    exec命令可以用來(lái)替代當(dāng)前shell;換句話說,并沒有啟動(dòng)子shell,使用這一條命令時(shí)任何現(xiàn)有環(huán)境變量將會(huì)被清除,并重新啟動(dòng)一個(gè)shell(重新輸入用戶名和密碼進(jìn)入)。
    exec command
    其中,command通常是一個(gè)shell腳本。
    對(duì)文件描述符操作的時(shí)候用(也只有再這時(shí)候),它不會(huì)覆蓋你當(dāng)前的shell


    例子1:
    #!/bin/bash
    #file_desc


    exec 3<&0 0<name.txt
    read line1
    read line2
    exec 0<&3
    echo $line1
    echo $line2


    其中:
    首先,exec 3<&0 0<name.txt的意思是把標(biāo)準(zhǔn)輸入重定向到文件描述符3(0表示標(biāo)準(zhǔn)輸入),然后把文件name.txt內(nèi)容重定向到文件描述符0,實(shí)際上就是把文件name.txt中的內(nèi)容重定向到文件描述符3。然后通過exec打開文件描述符3;

    然后,通過read命令讀取name.txt的第一行內(nèi)容line1,第二行內(nèi)容line2,通過Exec 0<&3關(guān)閉文件描述符3;

    最后,用echo命令輸出line1和line2。最好在終端運(yùn)行一下這個(gè)腳本,親自嘗試一下。


    例子2:
    exec 3<>test.sh;
    #打開test.sh可讀寫操作,與文件描述符3綁定
     
    while read line<&3
     do
        echo $line;
    done
    #循環(huán)讀取文件描述符3(讀取的是test.sh內(nèi)容)
    exec 3>&-
    exec 3<&-
    #關(guān)閉文件的,輸入,輸出綁定


    參考:

    http://zqwt.012.blog.163.com/blog/static/1204468420103272857116/

    http://www.cnblogs.com/chengmo/archive/2010/10/20/1855805.html

    http://blog.csdn.net/flowingflying/article/details/5201199

      本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
      轉(zhuǎn)藏 分享 獻(xiàn)花(0

      0條評(píng)論

      發(fā)表

      請(qǐng)遵守用戶 評(píng)論公約

      類似文章 更多

      主站蜘蛛池模板: 亚洲精品一区二区制服| 午夜福利片1000无码免费| 精品人妻日韩中文字幕| 乱人伦无码中文视频在线| 久久精品亚洲乱码伦伦中文| 亚洲精品综合网二三区| 亚洲人亚洲人成电影网站色| 精品国产一区二区三区av性色 | 亚洲色大成网站WWW永久网站| 国精品无码一区二区三区左线| 一区二区三区国产不卡| 又爽又黄又无遮挡的视频| 人妻av无码系列一区二区三区| 伊人色综合一区二区三区影院视频| 国产成人久久精品一区二区三区 | 白丝乳交内射一二三区| 欧美综合婷婷欧美综合五月| 无码精品国产D在线观看| 成年在线观看免费人视频| 久久精品人妻中文系列葵司| 日韩V欧美V中文在线| 无码国内精品久久人妻| 成人爽A毛片免费视频| 久爱www人成免费网站| 久久久这里只有精品10 | 一区二区三区激情都市| 色综合久久久久综合体桃花网| 久热综合在线亚洲精品| 无码精品一区二区三区在线| 综合激情亚洲丁香社区| 中文字幕国产原创国产| 波多野结衣一区二区三区AV高清| 丁香五月婷激情综合第九色 | 国产亚洲国产精品二区| 欧美老熟妇XB水多毛多| 欧美视频专区一二在线观看| 成人乱码一区二区三区四区| 欧美巨鞭大战丰满少妇| 精品一区二区成人精品| 亚洲 日本 欧洲 欧美 视频| 午夜无码大尺度福利视频|