1. 程式人生 > >IO和管道

IO和管道

com 包括 to do 小寫字母 換行 大寫字母 語法 標準輸出 strong

讀入數據:input
輸出數據:output

三種IO設備:
標準輸入 標準輸出 標準錯誤
0 ? ? ? 1 ? ? ? 2
STDIN STDOUT STDERR
?
——————————————————————————
< ?標準輸入
輸出和錯誤可以被重定向到文件
命令 操作符號 文件名
?
支持的操作符號包括:
\> 把輸出重定向到文件,文件內容會被覆蓋
2> 把錯誤重定向到文件
&> 把所有輸出重定向到文件
?
set –C 禁止將內容覆蓋已有文件,但可追加
\>| file 強制覆蓋
set +C 允許覆蓋
\>> 原有內容基礎上,追加內容

?
——————————————————————————
多行重定向
使用“<<終止詞”命令從鍵盤把多行重導向給STDIN
直到 終止詞 位置的所有文本都發送給STDIN
有時被稱為就地文本(heretext)
例:mail -s "Please Call" [email protected] <<END

?> Hi Wang
\> Please give me a call when you get in. We may need
\> to do some maintenance on server1.

\> Details when you‘re on-site
\> END
?
當在腳本中需要多行重定向縮進時,可在終止詞前添加-
例: if xxx
cat <<-end
xxx
aaa
end 只要是單獨一行的終止詞就會結束
?
————————————————————————————
轉換和刪除字符tr
語法:tr [選項][源字符][替換字符]
選項:-t 將第一個字符集對應字符轉化為第二字符集對應的字符
?? -c –C --complement:取字符集的補集
?? -d 刪除所有屬於第一字符集的字符
?? -s 把連續重復的字符以單獨一個字符表示
?? -d ‘\r 可以把windos文本換行刪掉成linux格式
支持:
[:alnum:]字母和數字 [:alpha:]字母[:digit:]數字
[:lower:]小寫字母[:space:]空白字符 [:upper:]大寫字母
?
例:[[email protected] ~]#tr -t ‘abc‘ ‘AB‘
??abc ??? 只將ab對應的字符轉換,c不做轉換
??ABc
?
例:[[email protected] ~]#tr -d ‘abc‘ ?? 刪除字段中的abc字符
??a1b2c3
??123
??
例:[[email protected] ~]#tr -s ‘abc‘ ??壓縮連續重復字符
??aaaabbbbcccc
??abc
?
例:[[email protected] ~]#tr ‘[:lower:]‘ ‘[:upper:]‘
??aaaa ?? 大寫替換小寫
??AAAA

?
使用<來重定向標準輸入
tr ‘a-z’ ‘A-Z’< /etc/issue
該命令會把/etc/issue中的小寫字符都轉換成大寫字符
?
tr –d abc < /etc/fstab
刪除fstab文件中的所有abc中任意字符

——————————————————————————————
管道命令 【 | 】
語法:命令1 | 命令2 | ....
命令1為標準輸出,命令2為標準輸入,命令2引用命令1為標準輸入
?
標準錯誤默認不能通過管道轉發,可利用2>&1 或 |& 實現
?

例:計算1+2+3+..+99+100的總和
[[email protected] ~]#seq -s + 100 |bc
5050
?
[[email protected] ~]#echo {1..100} |tr ‘ ‘ ‘+‘|bc
5050

IO和管道