1.Linux給程序提供三種I/O設備
標準輸入-0 默認接受來自鍵盤的輸入
標準輸出-1 默認輸出到終端窗口
標準錯誤-2 默認輸出到終端窗口
在dev下有個fd設備,打開的文件都有一個fd:file dexcriptor 文件描述符
I/O重定向:改變默認位置
2.把輸出和錯誤重新定向到文件
> 把正確輸出重定向出去
2> 把錯誤輸出重定向出去
> 2>&1 (把錯誤結果轉換成正確結果) 或&> 把所有輸出重定向到文件
> 相當于touch 可以創建文件 echo abc > filename 此時>是覆蓋的意思
>>追加
>| filename 強制覆蓋
set -C禁止將內容覆蓋已有文件,但可以追加
set +c 允許覆蓋
&>把所有輸出重定向到文件
():合并多個程序的輸出(注意命令之間用;來分隔)
3.tr 轉換和刪除字符
tr -s ” 多個中(重復的元素)取一個
tr -d ” 刪除 tr -d abc < /etc/fstab 刪除fstab文件中所有abc
tr -t ” 沒有轉換的對象就不轉換
tr -c “取字符的補集(和t s結合使用)
tr -cs”
tr -cd “反向刪除
tr ‘1-9’ ‘a-j’ < test 這是將指定文件test中的‘1-9’改為‘a-j’ 但test中的內容不變
<輸入重定向
當abc轉換成edf后,后面沒有要轉換的東西,所以就不轉換了;當abc轉換成edf后,還要轉換d,但是沒有轉換的對象,此時轉換的對象應是上一個字母轉換的對象,所以將d轉換成f
對應的字符:
\NNN 用八進制值NNN字符(1到3八進制數字)
\\ 反斜杠
\b 退格
\n 新行
\r 回車
命令顯示的內容可以導入一個文件中
-d和-s的效果 -d不保留回車 -s保留一個回車
cat > listfile < filename 單純敲cat > listfile 就會等待你輸入 你可以手動輸入,也可以使用文件導入 在后面加< 跟個文件
<<后面跟的是終止詞(命令從鍵盤多行重導入), 敲入 cat > test << ?? 就會等待你輸入,當輸入??時,就會終止輸入,此時輸入完畢。
4.管道 | 將正確結果重定向給下一條命令
命令1 | 命令2 | 命令3….將命令1的輸出發送到命令2的輸入,再將命令2的輸出發送到命令3的輸入….
錯誤的輸出不能通過管道的發送,需要通過2>&1 | 或|& 來實現
2>&1 | 或 |& 全部結果重定向
組合多種工具的功能
ls | tr ‘a-z’ ‘A-Z’
mail發郵件 echo 123456 | mail -s “nihao” magedu
ls -l /etc/passwd | less 一頁一頁的查看輸入
5.mail 發郵件
格式:mail -s “nihao” magedu “nihao “是主題 magedu是你要發送郵件的對象
敲完mail -s “nihao” magedu 就會讓你輸入發送郵件的內容 敲 .就可以結束輸入了
mail -s “nihao” magedu < /etc/passwd (很少使用) 或cat /etc/passwd | mail -s “nihao” magedu(大多數使用)這種格式是直接將文件導入,不用輸入
6.tee
格式:命令1 | tee [-a]filename | 命令2 把命令1顯示的內容保存在文件中,作為命令2的輸入
-a 是追加 若不加-a,當這個文件存在時就會覆蓋,文件不存在時,直接創建該文件并保存。若加-a,當文件存在時就會追加。
本次博客的內容就到這里,歡迎大家指點。
原創文章,作者:fuming,如若轉載,請注明出處:http://www.www58058.com/81894