標準輸入輸出與管道???
??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
????????作用:可以將上一個命令標準輸出流定位到文件中,又可以將其傳中下一個命令作為其標準的輸入流
????????
轉載于:https://blog.51cto.com/12302981/2154730