輸出重定向:
將命令的正常輸出結果保存到指定的文件,而不是直接顯示到屏幕上
語法:
- 如果文件不存在,則會創建
> 文件名
表示將標準輸出的內容,覆蓋寫到後面的文件中
>> 文件名
表示將標準輸出的內容,追加寫到後面的文件中
將內核的版本信息追加到1.txt文件中
輸入重定向
將命令中接受輸入的路徑由默認的鍵盤改爲其他文件
EOF
本意是End Of File, 表示到了文件末尾,通常與 << 結合使用, 可以理解爲分界符
- 標記符可以使EOF,也可以是ccc,ddd
cat > 1.txt << ccc
之後可以輸入內容,直到輸入ccc,結束輸入
- 可以看到,文件名前面是 > 是覆蓋寫入, >> 是追加寫入
錯誤重定向
將命令執行過程中出現的錯誤信息(選項或參數錯誤)保存到指定的文件,而不是直接顯示到顯示器
- 錯誤信息保存到文件
操作符
錯誤重定向符號: 2>
標準輸入: 1< 或者簡寫 <
標準輸出: 0> 或者簡寫 >
- 2指的是標準錯誤輸出的文件描述符(標準的輸入和輸出省略了1和0)
在實際應用中,錯誤重定向可以用來收集執行的錯誤信息, 爲排錯提供依據
對於shell腳本還可以將無關緊要的錯誤信息重定向到空文件/dev/null,保持腳本輸出的簡介
將錯誤顯示的內容和 正確顯示的內容分開
接下來查看兩個目錄
還可以進行簡寫,將正確的信息 和 錯誤的信息追加到兩個文件
null黑洞,
把/dev/null看做黑洞,所有寫入他的內容都會永遠丟失,而嘗試從它哪裏讀取內容則會什麼都不會讀到
然而/dev/null對命令行和腳本非常有用
zeor空文件
在類UNIX操作系統中,/dev/zero是一個特別的文件,當你讀他的時候,他會提供無限的空字符
典型的用法就是產生一個特定大小的空白文件
使用dd命令產生一個50M的文件
參數
if 代表輸入文件,如果不指定if,默認就會從stdin中讀取輸入
of 代表輸出文件,如果不指定of,默認就會將stdout作爲默認輸出
bs 代表字節爲單位的快大小
count 代表被複制的塊數
能查看到文件的大小
但是不能顯示文件的信息,因爲沒有內容
&> 和 >&符號
- &表示等於的意思
1>&2 將標準輸出重定向到標準錯誤
2>&1 將標準錯誤重定向到標準輸出
上圖的no.txt文件中多了兩個錯誤文件,是因爲追加到文件的
將正確結果和錯誤結果放到一個文件中(簡寫)
互動:工作中shell腳本中的 >/dev/null 2>&1 是什麼意思
將標準輸出和錯誤輸出全部重定向到/dev/null中,也就是將產生的所有信息丟棄
管道 | 的使用
- 管道命令只處理前一個命令正確輸出,不處理錯誤輸出
- 管道右面的命令,必須能夠接受標準輸入流才行
- 關道符可以吧兩條命令連起來,可以鏈接多個命令使用
ps -aux | grep sshd
tee
- 讀取標準輸入的數據,並將其內容輸出成文件
-a 內容追加到給定的文件 而非覆蓋
磁盤使用信息
df -h
將磁盤使用的信息寫入到文件
df -h | tee disk.log
將磁盤使用的信息追加寫入到文件
df -h | tee -a disk.log