1. 程式人生 > >Linux的標準I/O和管道

Linux的標準I/O和管道

導入 結果 鍵盤 nbsp tle pan 圖片 cto 刪除字符

標準輸入輸出與管道

1、標準輸入和輸出

程序:指令+數據

指令:計算、加減乘除

數據:輸入數據、輸出數據

2、在Linux中每一個打開的文件都會分配一個當前進程中唯一的文件描述符,用來標識文件的狀態

fd:file descripor

技術分享圖片

技術分享圖片

3、Linux提供給程序的有三種I/O設備

1、標準輸入(stdin) -0 默認接受來自鍵盤的輸入

2、標準輸出 (stdou) -1 默認輸出到終端窗口

3、標準錯誤 (stderr) -2 默認輸出到終端窗口

4、I/O 重定向:改變默認的輸入、輸出的位置,重新定位到其他的地方

1、將stdin stdout stderr重新定位到文件中

> stdout 的重新定位

2> stderr 的重新定位

&> 將所有的輸出重新定位

技術分享圖片

使用了 > stdout 的重新定位

,執行結果,將不會輸出到,終端上,被重定向到11.txt中,如果該文件不存在,則會被創建


技術分享圖片

一個錯誤的命令,使用的是 2 ,默認輸出到終端,可以使用 2>重定向到22.txt 文件中,終端就不會打印錯誤的信息


如果一個命令中既有標準輸出、又有標準錯誤輸出,則使用 &> 定位

技術分享圖片

註意使用 >

2>

&>

這是都是覆蓋文件,如果想要追加這則使用

>>

2> >

&> >

2、將標準輸入、與標準錯誤重新全部定位到文件中,除了使用 &>>,還可以如下使用方式,但是註意順序很重要


技術分享圖片


4、tr 命令的使用

用途: 轉換和刪除字符

語法:tr [ - options ....] set1 set2

-d --delete:刪除所有屬於第一字符集的字符

技術分享圖片

-s --squeeze-repeats:把連續重復的字符以單獨一個字符表示

技術分享圖片

-t --truncate-set1:將第一個字符集對應字符轉化為第二字符集對應的字符

技術分享圖片

-c –C --complement:取字符集的補集

技術分享圖片


5、從文件中導入輸入流

1、使用<來重定向標準輸入

2、某些命令能夠接受從文件中導入的STDIN

3、如cat 、tr等

技術分享圖片

技術分享圖片

4、可以多行一起發送給STDIN ,使用 << EOF終止詞

技術分享圖片

6管道

1、 管道(使用符號“|”表示)用來連接命令

2、語法:cammand1 | cammand2 | cammand3

3、將命令1的STDOUT發送給命令2的STDIN,命令2的STDOUT發送到命令3的STDIN

4、STDERR默認不能通過管道轉發,可利用2>&1 或 |& 實現

技術分享圖片

技術分享圖片


7、重定向到多個目標(tee)

用法: cammand1 | tee file | cammand2

作用:可以將上一個命令標準輸出流定位到文件中,又可以將其傳中下一個命令作為其標準的輸入流

技術分享圖片


Linux的標準I/O和管道