在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 緩衝區型別的巨集定義 緩衝區型別 定 義 的 巨集...