linux中的標準輸入 標準輸出 標準錯誤

2021-10-10 02:48:59 字數 1950 閱讀 2707

在shell中執行命令時,每個程序都和三個開啟的檔案相聯絡,並使用檔案描述符來引用這些檔案。

輸入檔案---------標準輸入                    0               預設是鍵盤輸入,也可以是檔案或其他命令的輸出

輸出檔案---------標準輸出                    1               預設是螢幕,也可以是檔案

錯誤輸出檔案----------標準錯誤            2               預設是螢幕,也可以是檔案

linux系統中實際上有12個檔案描述符,正如上表所看到的0、1、2,檔案描述符3~9可以任意使用。

檔案重定向:

在執行命令時,可以指定命令的標準輸入、輸出、和錯誤,就需要使用檔案重定向。在對標準錯誤進行重定向時,必須要用檔案描述符,但是對於標準輸入和輸出來說,這不是必需的。

command   >  filename                     // 把標準輸出定向到乙個新檔案中。

command   >>  filename                   // 把標準輸出定向到乙個檔案中,追加。

command   1  >  filename                 // 把標準輸出定向到乙個檔案中。

command    > filename   2>&1          // 把標準輸出和錯誤輸出一起重定向到乙個檔案中。

command    2   >   filename               // 把標準錯誤重定向到乙個檔案中。

command    2  >>  filename               // 把錯誤標準重定向到乙個檔案中,追加。

command    >>   filename    2>&1      // 把標準輸出和標準錯誤一起重定向到乙個檔案中,追加。

command   filename2   //以命令filename1檔案作為標準輸入,以filename2檔案作為標準輸出。

command   < filename                        //command命令以filename檔案作為標準輸入

command   << delimite                       //從標準輸入中讀入,直至遇到delimite分界符

command   <&m                                 //把檔案描述符作為標準輸入

command   >&m                                 //把標準輸出重定向到檔案描述符m中

command   <&-                                   //關閉標準輸入  

例:ls   account*    >>   files.out                //將所有以account開頭的目錄及檔案都追加寫入到已有的files.out中。

pwd    >>  filename                             //將當前路徑輸入到filename檔案中

ls     >  ls.out                                       //將所有的檔案寫入到ls.out中

如果想建立乙個長度為0的空檔案,如下:

>filename

sort   <    name.txt                                 //輸入採用重定向的方式給出

sort    name.txt                                      //也可以把相應的檔案作為命令的引數

sort     name.out            

mail    louise    <    contents.txt              //使用者louise將收到乙個郵件,其中含有檔案contents.txt中的內容。

標準輸入與標準輸出

輸入cat 命令時,他會從stdin 對通斷介面來說,標準輸入就是鍵盤 接受輸入,cat testfile 現在cat命令會用testfile檔案中的行為作為輸入,可以使用這種技術將資料輸入到任何能從stdin接受資料的shell命令 stdout 在終端介面上,標準輸出就是終端顯示器。ls l t...

標準輸入,標準輸出和標準錯誤

當我們使用檔案描述符進行操作時,需要操作標準輸入 標準輸出 標準錯誤,可以包含如下標頭檔案 include這個標頭檔案中定義了標準裝置 standard file descriptors.define stdin fileno 0 standard input.define stdout filen...

標準輸入,標準輸出,標準錯誤輸出緩衝問題

基於流的操作最終會呼叫read或者write函式進行i o操作。為了使程式的執行效率最高,流物件通常會提供緩衝區,以減少呼叫系統i o庫函式的次數。基於流的i o提供以下3種緩衝 以上3種緩衝區分別定義為3個巨集,其定義如表21 1所示。表21 1 緩衝區型別的巨集定義 緩衝區型別 定 義 的 巨集...