共計 2275 個字符,預計需要花費 6 分鐘才能閱讀完成。
這篇文章主要介紹“linux 中 stream 的含義是什么”的相關知識,丸趣 TV 小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“linux 中 stream 的含義是什么”文章能幫助大家解決問題。
在 linux 中,stream 是數據流的意思,就是按一定順序讀取的一串數據,所以數據流的方向就是數據流的讀取順序。Linux 系統把數據讀取后輸出的結果導入到其他文件中的過程稱為重定向數據流。Linux 下輸入一段命令并運行以后,屏幕里會顯示兩種結果:運行成功結果即標準輸出、運行失敗結果即標準錯誤輸出;如果不做處理,它們都會顯示在屏幕上,而通過數據流重定向就可將其儲存到其他的文件中。
在 linux 中,stream 是數據流的意思。
stream(數據流)是什么意思
stream(數據流)就是按一定順序讀取的一串數據,所以數據流的方向就是數據流的讀取順序。
數據流最初是通信領域使用的概念,代表傳輸中所使用的信息的數字編碼信號序列。這個概念最初在 1998 年由 Henzinger 在文獻 87 中提出,他將數據流定義為“只能以事先規定好的順序被讀取一次的數據的一個序列”。
Linux 系統重定向數據流就是把數據讀取后輸出的結果導入到其他文件中。
Linux 數據流重定向
數據流重定向簡單來說就是將某條命令的輸入數據來源或輸出數據定位到其他的文件。Linux 下一切皆文件。這里的文件可以是設備文件、普通文件等。
1、stdin stdout stderr
stdin: 標準輸入。指的是為命令運行所提供的一些信息。
stdout: 標準輸出。指的是命令執行所返回的正確信息。
stderr: 標準錯誤輸出。指的是命令執行失敗后所返回的錯誤信息。
這三者與命令的關系通常如下:
stdin
stderr
stdout
File
Command
Screen/File
Screen/File
在 Linux 環境下,我們輸入一段命令并運行以后,屏幕里會顯示兩種結果:運行成功結果即標準輸出、運行失敗結果即標準錯誤輸出。
標準輸出(STDOUT):Standard output,指的是命令執行所返回的正確信息。
標準錯誤輸出(STDERR):Standard error output,指的是命令執行所返回的錯誤信息。
如果不對 STDOUT 和 STDERR 做處理,他們都會顯示在屏幕上,通過數據流重定向就可以將其儲存到其他的文件中,而將其儲存在文件中的特殊字符有:
標準輸入 stin:代碼為 0,使用 或
標準輸出 stout:代碼為 1,使用 或
標準錯誤輸出 stderr:代碼為 2,使用 2 或 2
2、數據流重定向的使用
stdout:標準輸出重定向。這里重定向的是正確輸出。
find / -name .bashrc ~/out_right
該命令將正確輸出定向輸入到文件~/out_right。如果~/out_right 不存在,則自動創建。因為沒對錯誤信息處理,錯誤輸出默認輸出到屏幕終端上,此時終端只會顯示錯誤輸出。
stderr:標準錯誤輸出重定向。這里重定向的是錯誤輸出。
find / -name .bashrc 2 ~/out_error
該命令將錯誤輸出定向輸入到文件~/out_error。如果~/out_error 不存在,則自動創建。因為沒對正確信息處理,正確輸出默認輸出到屏幕終端上,此時終端只會顯示正確輸出(如果沒找到指定文件,屏幕沒有輸出)。
stdin:一般使用標準輸入來替換鍵盤輸入。
cat catfile ~/.bashrc
cat 命令后不接任何參數,cat 會從鍵盤讀取數據。使用標準輸入,將輸入來源定向到文件~/.bashrc。然后通過 將標準輸出定位到 catfile 文件。cat 是查看文件的命令,這里直接讀取文件~/.bashrc 然后將其輸出到 catfile。
3、,2 ,
(累加):附加標準輸出。cmd file1,命令 cmd 將 stdout 輸出到 file1 中,如果 fiel1 此前存在,且有數據,那么 file1 會事先被清空,然后寫入 stdout。而使用命令 cmd file1,不會預先清空 file1 文件,而是直接在文件末尾加上輸入的數據。
2(累加):附加標準錯誤輸出。與 相似。
(指定結束關鍵字):后接結束的輸入字符。關鍵字必須獨占一行,否則無效。
cat catfile eof # 這里關鍵字為 eof
This is a test.
Ok now stop
eof # 輸入 eof(并回車)結束本次輸入
4、stdout 與 stderr 統一處理
有時,我們需要將 stdout 與 stderr 都保存在同一個文件中一遍以后查看。
基本思路:
將 stderr 重定向為 stdout,然后通過 stdout 一起重定向。
如下案例:
find / -name .bashrc list 2 list # 該語句錯誤,查看生成的 list,發現不是預期結果
find / -name .bashrc list 2 1 # 正確
find / -name .bashrc list # 正確
實現方法不止一種,我們取較好理解的寫法 find / -name .bashrc list 2 1。這段代碼中的 2 1 可以理解為,將標準錯誤輸出 (代碼為 2) 重定向為標準輸出(代碼為 1)。然后 list 將標準輸出重定向到文件 list。因為標準錯誤輸出被定向為標準輸出,所以最后所有輸出都被定向到文件 list 中。
關于“linux 中 stream 的含義是什么”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注丸趣 TV 行業資訊頻道,丸趣 TV 小編每天都會為大家更新不同的知識點。