標準輸入輸出與管道???

??1、標準輸入和輸出

??????????? 程序:指令+數據

???????????????????????指令:計算、加減乘除

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

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

????????????? fd:file descripor

??????????????image.png

??????????????image.png

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

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

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

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

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

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

????????????????????>??stdout? 的重新定位

????????????????????2>????stderr 的重新定位

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

????????????image.png

??????????????????? 使用了 >??stdout? 的重新定位 ,執行結果,將不會輸出到,終端上,被重定向到11.txt中,如果該文件不存在,則會被創建


?????????????????????image.png

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

??????????????????


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

????????????????image.png??

????????????????注意使用??? >??

??????????????????????????????????????????2>?

???????????????????????????????????????????&>?

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

??????????????????????????>>??

??????????????????????????????????????????2>?>

???????????????????????????????????????????&>?>

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


????????????????????image.png

????????

????

????????????????????????????????

??4、tr 命令的使用

????????????????用途:?轉換和刪除字符

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

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

????????????????????????????image.png

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

????????????????????????????image.png

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

????????????????????????????????image.png

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

????????????????????????????????image.png

????????????????????????????


????5、從文件中導入輸入流

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

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

???????????????? 3、如cat 、tr等

????????????????image.png

????????????????image.png

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

????????????????????????image.png?????????

??????6管道

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

????????????2、語法:cammand1 | cammand2 | cammand3

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

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

????????????image.png

????????????image.png


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

????????用法: cammand1 | tee file | cammand2

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

????????image.png