免费爱碰视频在线观看,九九精品国产屋,欧美亚洲尤物久久精品,1024在线观看视频亚洲

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

      管道操作符 : |

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

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

      舉個(gè)例子:

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

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

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

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

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

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

      如何描述 cat 指令的行為

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

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

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

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

      程序打開文件以及文件描述符

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      一些約定俗成的描述符

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

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

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

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

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

      再進(jìn)一步,一般來說,

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

      文件描述符的作用

      如果你在Linux下,寫過讀取鍵盤輸入的程序,那么就這樣理解。

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

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

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

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

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

      鍵盤輸入這種操作,在Linux里,會(huì)變成一個(gè)文件操作,就類似普通的文件那樣。這就是Linux的設(shè)計(jì),一切皆是文件。不僅僅鍵盤操作和屏幕打印是文件操作。網(wǎng)絡(luò)連接讀取數(shù)據(jù)啥的,也都是文件操作,這些也都會(huì)產(chǎn)生文件描述符。一個(gè)進(jìn)程同時(shí)擁有的文件描述符是有上限的,這個(gè)上限可以設(shè)置。如果你不信,你可以試試同時(shí)打開一萬個(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)在再來描述上面整個(gè)指令:

      1. cat system.log

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

      2. grep hello

      grep 這個(gè)程序,試圖從 0這個(gè)文件中讀取數(shù)據(jù),然后找到包含hello的行,然后把找到的行,寫入到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)推薦

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

        非匿名指令新手十連怎么選?進(jìn)入游戲之后大家能得到一個(gè)新手無限十連,可以幫大家抽到滿意的角色,新手十連的選擇小編在下面也會(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盤的軟件(清理c盤空間不影響系統(tǒng))

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        2022年11月17日

      聯(lián)系我們

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