<em id="0a85b"><option id="0a85b"></option></em>

<abbr id="0a85b"></abbr>

      <nobr id="0a85b"></nobr>
        <tr id="0a85b"></tr>
        9久久伊人精品综合,亚洲一区精品视频在线,成 人免费va视频,国产一区二区三区黄网,99国产精品永久免费视频,亚洲毛片多多影院,精品久久久无码人妻中文字幕,无码国产欧美一区二区三区不卡
        學習啦 > 學習電腦 > 操作系統 > Linux教程 > 深入理解Linux文本流

        深入理解Linux文本流

        時間: 孫勝652 分享

        深入理解Linux文本流

          相信很多人都知道什么是系統文件,但很少人知道文本流是什么,其實文本流不難理解,下面小編就給大家詳細介紹下Linux文本流,一起來學習下吧。

          文本流

          文件用于數據的存儲,相當于一個個存儲數據的房子。我們之前說,所謂的數據是0或者1的序列,但嚴格來說,Linux以字節(byte)來作為數據的單位,也就是說這個序列每八位(bit)為一個單位(八位二進制對應的十進制范圍為0到255)。使用ASCII編碼,可以將這樣一個字節轉換成為字符。所以,在Linux中,我們所說的數據,完全可以用字符表達出來,也就是說文本(text)的形式。

          實際上,如果以bit為單位處理字符的話,機器會更容易讀懂和傳輸,效率會更高。但為什么Linux依然以字節為單位進行處理呢?原因在于,相對于以bit為單位處理數據,以byte為單位可以更容易將數據轉化為字符。相對于枯燥的0和1,字符更容易被人讀懂 (human readable)。然而,并不是所有的數據都是設計來讓人讀懂的,比如可執行文件包含的各種字符對于人來說并沒有什么意義 (因為可執行文件是為了讓機器讀懂的)。但Linux依然以字節為單位處理所有文件,這是為了讓所有文件能夠共用一套接口 (virtual file system),從而減少Linux設計的復雜度。

          (“everything is a file”是通常所流傳的UNIX設計的哲學之一,但Linus對此作出糾正,改為“everything is a stream of bytes”。)

          然而,數據不是在找到了自己的房子(file)之后就永遠的定居下來。它往往要被讀入到內存 (就像是到辦公室上班),或者被傳送到外部設備(好像去酒店休假),或者搬到別的房子中。在這樣的搬遷過程中,數據像是一個個排著隊走路的人流,我們叫它文本流(text stream,或者byte stream)。然而,計算機不同設備之間的連接方法差異很大,從內存到文件的連接像是爬山,從內存到外設像是游過一條河。為此,Linux還定義了流 (stream),以此作為修建連接各處的公路的標準。Stream的好處在于,無論你是從內存到外設,還是從內存到文件,所有的公路都是相同的 (至于公路下面是石頭還是土地,都可以不用操心)。

          我們再回味一下“everything is a stream of bytes”這句話。信息包含在文本流中,不斷在計算機的各個組件之間流動,不斷地接受計算機的加工,最終成為用戶所需要的某種服務。

          (說句題外話,如果看過駭客帝國的話,一定會對文本流印象深刻。)

          標準輸入,標準輸出,標準錯誤與重新定向

          當Linux執行一個程序的時候,會自動打開三個流,標準輸入(standard input),標準輸出(standard output),標準錯誤(standard error)。比如說你打開命令行的時候,默認情況下,命令行的標準輸入連接到鍵盤,標準輸出和標準錯誤都連接到屏幕。對于一個程序來說,盡管它總會打開這三個流,但它會根據需要使用,并不是一定要使用。

          想象一下敲擊一個

          代碼如下:

          $ls

          鍵盤敲擊的文本流(“ls\n”,\n是回車時輸入的字符,表示換行)命令行 (命令行實際上也是一個程序)。命令行隨后調用/bin/ls得到結果(“a.txt”),最后這個輸出的文本流(“a.txt”)流到屏幕,顯示出來,比如說:

          代碼如下:

          a.txt

          假設說我們不想讓文本流流到屏幕,而是流到另一個文件,我們可以采用重新定向(redirect)的機制。

          代碼如下:

          $ls 》 a.txt

          重新定向標準輸出。這里的》就是提醒命令行,讓它知道我現在想變換文本流的方向了,我們不讓標準輸出輸出到屏幕,而是要到a.txt這個文件 (好像火車軌道換軌)。此時,計算機會新建一個a.txt的文件,并將命令行的標準輸出指向這個文件。

          有另一個符號:

          代碼如下:

          $ls 》》 a.txt

          這里》》的作用也是重新定向標準輸出。如果a.txt已經存在的話,ls產生的文本流會附加在a.txt的結尾,而不會像》那樣每次都新建a.txt。

          我們下面介紹命令echo:

          代碼如下:

          $echo IamVamei

          echo的作用是將文本流導向標準輸出。在這里,echo的作用就是將IamVamei輸出到屏幕上。如果是

          代碼如下:

          $echo IamVamei 》 a.txt

          a.txt中就會有IamVamei這個文本。

          我們也可以用《符號來改變標準輸入。比如cat命令,它可以從標準輸入讀入文本流,并輸出到標準輸出:

          代碼如下:

          $cat 《 a.txt

          我們將cat標準輸入指向a.txt,文本會從文件流到cat,然后再輸出到屏幕上。當然,我們還可以同時重新定向標準輸出:

          代碼如下:

          $cat 《 a.txt 》 b.txt

          這樣,a.txt的內容就復制到了b.txt中。

          我們還可以使用》&來同時重新定向標準輸出和標準錯誤。假設我們并沒有一個目錄void。那么

          代碼如下:

          $cd void 》 a.txt

          會在屏幕上返回錯誤信息。因為此時標準錯誤依然指向屏幕。當我們使用:

          代碼如下:

          $cd void 》& a.txt

          錯誤信息被導向a.txt。

          如果只想重新定向標準錯誤,可以使用2》:

          代碼如下:

          $cd void 2》 a.txt 》 b.txt

          標準錯誤對應的總是2號,所以有以上寫法。標準錯誤輸出到a.txt,標準輸出輸出到b.txt。

          管道 (pipe)

          理解了以上的內容之后,管道的概念就易如反掌。管道可以將一個命令的輸出導向另一個命令的輸入,從而讓兩個(或者更多命令)像流水線一樣連續工作,不斷地處理文本流。在命令行中,我們用|表示管道:

          代碼如下:

          $cat 《 a.txt | wc

          wc命令代表word count,用于統計文本中的行、詞以及字符的總數。a.txt中的文本先流到cat,然后從cat的標準輸出流到wc的標準輸入,從而讓wc知道自己要處理的是a.txt這個字符串。

          Linux的各個命令實際上高度專業化,并盡量相互獨立。每一個都只專注于一個小的功能。但通過pipe,我們可以將這些功能合在一起,實現一些復雜的目的。

          總結

          文本流,標準輸入,標準輸出,標準錯誤

          cat, echo, wc

          》, 》》, 《, |

          上面就是Linux文本流的詳細介紹了,本文主要介紹了標準輸入、標準輸出、標準錯誤和重定向,那么你對Linux文本流有一定的了解了嗎?

        309416 主站蜘蛛池模板: 中文字幕无码视频手机免费看| 99精品国产闺蜜国产在线闺蜜| 国产成人亚洲日韩欧美| 国产精品午夜剧场免费观看| 2021av在线| 久久国产精品成人免费古装| 国产精品自在拍首页视频8| 毛片亚洲AV无码精品国产午夜| 久热这里只有精品12| 一区二区三区四区黄色片| 免费观看又色又爽又黄的韩国| 国产偷国产偷亚洲清高APP| 亚洲欧洲∨国产一区二区三区| 国产线播放免费人成视频播放| 免费人妻无码不卡中文18禁| 亚洲性线免费观看视频成熟| 欧美不卡无线在线一二三区观| 99久久久国产精品免费无卡顿| 天天夜碰日日摸日日澡性色av| 亚洲精品视频久久偷拍| 毛片久久网站小视频| 精品无码国产一区二区三区AV| 亚洲第一狼人成人综合网| 亚洲一区二区三午夜福利| 精品无码一区在线观看| 亚洲人妻一区二区精品| 亚洲AV蜜桃永久无码精品| 久久996re热这里只有精品无码| 中文字幕午夜五月一二| 国产成人综合在线观看不卡| 国产怡春院无码一区二区| 日韩熟妇中文色在线视频| 日韩区中文字幕在线观看| 久久99精品中文字幕| 开心五月激情五月俺亚洲| 亚洲 欧美 变态 卡通 自拍| 最新午夜男女福利片视频| 国产精品久久久久久久9999| 黄网站欧美内射| 亚洲国产日韩欧美一区二区三区 | 亚洲午夜无码av毛片久久|