linux標準輸入輸出與重定向

2022-08-02 09:51:12 字數 1960 閱讀 7923

原文:

1. 標準輸入輸出和錯誤

linux下使用標準輸入檔案stdin和標準輸出檔案stdout,來表示每個命令的輸入和輸出,還使用乙個標準錯誤輸出檔案stderr用於輸出錯誤資訊。這三個標準輸入輸出系統預設與控制終端裝置相聯絡在一起。

因此,在標準情況下,每個命令通常從它的控制終端中獲取輸入,將輸出列印到控制終端的螢幕上。但是也可以重新定義程式的標準輸入檔案stdin和標準輸出檔案stdout,將它們重新定向。最基本的用法是將它們重新定義到乙個檔案上,從乙個檔案獲取輸入,輸出到另外的檔案中等。標準輸入檔案stdin,通常對應終端的鍵盤;標準輸出檔案stdout和標準錯誤輸出檔案stderr,這兩個檔案都對應終端的螢幕。程序將從標準輸入檔案中得到輸入資料,將正常輸出資料輸出到標準輸出檔案,而將錯誤資訊送到標準錯誤檔案中。

2. 檔案描述符

檔案描述符是從0開始的整數,指向與程序相關的特定資料流。當程序啟動時,通常開啟三個檔案描述符,分別對應三種標準的i/o:標準輸入(檔案描述符0),標準輸出(檔案描述符1),標準錯誤(檔案描述符2)。

1)標準輸入(stdin):它是命令的輸入,預設和終端的鍵盤關聯

2)標準輸出(stdout):它是命令的輸出,預設和終端的螢幕關聯

3)標準錯誤(stderr):它是命令的錯誤資訊輸出,預設也和終端的螢幕關聯

4)如果程序開啟了額外的檔案進行輸入和輸出,則其被設定為下乙個可用的檔案描述符,從3到9

3. 檔案重定向

在執行命令時,命令的標準輸入、輸出和錯誤資訊是和問價描述符0、1、2關聯的,而檔案描述符0、1、2預設和終端關聯。如果希望命令從檔案中讀取標準輸入或則希望命令的標準輸出寫到檔案而不是螢幕,就需要使用檔案重定向。

4. 重定向標準輸出(輸出重定向)

1)cmd > filename:把cmd命令的標準輸出重定向到乙個檔案中(如果檔案存在,其內容將被覆蓋)

2)cmd >> filename:把cmd命令的標準輸出重定向到乙個檔案中(追加檔案尾部)

3)> myfile      :建立乙個空檔案,如果檔案存在則清空該檔案

4)舉例:ls -l | grep ^d >>files.out //把當前目錄下的子目錄的列表寫到檔案files.out中

>sql.log                    //清空sql.log

5. 重定向標準輸入(輸入重定向)

1)cmd < filename:以filename檔案作為cmd命令的標準輸入

2)cmd << delimiter:從標準輸入中讀入輸入,知道遇到delimiter分解符。

3)舉例:sort < grade.txt //對檔案grade.txt進行排序(sort)

4)cmd6. 重定向標準錯誤(錯誤資訊重定向)

1)cmd 2> filename:把cmd命令的標準錯誤重定向到乙個檔案中(如果檔案存在,其內容將被覆蓋)

2)cmd 2>> filename:把cmd命令的標準錯誤重定向到乙個檔案中(追加檔案尾部)

3)舉例:find / -name "*.tmp" -exec rm -rf {}; 2>/dev/null //把命令的錯誤資訊輸出丟棄

Linux重定向(輸入輸出重定向)

我們知道,linux 中標準的輸入裝置預設指的是鍵盤,標準的輸出裝置預設指的是顯示器。而本節所要介紹的輸入 輸出重定向,完全可以從字面意思去理解,也就是 通常是用檔案或命令的執行結果來代替鍵盤作為新的輸入裝置,而新的輸出裝置通常指的就是檔案。對於輸入重定向來說,其需要用到的符號以及作用如表 1 所示...

linux輸入輸出重定向

基本概念 這是理解後面的知識的前提,請務必理解 a i o重定向通常與 fd有關,shell的fd通常為10個,即 0 9 b 常用fd有3個,為0 stdin,標準輸入 1 stdout,標準輸出 2 stderr,標準錯誤輸出 預設與keyboard monitor有關 c 用 來改變讀進的資料...

Linux輸入輸出重定向

標準輸入輸出 裝置 裝置檔名 檔案描述符 型別鍵盤 dev stdin 0標準輸入 顯示器 dev stdout 1標準輸出 顯示器 dev stderr 2標準錯誤輸出 輸出重定向 輸出重定向符號 1 標準輸出重定向 命令 檔案 以覆蓋方式把命令的正確輸出重定向到檔案或裝置 命令 檔案 以追加的方...