中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

LinuxBashShell命令重導(dǎo)向的示例分析

這篇文章主要介紹Linux Bash Shell命令重導(dǎo)向的示例分析,文中介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們一定要看完!

創(chuàng)新互聯(lián)建站專注于象山網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠為您提供象山營銷型網(wǎng)站建設(shè),象山網(wǎng)站制作、象山網(wǎng)頁設(shè)計(jì)、象山網(wǎng)站官網(wǎng)定制、微信平臺小程序開發(fā)服務(wù),打造象山網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供象山網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。

命令重導(dǎo)向
基本上,這個子題是 Linux Bash Shell命令重導(dǎo)向 相當(dāng)重要的觀念,這里可得花點(diǎn)心思才行呦!

o 什么是『重導(dǎo)向, redirect ?』:簡單的說,就是將你目前的所得資料轉(zhuǎn)到其他地方去就是了!例如我們常用的,將目前的螢?zāi)惠敵鲑Y料轉(zhuǎn)到檔案中去,就可以這么寫:『ls -l / > test 』,那個大于的符號『 > 』就是將輸出結(jié)果導(dǎo)向到 test 這個檔案中的意思啰!這個時候:
§ 如果你執(zhí)行『 ls -l / 』而已的話,螢?zāi)粫⒏夸浀臋n案與目錄都列出在螢?zāi)簧希?br/>§ 但是當(dāng)使用 > 導(dǎo)向到 test 這個檔案中時,則螢?zāi)徊粫@示任何訊息,但是會將剛剛你執(zhí)行的結(jié)果輸出到 test 這個檔案中。
所以啰,你只要『 vi test 』一下,就會知道 test 這個檔案中記錄了剛剛我們執(zhí)行的資料結(jié)果啰!不過,這里需要特別留意的是,當(dāng)你使用 > 符號將資料由螢?zāi)粚?dǎo)向到檔案中時,則:
§ 該檔案(就是 test )若不存在,系統(tǒng)會自動的將他建立起來,但是,
§ 當(dāng)這個檔案存在的時候,那么系統(tǒng)就會先將這個檔案內(nèi)容清空,然后再將資料寫入!
§ 也就是若以 > 輸出到一個既存檔案中,呵呵,那個檔案就會被覆蓋掉啰!
除了這個 > 的符號之外,在 bash 命令執(zhí)行的過程中,主要有三種輸出入的狀況,分別是:
1. 標(biāo)準(zhǔn)輸入;代碼為 0 ;或稱為 stdin ;使用的方式為 <
2. 標(biāo)準(zhǔn)輸出:代碼為 1 ;或稱為 stdout;使用的方式為 1>
3. 錯誤輸出:代碼為 2 ;或稱為 stderr;使用的方式為 2>
注意了!那個 1> 與 2> 之間并沒有空白字元!而相關(guān)的使用說明可以舉例如下

