Linux的標準I/O和管道
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 的重新定位
一個錯誤的命令,使用的是 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和管道