在线不卡日本ⅴ一区v二区_精品一区二区中文字幕_天堂v在线视频_亚洲五月天婷婷中文网站

  • <menu id="lky3g"></menu>
  • <style id="lky3g"></style>
    <pre id="lky3g"><tt id="lky3g"></tt></pre>

    linux管道符使用方法 Linux 管道操作符詳解

    管道操作符 : |

    我們?cè)贚inux下經(jīng)常要用到管道操作符,也就是"|",即一個(gè)豎線。這個(gè)操作符的作用對(duì)于經(jīng)常使用Linux的人來(lái)說(shuō),看上去十分直觀:

    不就是將前一個(gè)指令的結(jié)果交給后一個(gè)指令嗎?

    舉個(gè)例子:

    cat system.log | grep hello復(fù)制代碼

    上面的指令可以讓我們過(guò)濾出system.log這個(gè)文件中包含hello字符串的行,然后打印到屏幕上。

    什么叫指令的結(jié)果

    問(wèn)題就來(lái)了,一個(gè)指令的結(jié)果是什么,這個(gè)說(shuō)法十分混淆。

    是指這個(gè)指令輸出的日志?是指這個(gè)指令的返回碼?(有些人可能不知道這東西)還是指啥啥啥的?

    實(shí)際上,指令的結(jié)果這個(gè)概念并沒(méi)有一個(gè)嚴(yán)格定義,所以當(dāng)我們說(shuō),一個(gè)指令的結(jié)果的時(shí)候,經(jīng)常跟業(yè)務(wù)場(chǎng)景有關(guān)系。比如說(shuō),一個(gè)圖像處理程序的結(jié)果,就應(yīng)該是一個(gè)圖像,這才是合乎常理的。

    如何描述 cat 指令的行為

    首先我們來(lái)看一下 cat system.log 這個(gè)指令的行為。

    也就是將 system.log 中的內(nèi)容打印到屏幕上。

    這個(gè)過(guò)程可以細(xì)說(shuō),因?yàn)閷?nèi)容打印到屏幕上實(shí)際上還是不夠準(zhǔn)確。

    那么這里就不得不牽扯出Linux下文件的一些概念。

    程序打開(kāi)文件以及文件描述符

    在 Linux 系統(tǒng)中,一個(gè)程序是可以打開(kāi)一個(gè)文件的,這個(gè)很容易理解。

    那么進(jìn)程(一般正在運(yùn)行的程序稱之為進(jìn)程)是如何管理文件的呢?

    那就是用文件描述符這種東西,這是一個(gè)數(shù)字以及與之相關(guān)聯(lián)的一堆數(shù)據(jù)。

    一個(gè)進(jìn)程打開(kāi)一個(gè)文件,就會(huì)創(chuàng)建一個(gè)新的文件描述符,這個(gè)數(shù)字一般是自增的。比如說(shuō),當(dāng)前的文件描述符是100。那么再打開(kāi)一個(gè)新的文件,這個(gè)新的文件的描述符就是101。當(dāng)然進(jìn)程如果關(guān)閉文件,這個(gè)描述符是可以重復(fù)利用的。這里不多扯。

    如果用圖來(lái)表示這個(gè)概念,應(yīng)該是下面的樣子:

    linux管道符使用方法 Linux 管道操作符詳解

    我們可以看出,不同的數(shù)字代表了不同的文件。

    那么在哪里能列出一個(gè)進(jìn)程所打開(kāi)的文件呢?

    在Linux下,可以先找到這個(gè)進(jìn)程的PID,假設(shè)是 20000

    進(jìn)入如下的目錄:

    cd /proc/20000/fd復(fù)制代碼

    這個(gè)目錄存放的就是 20000 這個(gè)進(jìn)程所打開(kāi)的文件了。ls一下,如圖:

    linux管道符使用方法 Linux 管道操作符詳解

    正如我所描述的那樣,都是數(shù)字。

    一些約定俗成的描述符

    從上面的圖中,我們看到,描述符是從0開(kāi)始的。那么0是什么文件呢?

    在Linux下,每一個(gè)進(jìn)程啟動(dòng)的時(shí)候,都會(huì)默認(rèn)打開(kāi)三個(gè)文件,用0 ,1, 2來(lái)當(dāng)做他們的描述符。

    那么0, 1, 2分別代表哪三個(gè)文件呢?

    0 : 代表標(biāo)準(zhǔn)輸入1 : 代表標(biāo)準(zhǔn)輸出2 : 代表錯(cuò)誤輸出

    也許上面的描述,還是不夠清晰。

    再進(jìn)一步,一般來(lái)說(shuō),

    標(biāo)準(zhǔn)輸入,就是指 鍵盤(pán)輸入標(biāo)準(zhǔn)輸出,就是指輸出到屏幕錯(cuò)誤輸出,也是指輸出到屏幕

    文件描述符的作用

    如果你在Linux下,寫(xiě)過(guò)讀取鍵盤(pán)輸入的程序,那么就這樣理解。

    你讀取的其實(shí)就是 0 這個(gè)描述符所代表的文件的內(nèi)容:也就是鍵盤(pán)。

    如果你使用過(guò)類似 print 這種函數(shù),打印過(guò)日志的話,那么其實(shí)就是往 1 這個(gè)描述符所代表的文件里輸出內(nèi)容,對(duì),這個(gè)內(nèi)容通過(guò)屏幕展現(xiàn)出來(lái)了。

    實(shí)際上,這種讀取和寫(xiě)入的操作,對(duì)于所有文件來(lái)說(shuō)都是一樣的,至少在使用上來(lái)說(shuō),是一樣的。

    都是先打開(kāi)一個(gè)文件,給他一個(gè)描述符,然后針對(duì)這個(gè)描述符進(jìn)行讀或者寫(xiě)。

    文件和鍵盤(pán)輸入的關(guān)系

    鍵盤(pán)輸入這種操作,在Linux里,會(huì)變成一個(gè)文件操作,就類似普通的文件那樣。這就是Linux的設(shè)計(jì),一切皆是文件。不僅僅鍵盤(pán)操作和屏幕打印是文件操作。網(wǎng)絡(luò)連接讀取數(shù)據(jù)啥的,也都是文件操作,這些也都會(huì)產(chǎn)生文件描述符。一個(gè)進(jìn)程同時(shí)擁有的文件描述符是有上限的,這個(gè)上限可以設(shè)置。如果你不信,你可以試試同時(shí)打開(kāi)一萬(wàn)個(gè)文件,看看會(huì)不會(huì)報(bào)錯(cuò),如果報(bào)錯(cuò),觀察一下是報(bào)的什么錯(cuò)。

    可能是這樣的錯(cuò)誤:

    too many opened files復(fù)制代碼

    回到管道操作符 |

    cat system.log | grep hello復(fù)制代碼

    我們現(xiàn)在再來(lái)描述上面整個(gè)指令:

    1. cat system.log

    cat這個(gè)程序打開(kāi)了system.log這個(gè)文件,將system.log的內(nèi)容,寫(xiě)入 1 這個(gè)文件,也就是屏幕上。

    2. grep hello

    grep 這個(gè)程序,試圖從 0這個(gè)文件中讀取數(shù)據(jù),然后找到包含hello的行,然后把找到的行,寫(xiě)入到1這個(gè)文件中,也就是屏幕上

    3. 管道的作用

    就是將前一個(gè)程序的1綁定到后一個(gè)程序的0。

    于是,整體才會(huì)走通,要不然,cat 的結(jié)果就會(huì)打印到屏幕,而不是給了 grep。

    作者:庖丁解牛鏈接:https://juejin.cn/post/7081513914840088607

    鄭重聲明:本文內(nèi)容及圖片均整理自互聯(lián)網(wǎng),不代表本站立場(chǎng),版權(quán)歸原作者所有,如有侵權(quán)請(qǐng)聯(lián)系管理員(admin#wlmqw.com)刪除。
    用戶投稿
    上一篇 2022年6月27日 23:57
    下一篇 2022年6月27日 23:58

    相關(guān)推薦

    • 非匿名指令新手十連怎么選?非匿名指令新手無(wú)限十連選擇推薦

      非匿名指令新手十連怎么選?進(jìn)入游戲之后大家能得到一個(gè)新手無(wú)限十連,可以幫大家抽到滿意的角色,新手十連的選擇小編在下面也會(huì)有分享,不知道如何選擇的可以看看小編提供的攻略,了解新手十連…

      2022年11月25日
    • 科比19歲女兒遭自稱與她生“科比式孩子”男子跟蹤騷擾

      極目新聞?dòng)浾咄趿亮咙S佳琪 據(jù)??怂剐侣劸W(wǎng)報(bào)道,當(dāng)?shù)貢r(shí)間11月21日,已故籃球巨星科比·布萊恩特的長(zhǎng)女娜塔莉亞·布萊恩特21日向法院提交臨時(shí)限制令,聲稱這位32歲的前科從十幾歲起就騷…

      2022年11月24日
    • 免費(fèi)清理c盤(pán)的軟件(清理c盤(pán)空間不影響系統(tǒng))

      電腦用久了慢如龜速,還卡頓,這最大的原因啊就是C盤(pán)空間不足造成的。 即使電腦配置再好,或者硬盤(pán)再快,如果長(zhǎng)時(shí)間沒(méi)有打掃C盤(pán),打開(kāi)文件或者穩(wěn)定之類的,都卡得讓人頭大。 這時(shí)候呢不要去…

      2022年11月24日
    • pdf虛擬打印機(jī)(添加pdf虛擬打印機(jī))

      本文主要講的是pdf虛擬打印機(jī),以及和添加pdf虛擬打印機(jī)相關(guān)的知識(shí),如果覺(jué)得本文對(duì)您有所幫助,不要忘了將本文分享給朋友。 pdf虛擬打印機(jī)具體是什么功能? 電腦虛擬打印機(jī)的功能有…

      2022年11月24日
    • 三國(guó)群英傳7怎么玩(三國(guó)群英傳7怎么玩劉邦項(xiàng)羽視頻)

      本文主要講的是三國(guó)群英傳7怎么玩,以及和三國(guó)群英傳7怎么玩劉邦項(xiàng)羽視頻相關(guān)的知識(shí),如果覺(jué)得本文對(duì)您有所幫助,不要忘了將本文分享給朋友。 三國(guó)群英傳7怎么操作 導(dǎo)語(yǔ):三國(guó)群英傳的玩家…

      2022年11月23日
    • ftp端口號(hào)(ftp端口號(hào)可以自定義嗎)

      FTP端口號(hào)是21在FTP服務(wù)器中,我們往往會(huì)給不同的部門(mén)或者某個(gè)特定的用戶設(shè)置一個(gè)帳戶但是,這個(gè)賬戶有個(gè)特點(diǎn),就是其只能夠訪問(wèn)自己的主目錄服務(wù)器通過(guò)這種方式來(lái)保障FTP服務(wù)上其他…

      2022年11月21日
    • 我的世界指令創(chuàng)造(我的世界指令創(chuàng)造生存)

      只有允許作弊的地圖才可以用指令將世界切換到創(chuàng)造模式具體步驟如下1首先在地圖的選項(xiàng)界面,將地圖允許作弊按鈕打開(kāi)2進(jìn)入該可以作弊的地圖后 ,按下鍵盤(pán)上的~鍵,在彈出的對(duì)話框中,輸入ga…

      2022年11月20日
    • 給手機(jī)安裝了Windows 11(手機(jī)上玩電腦游戲的軟件)

      電腦上體驗(yàn)了一番Windows 11 ,感覺(jué)怎么樣?接下來(lái)想要在手機(jī)上嘗試嘗試嗎?不是遠(yuǎn)程桌面,也并不是虛擬機(jī),而是手機(jī)直接運(yùn)行原生的win11系統(tǒng)! 那么最近小編就看到網(wǎng)上不少朋…

      2022年11月18日
    • win11任務(wù)管理器在哪(任務(wù)管理器怎么打開(kāi))

      在win10電腦中,我們可以在任務(wù)管理器里查看系統(tǒng)各項(xiàng)資源使用情況,也可以通過(guò)這個(gè)地方強(qiáng)行結(jié)束卡死的進(jìn)程。不過(guò)很多人不知道如何打開(kāi)電腦上的任務(wù)管理器,下面就和大家講解一下方法吧。 …

      2022年11月18日
    • 字體庫(kù)在哪個(gè)文件夾(字體庫(kù)在哪個(gè)文件夾里)

      今天小編給各位分享字體庫(kù)在哪個(gè)文件夾的知識(shí),其中也會(huì)對(duì)字體庫(kù)在哪個(gè)文件夾里進(jìn)行解釋,如果能碰巧解決你現(xiàn)在面臨的問(wèn)題,別忘了關(guān)注本站,現(xiàn)在開(kāi)始吧! 字體庫(kù)在Windows文件夾里面的…

      2022年11月17日

    聯(lián)系我們

    聯(lián)系郵箱:admin#wlmqw.com
    工作時(shí)間:周一至周五,10:30-18:30,節(jié)假日休息