[test @test test]# ls -al >list.txt<==將顯示的結(jié)果輸出到 list.txt 檔案中,若該檔案以存在則予以取代! [test @test test]# ls -al >> list.txt <==將顯示的結(jié)果累加到 list.txt 檔案中,該檔案為累加的,舊資料保留! [test @test test]# ls -al 1> list.txt 2> list.err <==將顯示的資料,正確的輸出到 list.txt 錯誤的資料輸出到 list.err [test @test test]# ls -al 1> list.txt 2>&1 <==將顯示的資料,不論正確或錯誤均輸出到 list.txt 當(dāng)中! [test @test test]# ls -al 1> list.txt 2> /dev/null<==將顯示的資料,正確的輸出到 list.txt 錯誤的資料則予以丟棄!注意!錯誤與正確檔案輸出到同一個檔案中,則必須以上面的方法來寫!不能寫成其他格式!
這個觀念相當(dāng)?shù)闹匾绕涫窃?/etc/crontab 當(dāng)中執(zhí)行的時候,如果我們已經(jīng)知道錯誤的訊息為何,又不想要讓錯誤的訊息一直填滿 root 的信箱,就必須以 2> 搭配 /dev/null 這個垃圾桶黑洞裝置,來將資料丟棄!這個相當(dāng)?shù)闹匾?br/>這里我們來說明一下命令重導(dǎo)向里面幾個常用的符號與裝置:
o <:由 < 的右邊讀入?yún)?shù)檔案;
o >:將原本由螢?zāi)惠敵龅恼_資料輸出到 > 右邊的 file ( 檔案名稱 ) 或 device ( 裝置,如 printer )去;
o >> :將原本由螢?zāi)惠敵龅恼_資料輸出到 >> 右邊,與 > 不同的是,該檔案將不會被覆蓋,而新的資料將以『增加的方式』增加到該檔案的***面;
o 2> :將原本應(yīng)該由螢?zāi)惠敵龅腻e誤資料輸出到 2> 的右邊去。
o /dev/null :可以說成是黑洞裝置!
好了,對于『 > , >> 』這兩個東西有一定的概念之后,我們來深入的談一談『命令輸出重導(dǎo)向』的觀念吧!如前所述,基本上, Linux 執(zhí)行的結(jié)果中,可以約略的分成『正確輸出』與『錯誤輸出』兩種方式。例如,當(dāng)你以一般身份執(zhí)行 find 這個指令時,例如執(zhí)行『 find / -name testing 』時,由于你是一般身份,又有些資料夾是不允許一般身份者進(jìn)入的,所以啰,當(dāng)你使用 find 時,就會有錯誤訊息發(fā)生了!但同時如果有 testing 這個檔案在你可以進(jìn)入的資料夾當(dāng)中,那么螢?zāi)灰矔敵龅浇o你看!因此,就具有正確的與錯誤的輸出兩種啰?。ǚ謩e稱為 Stdout 與 Stderror)例如下面為執(zhí)行結(jié)果:里面的『 find: /home/root: Permission denied 』就告訴你該資料夾你沒有權(quán)限進(jìn)入,這就是錯誤的輸出了,那么『 /home/test/tseting 』就是正確的輸出了!

[test @test test]# find / -name testing find: /home/test1: Permission denied<==這是錯誤的輸出 find: /home/root: Permission denied <==這是錯誤的輸出 find: /home/masda: Permission denied<==這是錯誤的輸出 /home/test/testing<==這是『正確』的輸出 [test @test test]#
好了,那么假如我們想要將資料輸出到 list 這個檔案中呢?執(zhí)行『 find / -name testing > list 』會有什么結(jié)果?呵呵,你會發(fā)現(xiàn) list 里面存了剛剛那個『正確』的輸出資料,至于螢?zāi)簧线€是會有錯誤的訊息出現(xiàn)呢!傷腦筋!如果想要將正確的與錯誤的資料分別存入不同的檔案中需要怎么做?!呵呵!其實(shí)在資料的重導(dǎo)向方面,正確的寫法應(yīng)該是『 1> 』與『 2> 』才對!但是如果只有 > 則預(yù)設(shè)是以 1> 來進(jìn)行資料的!那個 1> 是輸出正確資料, 2> 則是錯誤資料輸出項(xiàng)目。也就是說:
&middot; 1> :是將正確的資料輸出到指定的地方去
&middot; 2> :是將錯誤的資料輸出到指定的地方去

好了,那么上面的例子中,我們?nèi)绾螌①Y料輸出到不同的地方去呢?可以這么寫:
[test @test test]# find / -name testing 1> list_right 2> list_error
這樣一來,剛剛執(zhí)行的結(jié)果中,有 Permission 的那幾行錯誤資訊都會跑到 list_error 這個檔案中,至于正確的輸出資料則會存到 list_right 這個檔案中啰!這樣可以了解了嗎?如果有點(diǎn)混亂的話,去休息一下再來看看吧!!

