<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 一篇對(duì)大家學(xué)習(xí),理解linux很有用的文章

          一篇對(duì)大家學(xué)習(xí),理解linux很有用的文章

          作者: 時(shí)間:2016-09-12 來源:網(wǎng)絡(luò) 收藏

          由于大多數(shù)命令都以參數(shù)的形式在命令行上指定輸入文件的文件名,所以輸入重定向并不經(jīng)常使用。盡管如此,當(dāng)要使用一個(gè)不接受文件名作為輸入?yún)?shù)的命令,而需要的輸入內(nèi)容又存在一個(gè)文件里時(shí),就能用輸入重定向解決問題。

          1. 輸出重定向

          輸出重定向是指把命令(或可執(zhí)行程序)的標(biāo)準(zhǔn)輸出或標(biāo)準(zhǔn)錯(cuò)誤輸出重新定向到指定文件中。這樣,該命令的輸出就不顯示在屏幕上,而是寫入到指定文件中。

          輸出重定向比輸入重定向更常用,很多情況下都可以使用這種功能。例如,如果某個(gè)命令的輸出很多,在屏幕上不能完全顯示,那么將輸出重定向到一個(gè)文件中,然后再用文本編輯器打開這個(gè)文件,就可以查看輸出信息;如果想保存一個(gè)命令的輸出,也可以使用這種方法。還有,輸出重定向可以用于把一個(gè)命令的輸出當(dāng)作另一個(gè)命令的輸入(還有一種更簡(jiǎn)單的方法,就是使用管道,將在下面介紹)。

          輸出重定向的一般形式為:命令>文件名。例如:

          $ ls > directory.out

          $ cat directory.out

          ch1.doc ch2.doc ch3.doc chimp config mail/ test/

          $

          將ls命令的輸出保存為一個(gè)名為directory.out的文件。

          注:如果>符號(hào)后邊的文件已存在,那么這個(gè)文件將被重寫。

          為避免輸出重定向中指定文件只能存放當(dāng)前命令的輸出重定向的內(nèi)容,shell提供了輸出重定向的一種追加手段。輸出追加重定向與輸出重定向的功能非常相似,區(qū)別僅在于輸出追加重定向的功能是把命令(或可執(zhí)行程序)的輸出結(jié)果追加到指定文件的最后,而該文件原有內(nèi)容不被破壞。

          如果要將一條命令的輸出結(jié)果追加到指定文件的后面,可以使用追加重定向操作符>>。形式為:命令>>文件名。例如:

          $ ls *.doc>>directory.out

          $ cat directory.out

          ch1.doc ch2.doc ch3.doc chimp config mail/ test/

          ch1.doc ch2.doc ch3.doc

          $

          和程序的標(biāo)準(zhǔn)輸出重定向一樣,程序的錯(cuò)誤輸出也可以重新定向。使用符號(hào)2>(或追加符號(hào)2>>)表示對(duì)錯(cuò)誤輸出設(shè)備重定向。例如下面的命令:

          $ ls /usr/tmp 2> err.file

          可在屏幕上看到程序的正常輸出結(jié)果,但又將程序的任何錯(cuò)誤信息送到文件err.file中,以備將來檢查用。

          還可以使用另一個(gè)輸出重定向操作符(>)將標(biāo)準(zhǔn)輸出和錯(cuò)誤輸出同時(shí)送到同一文件中。例如:

          $ ls /usr/tmp > output.file

          利用重定向?qū)⒚罱M合在一起,可實(shí)現(xiàn)系統(tǒng)單個(gè)命令不能提供的新功能。例如使用下面的命令序列:

          $ ls /usr/bin > /tmp/dir

          $ wc –w /tmp/dir

          459

          統(tǒng)計(jì)了/usr/bin目錄下的文件個(gè)數(shù)。

          管 道

          將一個(gè)程序或命令的輸出作為另一個(gè)程序或命令的輸入,有兩種方法,一種是通過一個(gè)臨時(shí)文件將兩個(gè)命令或程序結(jié)合在一起,例如上個(gè)例子中的/tmp/dir文件將ls和wc命令聯(lián)在一起;另一種是Linux所提供的管道功能。這種方法比前一種方法更好。

          管道可以把一系列命令連接起來,這意味著第一個(gè)命令的輸出會(huì)作為第二個(gè)命令的輸入通過管道傳給第二個(gè)命令,第二個(gè)命令的輸出又會(huì)作為第三個(gè)命令的輸入,以此類推。顯示在屏幕上的是管道行中最后一個(gè)命令的輸出(如果命令行中未使用輸出重定向)。

          通過使用管道符“|”來建立一個(gè)管道行。用管道重寫上面的例子:

          $ ls /usr/bin|wc -w

          1789

          再如:

          $ cat sample.txt|grep High|wc -l

          管道將cat命令(列出一個(gè)文件的內(nèi)容)的輸出送給grep命令。grep命令在輸入里查找單詞High,grep命令的輸出則是所有包含單詞High的行,這個(gè)輸出又被送給wc命令,wc命令統(tǒng)計(jì)出輸入中的行數(shù)。假設(shè)sample.txt文件的內(nèi)容如下:

          Things to do today:

          Low:Go grocery shopping

          High:Return movie

          High:Clear level 3 in Alien vs. Predator

          Medium:Pick up clothes from dry cleaner

          那么該管道行的結(jié)果是2。

          命令替換

          命令替換和重定向有些相似,但區(qū)別在于命令替換是將一個(gè)命令的輸出作為另外一個(gè)命令的參數(shù)。常用命令格式為:

          command1 `command2`

          其中,command2的輸出將作為command1的參數(shù)。需要注意的是這里的`符號(hào),被它括起來的內(nèi)容將作為命令執(zhí)行,執(zhí)行后的結(jié)果作為command1的參數(shù)。例如:

          $ cd `pwd`

          該命令將pwd命令列出的目錄作為cd命令的參數(shù),結(jié)果仍然是停留在當(dāng)前目錄下。

          第二十二課 在Bash中的操作      2000年/5月/29日

          命令和文件名擴(kuò)展特性

          Bash命令行具有命令和文件名擴(kuò)展特性。當(dāng)輸入一個(gè)還沒完成的命令或文件名時(shí),只需鍵入Tab鍵就能激活命令和文件名擴(kuò)展特性,從而完成該命令的剩余輸入。如果有多個(gè)命令或文件的前綴相同,Bash將響鈴并等待用戶輸入足夠的字符,以便選擇唯一的命令或文件名,如果找到,系統(tǒng)將自動(dòng)補(bǔ)齊搜索到的命令或文件名,用戶按回車鍵后,系統(tǒng)將執(zhí)行這條指令。例如:

          $ cat pre

          $ cat preface

          Bash也能列出當(dāng)前目錄下部分匹配的文件名來完成文件名擴(kuò)展。如果鍵入Esc,然后鍵入?,shell將列出所有與輸入的字符串相匹配的文件名。例如下例,在沒有完成的輸入后鍵入Esc ?,shell將列出所有與輸入的字符串相匹配的字符串,然后shell回顯命令行,根據(jù)列出的文件名,可以鍵入要輸入的文件名或按下Tab鍵來完成文件名擴(kuò)展。例如:

          $ ls

          document docudrama

          $ cat doc

          document

          docudrama

          $ cat docudrama

          [例】下面是一個(gè)目錄包含的文件列表:

          Firebird2.7.tgz Firebird.README Firebird2.60.tgz

          FireBird Firebird2.60.tgz.README

          現(xiàn)在要?jiǎng)h除Firebird2.60.tgz.README文件,鍵入:

          $ rm –f Fi

          系統(tǒng)會(huì)發(fā)出警報(bào)聲,并且自動(dòng)將命令行補(bǔ)全為:

          $ rm –f Fire

          并等待用戶進(jìn)一步輸入文件名的后面部分?,F(xiàn)在再鍵入:

          b



          關(guān)鍵詞: 學(xué)習(xí) linux

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();