Linux的标准I/O和管道
標(biāo)準(zhǔn)輸入輸出與管道???
??1、標(biāo)準(zhǔn)輸入和輸出
??????????? 程序:指令+數(shù)據(jù)
???????????????????????指令:計(jì)算、加減乘除
???????????????????????數(shù)據(jù):輸入數(shù)據(jù)、輸出數(shù)據(jù)
? 2、在Linux中每一個(gè)打開(kāi)的文件都會(huì)分配一個(gè)當(dāng)前進(jìn)程中唯一的文件描述符,用來(lái)標(biāo)識(shí)文件的狀態(tài)
????????????? fd:file descripor
??????????????
??????????????
?3、Linux提供給程序的有三種I/O設(shè)備
????????????????1、標(biāo)準(zhǔn)輸入(stdin)????? -0 默認(rèn)接受來(lái)自鍵盤的輸入
????????????????2、標(biāo)準(zhǔn)輸出 (stdou)????-1 默認(rèn)輸出到終端窗口
????????????????3、標(biāo)準(zhǔn)錯(cuò)誤???(stderr)??-2 默認(rèn)輸出到終端窗口
4、I/O 重定向:改變默認(rèn)的輸入、輸出的位置,重新定位到其他的地方
?????????????1、將stdin??? stdout?? stderr重新定位到文件中
????????????????????>??stdout? 的重新定位
????????????????????2>????stderr 的重新定位
????????????????????&>??? 將所有的輸出重新定位
????????????
??????????????????? 使用了 >??stdout? 的重新定位 ,執(zhí)行結(jié)果,將不會(huì)輸出到,終端上,被重定向到11.txt中,如果該文件不存在,則會(huì)被創(chuàng)建
?????????????????????
????????????????? 一個(gè)錯(cuò)誤的命令,使用的是 2 ,默認(rèn)輸出到終端,可以使用? 2>重定向到22.txt 文件中,終端就不會(huì)打印錯(cuò)誤的信息
??????????????????
????????????????如果一個(gè)命令中既有標(biāo)準(zhǔn)輸出、又有標(biāo)準(zhǔn)錯(cuò)誤輸出,則使用?? &> 定位
??????????????????
????????????????注意使用??? >??
??????????????????????????????????????????2>?
???????????????????????????????????????????&>?
?????????????????????這是都是覆蓋文件,如果想要追加這則使用
??????????????????????????>>??
??????????????????????????????????????????2>?>
???????????????????????????????????????????&>?>
????????2、將標(biāo)準(zhǔn)輸入、與標(biāo)準(zhǔn)錯(cuò)誤重新全部定位到文件中,除了使用??? &>>,還可以如下使用方式,但是注意順序很重要
????????????????????
????????
????
????????????????????????????????
??4、tr 命令的使用
????????????????用途:?轉(zhuǎn)換和刪除字符
??????????????? 語(yǔ)法:tr [ - options ....]?? set1? set2
????????????????????????????-d --delete:刪除所有屬于第一字符集的字符
????????????????????????????
????????????????????????????-s --squeeze-repeats:把連續(xù)重復(fù)的字符以單獨(dú)一個(gè)字符表示
????????????????????????????
????????????????????????????-t --truncate-set1:將第一個(gè)字符集對(duì)應(yīng)字符轉(zhuǎn)化為第二字符集對(duì)應(yīng)的字符
????????????????????????????????
????????????????????????????????-c –C --complement:取字符集的補(bǔ)集
????????????????????????????????
????????????????????????????
????5、從文件中導(dǎo)入輸入流
?????????????????1、使用<來(lái)重定向標(biāo)準(zhǔn)輸入
????????????????????2、某些命令能夠接受從文件中導(dǎo)入的STDIN
???????????????? 3、如cat 、tr等
????????????????
????????????????
???????????????? 4、可以多行一起發(fā)送給STDIN??,使用 << EOF終止詞????
?????????????????????????????????
??????6、管道
???????????1、?管道(使用符號(hào)“|”表示)用來(lái)連接命令
????????????2、語(yǔ)法:cammand1 | cammand2 | cammand3
????????????3、將命令1的STDOUT發(fā)送給命令2的STDIN,命令2的STDOUT發(fā)送到命令3的STDIN
????????????4、STDERR默認(rèn)不能通過(guò)管道轉(zhuǎn)發(fā),可利用2>&1 或 |& 實(shí)現(xiàn)
????????????
????????????
????7、重定向到多個(gè)目標(biāo)(tee)
????????用法: cammand1 | tee file | cammand2
????????作用:可以將上一個(gè)命令標(biāo)準(zhǔn)輸出流定位到文件中,又可以將其傳中下一個(gè)命令作為其標(biāo)準(zhǔn)的輸入流
????????
轉(zhuǎn)載于:https://blog.51cto.com/12302981/2154730
總結(jié)
以上是生活随笔為你收集整理的Linux的标准I/O和管道的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 读书笔记-说服力 让你的PPT会说话
- 下一篇: Luogu P2463 [SDOI200