再來,如果我只要正確的資料,錯誤的資訊我不要了呢?呵呵,這個時候 /dev/null 這個垃圾桶就很重要了!/dev/null 是什么呢?基本上,那就有點(diǎn)像是一個『黑洞』的垃圾桶功能!當(dāng)你輸入的任何東西導(dǎo)向到這個虛擬的垃圾桶裝置時,『他就會憑空消失不見了~~』,這個東西有用的很!例如上面的例子中,我們可以這么做,來將錯誤的資訊丟掉!
[test @test test]# find / -name testing 1> list_right 2> /dev/null
很神奇呦! error message 就會『不見了!』呵呵!真高興!另外,如果我要將資料都寫到同一個檔案中呢?這個時候?qū)懛ㄐ枰玫教厥鈱懛?,請注意底下的寫法呦?br/>[test @test test]# find / -name testing 1> list 2> list<==錯誤寫法 [test @test tset]# find / -name testing 1> list 2>&1 <==正確寫法
請?zhí)貏e留意這一點(diǎn)呢!同時寫入同一個檔案需要使用 2>&1 才對呦!

OK!了解了 >, 2>, >> 與 /dev/null 之后,那么那個 < 又是什么呀?。亢呛?!以最簡單的說法來說,那就是『將原本需要由鍵盤輸入的資料,經(jīng)由檔案來讀入』的意思,最明顯的例子就是 mail 這個東西了!我們以 root 的身份來寄信給 root 好了,可以這樣做:

1. 完全由鍵盤輸入資料: [root @test test]# mail -s "test" root<== -s 表示標(biāo)題, root 為收件者 I am root!<==以下的資料都是由鍵盤輸入的 That's OK .  <==要結(jié)束鍵盤的輸入時,需要在一行的最前面加上 . 即可! CC.<==是否需要有密件副本?不需要的話,直接按下 Enter ! EOF<==表示送出的提示字元而已! 2. 由檔案代替輸入 [test @test tset]# mail -s "test" root < /root/.bashrc <==將 .bashrc 內(nèi)容寄給 root !
很有趣吧! ^_^ 這樣就可以將信寄出去啰!所以說,熟悉命令重導(dǎo)像的話,對您可是相當(dāng)?shù)挠袔椭倪希?br/>好了,那么為何要使用命令輸出重導(dǎo)向呢?這個問題一定會困擾你一下下的,如果你從來都沒有寫過 script 的話!好了,我們來說一說吧!
o 當(dāng)螢?zāi)惠敵龅馁Y訊很重要,而且我們需要將他存下來的時候;
o 背景執(zhí)行中的程式,不希望他干擾螢?zāi)徽5妮敵鼋Y(jié)果時;
o 一些系統(tǒng)的例行命令(例如寫在 /etc/crontab 中的檔案)的執(zhí)行結(jié)果,希望他可以存下來時;
o 一些執(zhí)行命令,我們已經(jīng)知道他可能的錯誤訊息,所以想以『 2> /dev/null 』將他丟掉時;
o 錯誤訊息與正確訊息需要分別輸出時。
當(dāng)然還有很多很多的功能的,最簡單的就是網(wǎng)友們常常問到的:『為何我的 root 都會收到系統(tǒng) crontab 寄來的錯誤訊息呢』這個咚咚是常見的錯誤,而如果我們已經(jīng)知道這個錯誤訊息是可以忽略的時候,嗯!『 2> errorfile 』這個功能就很重要了吧!了解了嗎??

以上是“Linux Bash Shell命令重導(dǎo)向的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

當(dāng)前題目:LinuxBashShell命令重導(dǎo)向的示例分析
URL分享:http://www.rwnh.cn/article12/gopcdc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站定制網(wǎng)站、自適應(yīng)網(wǎng)站、Google網(wǎng)站營銷、企業(yè)網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)
乡城县| 民权县| 海宁市| 云阳县| 诸城市| 扬州市| 梁平县| 六枝特区| 金山区| 新源县| 普宁市| 武胜县| 上栗县| 平乡县| 沂水县| 华容县| 页游| 兴和县| 南充市| 华容县| 云霄县| 永福县| 贡嘎县| 闻喜县| 常山县| 广宁县| 三都| 铜川市| 洛宁县| 定襄县| 隆化县| 凤山市| 正蓝旗| 沙雅县| 广灵县| 织金县| 宁都县| 板桥市| 灵山县| 仁布县| 武胜县|