亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 4891 | 回復(fù): 0
打印 上一主題 下一主題

輸入輸出重定向 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2009-10-13 14:22 |只看該作者 |倒序?yàn)g覽
      
            9.1 輸入輸出重定向簡介
            shell提供重定向一個(gè)命令的輸入和輸出的功能。大多數(shù)的命令的輸出是輸出到終端;比如date,ls,who等等。一些命令從你的鍵盤得到輸入,例子包括mail,write,cat。
            在UNIX系統(tǒng)中任何事物都是一個(gè)文件,包括你的終端和鍵盤。輸出重定向
            讓你將一個(gè)命令的輸出送到除終端以外的其他的文件中。而輸入重定向讓你從鍵盤以外的文件中得到輸入。
            輸出重定向可以用來捕獲一個(gè)命令的輸出,作為記錄日志的需要或?qū)ζ溥M(jìn)行更進(jìn)一步的處理。輸入重定向讓你可以使用一個(gè)編輯器創(chuàng)建一個(gè)文件,然后將這個(gè)文件送到一個(gè)命令,而來代替沒有編輯的能力的交互式的輸入(例如mail命令)。
            這一章介紹輸入輸出重定向,然后介紹一些UNIX的過濾器。過濾器是一種特殊的工具,它能進(jìn)一步地處理一個(gè)文件的內(nèi)容。
            9.2 標(biāo)準(zhǔn)輸入,標(biāo)準(zhǔn)輸出,和標(biāo)準(zhǔn)錯(cuò)誤
            每一次系統(tǒng)啟動(dòng)的時(shí)候,都會(huì)自動(dòng)建立三個(gè)文件,這三個(gè)文件叫做標(biāo)準(zhǔn)輸入,標(biāo)準(zhǔn)輸出,標(biāo)準(zhǔn)錯(cuò)誤。
            shell從標(biāo)準(zhǔn)輸入文件得到輸入。這個(gè)文件使用C語言的描述符,0,來打開,通常是你的鍵盤。所以,當(dāng)shell需要輸入的時(shí)候,必須使用鍵盤來輸入數(shù)據(jù)。
            一些命令,如mail,write,cat,從標(biāo)準(zhǔn)輸入得到輸入,其方式為輸入命令和參數(shù),回車,然后命令會(huì)等待你提供輸入來進(jìn)行處理。輸入的結(jié)束標(biāo)志是回車和ctrl+d
            標(biāo)準(zhǔn)輸出文文件的作用是shell將它的輸出寫到這個(gè)文件。這個(gè)文件使用C語言的描述符號(hào),1來打開,它通常為你的終端。因此,當(dāng)shell產(chǎn)生輸出,這些輸出數(shù)據(jù)通常顯示在你的屏幕上
            大多數(shù)的UNIX命令產(chǎn)生標(biāo)準(zhǔn)輸出。這些命令有date,ls,cat,who等等。
            標(biāo)準(zhǔn)錯(cuò)誤文件的作用是你的shell會(huì)輸出錯(cuò)誤信息到這個(gè)文件中。這個(gè)文件使用C語言的描述符,2,來打開。同標(biāo)準(zhǔn)錯(cuò)誤文件一樣,標(biāo)準(zhǔn)錯(cuò)誤會(huì)輸出到你的終端。標(biāo)準(zhǔn)錯(cuò)誤可以重新定向輸出到獨(dú)立的標(biāo)準(zhǔn)錯(cuò)誤文件中。
            大多數(shù)UNIX系統(tǒng)命令在被不恰當(dāng)調(diào)用的時(shí)候會(huì)產(chǎn)生一個(gè)錯(cuò)誤信息。想要看一個(gè)標(biāo)準(zhǔn)錯(cuò)誤的例子,輸入:cp回車。cp使用信息會(huì)顯示在你的屏幕上,而這些信息實(shí)際上是通過標(biāo)準(zhǔn)錯(cuò)誤流來傳送的
            下面將要告訴你如何更改標(biāo)準(zhǔn)輸入,標(biāo)準(zhǔn)輸出,標(biāo)準(zhǔn)錯(cuò)誤的默認(rèn)值,如從一個(gè)文件得到輸入而不是從鍵盤,在其他地方產(chǎn)生輸出(而錯(cuò)誤信息)而不是在終端。
            9.3 輸入重定向 - 和>>
                  所有的可以輸出到標(biāo)準(zhǔn)輸出的命令都能重定向輸出到另外一個(gè)文件。
                  例子;
                  建立/覆蓋 ?????????建立/增加
                  $ date?> date.out? ?????$ ls >>ls.out
                  $ date > who.log ???????$ who >> who.log
                  $cat >?cat.out ????????$ ls >> who.log
                  在此輸入文本
                  ctrl + d
            許多命令在你的屏幕上產(chǎn)生輸出。輸出重定向讓你可以捕獲這些輸出,并且保存為一個(gè)文本文件。
            如果在一個(gè)命令的后面有一個(gè)輸出重定向符號(hào)(>),這個(gè)命令產(chǎn)生的標(biāo)準(zhǔn)輸出就會(huì)輸出到這個(gè)文件中,而不是到輸出到屏幕上。如果這個(gè)文件在命令執(zhí)行的時(shí)候并不存在,它會(huì)被自動(dòng)建立。如果這個(gè)文件存在,它的內(nèi)容會(huì)被覆蓋;
            如果你想要在文件后添加,而不是覆蓋文件。你可以使用輸出重定向的附加的符號(hào)(>>),如果文件不存在,也會(huì)被創(chuàng)建。在兩個(gè)>符號(hào)之間不能有空格。
            注意:shell不能在同一時(shí)刻打開同一個(gè)文件作為輸入重定向和輸出重定向。所以,唯一的限制是輸入文件和輸出文件必須不同。否則你會(huì)丟失文件的原始的內(nèi)容,而輸出重定向也會(huì)失敗。
            例子: cat f1 f2 >f1 會(huì)導(dǎo)致文件f1的內(nèi)容丟失。
            9.5 錯(cuò)誤重定向-2>和2>>
                  任何命令,只要能產(chǎn)生錯(cuò)誤信息到標(biāo)準(zhǔn)錯(cuò)誤,都可以重定向錯(cuò)誤信息到另外的文件。
                  例子:
                  ?$ cp 2> cp.err ???創(chuàng)建/覆蓋
                  ?$ cp 2>> cp.err ??創(chuàng)建/增加
                  ?$
                  ?$ more cp.err
                  ?Usage: cp [-f] [-i] [-p] source_file target_file
                  ???? cp [-f] [-i] [-p] source_file ...target_directory
                  ???? cp [-f] [-i] [-p] -R|-rsource_directory
                  ?Usage: cp [-f] [-i] [-p] source_file target_file
                  ???? cp [-f] [-i] [-p] source_file ...target_directory
                  ???? cp [-f] [-i] [-p] -R|-rsource_directory
            如果一個(gè)命令沒有被正確地鍵入,以至shell不能正確地解釋它,就會(huì)產(chǎn)生一個(gè)錯(cuò)誤信息。即使這個(gè)錯(cuò)誤信息是在你的屏幕上顯示,它們實(shí)際上是通過與原始輸出信息不同的文件來傳輸?shù)。錯(cuò)誤信息的傳送是通過錯(cuò)誤流,也稱為標(biāo)準(zhǔn)錯(cuò)誤,來傳輸?shù),?biāo)準(zhǔn)錯(cuò)誤的文件描述符為2。
            所以,當(dāng)指明一個(gè)錯(cuò)誤重定向的時(shí)候,你必須指明你想要捕獲是信息流為2的信息。為了重定向標(biāo)準(zhǔn)錯(cuò)誤(2>),在2和>之間不能有空格。同輸出重定向相似的是,如果需要,會(huì)創(chuàng)建一個(gè)文件,或者覆蓋已經(jīng)存在的文件。你能夠使用(2>>)來在一個(gè)已存在的文件末尾添加信息。
            從管理員的觀點(diǎn)來看,這種機(jī)制十分有用。經(jīng)常地,你只關(guān)心命令出錯(cuò)或經(jīng)驗(yàn)問題。由于錯(cuò)誤信息同普通的輸出信息分離,你可以很容易捕獲這些錯(cuò)誤信息,和維護(hù)一個(gè)日志文件,其中記錄有你的程序遇到的問題。
            9.6 什么是過濾器
                  ※讀取標(biāo)準(zhǔn)輸入和產(chǎn)生標(biāo)準(zhǔn)輸出。
                  ※過濾輸出流或者一個(gè)文件的內(nèi)容
                  ※發(fā)送結(jié)果到屏幕,不改變輸出流或文件的內(nèi)容。
                  ※當(dāng)和輸出重定向相聯(lián)系的時(shí)候處理其它命令的輸出。
                  例子:vcat,grep,sort,wc
            你已經(jīng)了解了如何重定向命令的輸入或輸出。一些命令從標(biāo)準(zhǔn)輸入接收輸入,產(chǎn)生輸出到標(biāo)準(zhǔn)輸出。這些命令就是過濾器。過濾器不會(huì)修改其處理的文件的內(nèi)容。過濾器產(chǎn)生的結(jié)果通常都傳送到終端。
            過濾器在處理文件的內(nèi)容時(shí)非常有用。例如計(jì)算行的數(shù)目(wc),按照字母排序(sort),或查找包含有一個(gè)模型的行(grep)。
            另外,過濾器可以用來處理任何命令的輸出。由于過濾器能夠操作一個(gè)文件,并且命令的輸出能夠被重定向到一個(gè)文件,這兩種操作聯(lián)合起來能夠?qū)?zhí)行任何命令的輸出進(jìn)行更強(qiáng)大和更靈活的處理。
            由于大多數(shù)的
            過濾器的輸出是輸出到標(biāo)準(zhǔn)輸出,被過濾的結(jié)果能夠被進(jìn)一步地處理,其方式是通過捕獲被過濾的輸出到一個(gè)文件,并且在這個(gè)被過濾的文件上再執(zhí)行另外的過濾。
            9.7 wc - 單詞計(jì)數(shù)(Word Count)
                  語法:
                  wc [-lwc] [file...] 計(jì)算一個(gè)文件的行數(shù),單詞數(shù),和字符數(shù)
                  例子:
                  $ wc funfile ??funfile作為命令行參數(shù)提供
                  116 529 3134 funfile
                  $
                  $ wc -l funfile
                  116 funfile
                  $
                  $ ls >ls.out
                  $ wc -w ls.out??計(jì)算在你的目錄下條目的數(shù)量。
                  72 ls.out

            wc命令計(jì)算被提交到標(biāo)準(zhǔn)輸入或是一個(gè)文件中的行數(shù),字?jǐn)?shù),和字符數(shù)。命令的選項(xiàng)有-l,-w,-c。-l選項(xiàng)會(huì)顯示行數(shù),-w選項(xiàng)會(huì)顯示字?jǐn)?shù),-c選項(xiàng)會(huì)顯示字符數(shù)。選項(xiàng)的順序沒有要求,輸出的結(jié)果都是按行,字和字符數(shù)排列。
            由于wc從標(biāo)準(zhǔn)輸入接收輸入,并且將其結(jié)果寫到標(biāo)準(zhǔn)輸出,所以wc是一個(gè)過濾器。對(duì)一個(gè)文件執(zhí)行wc不會(huì)影響到文件的內(nèi)容,因?yàn)樗械慕Y(jié)果都被送到屏幕上。
            其他例子
            ?$ wc 回車 ???????????計(jì)算從標(biāo)準(zhǔn)輸入提供的輸入
            ?ab cde
            ?fghijkl
            ?mno pqr stuvwxyz
            ?ctrl + d
            ?3 6 32
            ?$ wc whoson
                  $ sort whoson ????????以字母排列登錄的用戶名。
                  $ sort -u -k 1,1 whoson ???排序時(shí)排除雙倍行
            sort命令強(qiáng)大而靈活。它能夠被用來以數(shù)字或字母來對(duì)一個(gè)文件的行排序。通過sort也能選擇一行中的一個(gè)特殊的字段。sort也是一個(gè)過濾器,所以,它也能從標(biāo)準(zhǔn)輸入接收數(shù)據(jù),但是它也會(huì)排序作為命令行參數(shù)的文件的內(nèi)容,
            sort選項(xiàng) ????sort類型
            none ??????辭典(ASCII)
            -d ???????目錄(不處理非字母,數(shù)字,或空白的目錄)
            -n ???????數(shù)字
            -u ???????唯一的(刪除所有的雙倍行)
            默認(rèn)得字段之間的分隔符為空白字符-一個(gè)空格或一個(gè)TAB。你可以使用-t
            X選項(xiàng)來指定一個(gè)分隔符,其中X代表分隔符。由于冒號(hào)(:)在shell中沒有特殊的意義,于是它通常被用來作為一個(gè)文件中的分隔符。
            當(dāng)你確定了字段之間的分隔符是什么,你就可以使用sort 的-K n
            選項(xiàng)來通知sort命令,你想要基于那一個(gè)字段來排序,其中n代表sort將要排序的的字段號(hào)。sort命令假定字段號(hào)是由1開始的
            sort命令支持多個(gè)選項(xiàng)來執(zhí)行更復(fù)雜的操作。請(qǐng)使用man 來查找其具體用法。
            其它例子
            $ sort 回車 ???????排序的輸入來自標(biāo)準(zhǔn)輸入
            mmmmm
            xxxx
            aaaa
            ctrl + d
            aaaa
            mmmmm
            xxxx
            $ sort

本文來自ChinaUnix博客,如果查看原文請(qǐng)點(diǎn):http://blog.chinaunix.net/u2/84425/showart_2069328.html
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP