最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

shell輸出重定向的實(shí)現(xiàn)

 更新時(shí)間:2023年01月12日 09:59:00   作者:金色熊族  
本文主要介紹了shell輸出重定向的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

1.輸入輸出重定向介紹

重定向簡單來說就是把本來已經(jīng)默認(rèn)的、確定的輸入輸出給重新定位到你想要的地方。 重定向這個(gè)概念在C語言中就有,在C語言編程中,標(biāo)準(zhǔn)輸出是屏幕,使用printf()函數(shù)默認(rèn)是輸出到屏幕顯示。但是有時(shí)候我們需要將信息輸出到文件或者申請的內(nèi)存中,這時(shí)候就可以用sprintf()和fprintf()函數(shù);也可以
將標(biāo)準(zhǔn)輸出的文件描述符給強(qiáng)行占用,使標(biāo)準(zhǔn)輸出的文件描述符指向自己想要的文件。在shell中默認(rèn)打開了三個(gè)文件,分別是標(biāo)準(zhǔn)輸出(文件描述符0)、標(biāo)準(zhǔn)輸出(文件描述符1)、錯(cuò)誤輸出(文件描述符2),標(biāo)準(zhǔn)輸入默認(rèn)是鍵盤,標(biāo)準(zhǔn)輸出和錯(cuò)誤輸出默認(rèn)是屏幕。

2.>和>>介紹

解析:>和>>都是重定向的符號,符號的左邊表示文件描述符或者要重定位的內(nèi)容,如果不寫默認(rèn)是文件描述符1,即標(biāo)準(zhǔn)輸出;右邊可以是文件也可以是設(shè)備。
1.當(dāng)使用>時(shí),如果右邊的文件存在則會先刪除在創(chuàng)建,如果右邊的文件不存在則創(chuàng)建;
2.當(dāng)使用>>時(shí),表示追加,右邊的文件不會被刪除,新的內(nèi)容會添加到文件的末尾。

3.命令:>/dev/null 2>&1

解析:這可以理解成兩句指令:>/dev/null 和 2>&1
(1)>/dev/null :將文件描述符1重定向到/dev/null,文件描述符1是標(biāo)準(zhǔn)輸出,/dev/null在linux中是空的設(shè)備文件,所以往這個(gè)設(shè)備文件輸入的內(nèi)容都會丟失;這句指令的作用就是將標(biāo)準(zhǔn)輸出重定向到/dev/null這個(gè)空的設(shè)備文件里,效果就是全部的輸出都會丟掉。
(2)2>&1:將文件描述符2重定向到文件描述符1指向的地方,也就是空的設(shè)備文件。執(zhí)行該指令后,標(biāo)準(zhǔn)輸出和錯(cuò)誤輸出都往空設(shè)備文件里寫,效果就是兩者都丟不再打印到屏幕。

4.命令:2>&1 >/dev/null

解析:同樣分成兩個(gè)語句理解、
(1)2>&1:將文件描述符2重定向到文件描述符1指向的地方,此時(shí)標(biāo)準(zhǔn)輸出是屏幕。該指令的效果是標(biāo)準(zhǔn)輸出和錯(cuò)誤輸出都輸出到屏幕。
(2)>/dev/null:將標(biāo)準(zhǔn)輸出重定向到空的設(shè)備文件,即屏幕不再打印標(biāo)準(zhǔn)輸出;但是錯(cuò)誤輸出此時(shí)還是會往屏幕輸出,因?yàn)殄e(cuò)誤輸出并沒有重定向到空的設(shè)備文件。

5.總結(jié):

(1)**>/dev/null 2>&1:**標(biāo)準(zhǔn)輸出和錯(cuò)誤輸出都舍棄掉;
(2)**2>&1 >/dev/null:**標(biāo)準(zhǔn)輸出被舍棄掉,錯(cuò)誤輸出被重定位到屏幕;

在Linux下,當(dāng)一個(gè)用戶進(jìn)程被創(chuàng)建的時(shí)候,系統(tǒng)會自動為該進(jìn)程創(chuàng)建三個(gè)數(shù)據(jù)流即stdin stdout stderr。在shell里面,分別用0,1,2代表stdin stdout stderr。

stdin默認(rèn)從鍵盤接收輸入,而stdout和stderr默認(rèn)向console輸出。

示例1

echo默認(rèn)將hello送到stdout顯示。而"|"管道符接收來自stdout的輸入 。所以echo hello的結(jié)果被送到grep處理,最終顯示hello。

示例2

echo hello本來是要把hello輸出到stdout,但是由于1>&2的作用,最終hello交給了stderr。其實(shí)stderr也是在console上顯示,所以輸出結(jié)果是hello。但是管道符|只收到stdout,收不到stderr的數(shù)據(jù),所以hello傳不到grep,最終只通過stderr打印hello。

再舉一個(gè)從stderr向stdout定向的示例3

ls 查找一個(gè)并不存在的文件,將打印錯(cuò)誤信息

 將ls c.cpp與 grep cpp連用,打印相同的信息。但是這是出錯(cuò)信息,通過stderr輸出的,而管道符只接受stdout的輸出所以grep不處理信息,打印出來的cpp字符串也不標(biāo)紅。

只有把stderr重定向到stdout---2>&1,才能讓grep起作用,看到標(biāo)紅的cpp。

示例4

 echo hello產(chǎn)生hello并輸出到stdout。同時(shí)2>&1將錯(cuò)誤信息也交給stdout。但是echo hello并無錯(cuò)誤信息,所以最后stdout的內(nèi)容就是hello,并由grep處理,產(chǎn)生標(biāo)紅的hello。

示例5

使用1>2重定向,注意這里不是&2。此時(shí)重定向的目的不再是stderr,而是文件2.假如2文件不存在,則shell將創(chuàng)建一個(gè),并將hello輸入到文件里。管道符還是不能從stdout那里得到數(shù)據(jù),所以控制臺不打印。

示例6 也可以用<來定向stdin

文件2的內(nèi)容是hello??梢杂?lt;2 或者0<2實(shí)現(xiàn)重定向。至于grep h 2,也是可以的--grep也接收文件名作為輸入?yún)?shù)。只有最后一種操作返回不了理想的結(jié)果--grep h &0<2

到此這篇關(guān)于shell輸出重定向的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)shell輸出重定向內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Linux通過sar命令查看網(wǎng)卡流量

    Linux通過sar命令查看網(wǎng)卡流量

    sar(System Activity Reporter系統(tǒng)活動情況報(bào)告)是目前 Linux 上最為全面的系統(tǒng)性能分析工具之一,這篇文章主要介紹了Linux通過sar命令查看網(wǎng)卡流量,需要的朋友可以參考下
    2017-11-11
  • shell sed命令的具體使用

    shell sed命令的具體使用

    本文主要介紹了shell sed命令的具體使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • linux幾個(gè)沒用但是有趣的命令(收藏)

    linux幾個(gè)沒用但是有趣的命令(收藏)

    今天給大家分享一些linux幾個(gè)沒用但是有趣的命令,非常不錯(cuò),喜歡的朋友快快收藏吧
    2021-11-11
  • 使用命令行將json數(shù)據(jù)導(dǎo)出到csv(一行命令搞定)

    使用命令行將json數(shù)據(jù)導(dǎo)出到csv(一行命令搞定)

    這篇文章主要為大家介紹了使用命令行將json數(shù)據(jù)導(dǎo)出到csv,一行命令搞定的方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2024-01-01
  • SVN限制message字符個(gè)數(shù)及格式的實(shí)例

    SVN限制message字符個(gè)數(shù)及格式的實(shí)例

    下面小編就為大家?guī)硪黄猄VN限制message字符個(gè)數(shù)及格式的實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-03-03
  • 監(jiān)視磁盤使用情況的Shell腳本(本地+遠(yuǎn)程)

    監(jiān)視磁盤使用情況的Shell腳本(本地+遠(yuǎn)程)

    任何一個(gè)分區(qū)使用到90%就發(fā)送一個(gè)郵件給指定的收件人,到95%就在郵件主題出警告(warning),說明發(fā)送郵件程序EMAIL
    2013-01-01
  • shell腳本5種執(zhí)行方式及腳本不同的執(zhí)行方法和區(qū)別詳解

    shell腳本5種執(zhí)行方式及腳本不同的執(zhí)行方法和區(qū)別詳解

    我們都知道bash?shell?腳本的方法有多種,下面這篇文章主要給大家介紹了關(guān)于shell腳本5種執(zhí)行方式及腳本不同的執(zhí)行方法和區(qū)別的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-07-07
  • Shell 命令執(zhí)行順序分析[圖]

    Shell 命令執(zhí)行順序分析[圖]

    Shell 從標(biāo)準(zhǔn)輸入或腳本中讀取的每一行稱為管道(pipeline);它包含了一個(gè)或多個(gè)命令(command),這些命令被一個(gè)或多個(gè)管道字符(|)隔開
    2013-01-01
  • 利用shell獲取指定日期前N天的日期

    利用shell獲取指定日期前N天的日期

    最近因?yàn)轫?xiàng)目的需要對比2015年10月的數(shù)據(jù),因?yàn)橐荒陙淼臄?shù)據(jù)經(jīng)過了很多次調(diào)整和處理,遇到的最直接的問題是很多數(shù)據(jù)需要重新計(jì)算。只好寫腳本刷數(shù)據(jù)。在準(zhǔn)備腳本的過程中,就需要根據(jù)給定的日期處理數(shù)據(jù),所以就有了這篇文章,下面有需要的朋友們一起學(xué)習(xí)學(xué)習(xí)。
    2016-11-11
  • shell腳本實(shí)現(xiàn)隨機(jī)生成10個(gè)8位密碼

    shell腳本實(shí)現(xiàn)隨機(jī)生成10個(gè)8位密碼

    這篇文章主要介紹了shell腳本實(shí)現(xiàn)隨機(jī)生成10個(gè)8位密碼的方法,這里推薦給大家,有需要的小伙伴的可以參考下。
    2015-03-03

最新評論

修水县| 镇宁| 出国| 福州市| 深州市| 桃园市| 台东市| 阿勒泰市| 依安县| 绥德县| 祁连县| 鲁山县| 崇仁县| 徐州市| 筠连县| 通道| 西吉县| 玉田县| 新建县| 广东省| 西贡区| 金平| 揭西县| 宿迁市| 蓬莱市| 安义县| 义乌市| 慈溪市| 商都县| 普定县| 临朐县| 友谊县| 北辰区| 陆河县| 额敏县| 隆子县| 东源县| 孟连| 新竹市| 永仁县| 民县|