qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請(qǐng)?jiān)L問(wèn) http://qaseven.github.io/

          Linux中命令鏈接操作符的十個(gè)最佳實(shí)例

           Linux命令中的鏈接的意思是,通過(guò)操作符的行為將幾個(gè)命令組合執(zhí)行。Linux中的鏈接命令,有些像你在shell中寫短小的shell腳本,并直接在終端中執(zhí)行。鏈接使得自動(dòng)處理變得更方便。不僅如此,一個(gè)無(wú)人看管的機(jī)器在鏈接操作符的幫助下能夠十分有條理地運(yùn)行。
            本文旨在介紹一些常用的鏈接操作符,通過(guò)簡(jiǎn)短的描述和相關(guān)的例子幫助讀者提高生產(chǎn)力、降低系統(tǒng)負(fù)載、寫出更加簡(jiǎn)短有意義的代碼。
            1. 和號(hào)操作符 (&)
            ‘&’的作用是使命令在后臺(tái)運(yùn)行。只要在命令后面跟上一個(gè)空格和 ‘&’。你可以一口氣在后臺(tái)運(yùn)行多個(gè)命令。
            在后臺(tái)運(yùn)行一個(gè)命令:
            tecmint@localhost:~$ ping -c5 www.tecmint.com &
            同時(shí)在后臺(tái)運(yùn)行兩個(gè)命令:
            root@localhost:/home/tecmint# apt-get update & mkdit test &
            2. 分號(hào)操作符 (;)
            分號(hào)操作符使你可以一口氣運(yùn)行幾個(gè)命令,命令順序執(zhí)行。
            root@localhost:/home/tecmint# apt-get update ; apt-get upgrade ; mkdir test
            上述命令先后執(zhí)行了update和upgrade,最后在當(dāng)前工作目錄下創(chuàng)建了一個(gè)‘test’文件夾
            3. 與操作符 (&&)
            如果第一個(gè)命令執(zhí)行成功,與操作符 (&&)才會(huì)執(zhí)行第二個(gè)命令,也就是說(shuō),第一個(gè)命令退出狀態(tài)是0。(譯注:原文的這里明顯寫錯(cuò)了,我們進(jìn)行了改譯,有興趣的讀者可以參看原文以及原文下面的評(píng)論。在UNIX里面,0表示無(wú)錯(cuò)誤,而所有非0返回值都是各種錯(cuò)誤)。這個(gè)命令在檢查最后一個(gè)命令的執(zhí)行狀態(tài)時(shí)很有用。
            比如,我想使用links 命令在終端中訪問(wèn)網(wǎng)站tecmint.com,但在這之前我需要檢查主機(jī)是否在線或不在線。
            root@localhost:/home/tecmint# ping -c3 www.tecmint.com && links www.tecmint.com
            4. 或操作符 (||)
            或操作符 (||)很像編程中的else語(yǔ)句。上面的操作符允許你在第一個(gè)命令失敗的情況下執(zhí)行第二個(gè)命令,比如,第一個(gè)命令的退出狀態(tài)是1。
            舉例來(lái)說(shuō),我想要在非root帳戶中執(zhí)行‘apt-get update‘,如果第一個(gè)命令失敗了,接著會(huì)執(zhí)行第二個(gè)命令‘links www.tecmint.com‘。
            tecmint@localhost:~$ apt-get update || links tecmint.com
            上面的命令中,由于該用戶不允許更新系統(tǒng),這意味著第一個(gè)命令的退出狀態(tài)是’1′,因此最后一個(gè)命令‘links tecmint.com‘會(huì)執(zhí)行。
            如果第一個(gè)命令成功執(zhí)行并且退出狀態(tài)是‘0‘呢?很明顯的,第二個(gè)命令不會(huì)執(zhí)行。
            tecmint@localhost:~$ mkdir test || links tecmint.com
            這里,用戶在家目錄創(chuàng)建了一個(gè)‘test‘文件夾,這是被允許的。命令成功的執(zhí)行,退出狀態(tài)是‘0‘,因此,最后的命令不會(huì)執(zhí)行。
            5. 非操作符 (!)
            非操作符 (!)很像except語(yǔ)句。這個(gè)命令會(huì)執(zhí)行除了提供的條件外的所有的語(yǔ)句。要理解這點(diǎn),在你的主目錄創(chuàng)建一個(gè)目錄‘tecmint’,并‘cd’到它這里。
          tecmint@localhost:~$ mkdir tecmint
          tecmint@localhost:~$ cd tecmint
            接下來(lái),在文件夾‘tecmint’下創(chuàng)建不同類型的文件。
            tecmint@localhost:~/tecmint$ touch a.doc b.doc a.pdf b.pdf a.xml b.xml a.html b.html
            看一下我們?cè)谖募A‘tecmint’創(chuàng)建的新文件。
          tecmint@localhost:~/tecmint$ ls
          a.doc  a.html  a.pdf  a.xml  b.doc  b.html  b.pdf  b.xml
            用一種聰明的辦法馬上刪除除了 ‘html’之外的所有文件。
            tecmint@localhost:~/tecmint$ rm -r !(*.html)
            驗(yàn)證一下上次的執(zhí)行結(jié)果,使用ls 命令列出可見(jiàn)所有文件。
            tecmint@localhost:~/tecmint$ ls
            a.html  b.html

           6. 與或操作符 (&& – ||)
            上面的操作符實(shí)際上是‘與’和‘或’操作符的組合。它很像‘if-else‘語(yǔ)句。
            比如,我們ping tecmint.com,如果成功打印‘已驗(yàn)證’,否則打印‘主機(jī)故障’。
            tecmint@localhost:~/tecmint$ ping -c3 www.tecmint.com && echo "Verified" || echo "Host Down"
            示例輸出
          PING www.tecmint.com (212.71.234.61) 56(84) bytes of data.
          64 bytes from www.tecmint.com (212.71.234.61): icmp_req=1 ttl=55 time=216 ms
          64 bytes from www.tecmint.com (212.71.234.61): icmp_req=2 ttl=55 time=224 ms
          64 bytes from www.tecmint.com (212.71.234.61): icmp_req=3 ttl=55 time=226 ms
          --- www.tecmint.com ping statistics ---
          3 packets transmitted, 3 received, 0% packet loss, time 2001ms
          rtt min/avg/max/mdev = 216.960/222.789/226.423/4.199 ms
          Verified
            現(xiàn)在,斷開(kāi)我們現(xiàn)在的網(wǎng)絡(luò)連接誒,再試一下相同的命令。
            tecmint@localhost:~/tecmint$ ping -c3 www.tecmint.com && echo "verified" || echo "Host Down"
            實(shí)例輸出
            ping: unknown host www.tecmint.com
            Host Down
            7. 管道操作符 (|)
            PIPE在將第一個(gè)命令的輸出作為第二個(gè)命令的輸入時(shí)很有用。比如,‘ls -l’的輸出通過(guò)管道到‘less’,并看一下輸出。
            tecmint@localhost:~$ ls -l | less
            8. 命令合并操作符 {}
            合并兩個(gè)或多個(gè)命令,第二個(gè)命令依賴于第一個(gè)命令的執(zhí)行。
            比如,檢查一下文件‘xyz.txt’是否在Downloads目錄下,如果不存在則創(chuàng)建之并輸出提示信息。
            tecmint@localhost:~$ [ -f /home/tecmint/Downloads/xyz.txt ] || touch /home/tecmint/Downloads/xyz.txt; echo "The file does not exist"
            但是這樣的命令的運(yùn)行結(jié)果并不如我們預(yù)期的運(yùn)行,會(huì)始終都輸出提示信息。因此需要使用{}操作符來(lái)合并命令:
          tecmint@localhost:~$ [ -f /home/tecmint/Downloads/xyz1.txt ] || {touch /home/tecmint/Downloads/xyz.txt; echo "The file does not exist"}
          “The file does not exist”
            (譯注:原文這里應(yīng)該也是復(fù)制或書寫的時(shí)候,出現(xiàn)了一些問(wèn)題,例子中并沒(méi)有出現(xiàn)小標(biāo)題中的"{}"操作符,所以這里我們進(jìn)行了修改)
            9. 優(yōu)先操作符 ()
            這個(gè)操作符可以讓命令以優(yōu)先順序執(zhí)行。
            Command_x1 &&Command_x2 || Command_x3 && Command_x4.
            在上面的偽代碼中,如果Command_x1執(zhí)行失敗了會(huì)怎么樣,Command_x2,Command_x3, Command_x4沒(méi)有一個(gè)會(huì)執(zhí)行,對(duì)于這種情況,我們使用優(yōu)先操作符。
            (Command_x1 &&Command_x2) || (Command_x3 && Command_x4)
            在上面的偽代碼中,如果Command_x1執(zhí)行失敗,Command_x2不會(huì)執(zhí)行,但是Command_x3會(huì)繼續(xù)執(zhí)行, Command_x4會(huì)依賴于 Command_x3的退出狀態(tài)。
            10. 連接符 ()
            連接符 ()如它名字所說(shuō),被用于連接shell中那些太長(zhǎng)而需要分成多行的命令。可以在輸入一個(gè)“\”之后就回車,然后繼續(xù)輸入命令行,直到輸入完成。比如,下面的命令會(huì)打開(kāi)文本文件test(1).txt。
            tecmint@localhost:~/Downloads$ nano test\
            1.txt
            今天就到這里,我會(huì)近日開(kāi)始另外一個(gè)有趣的文章。不要走開(kāi),繼續(xù)關(guān)注我們。不要忘記在評(píng)論欄里提出有價(jià)值的反饋。

          posted on 2014-01-20 10:26 順其自然EVO 閱讀(190) 評(píng)論(0)  編輯  收藏 所屬分類: linux

          <2014年1月>
          2930311234
          567891011
          12131415161718
          19202122232425
          2627282930311
          2345678

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 临沭县| 寿阳县| 黎平县| 康定县| 榕江县| 武宣县| 丹阳市| 凤山市| 麻城市| 岗巴县| 松溪县| 金塔县| 宜兰县| 军事| 台中县| 苗栗县| 瓮安县| 宜城市| 松滋市| 溧阳市| 固始县| 资溪县| 临沭县| 吴桥县| 新龙县| 武陟县| 龙山县| 淮北市| 特克斯县| 南涧| 武隆县| 北票市| 邓州市| 育儿| 壤塘县| 阿拉善左旗| 库尔勒市| 台州市| 郯城县| 玉林市| 广南县|