1. 程式人生 > >重定向,管道符,黑洞文件

重定向,管道符,黑洞文件

出現 參數錯誤 讀取輸入 9.png 系統 mage 什麽 標準 黑洞

輸出重定向:

將命令的正常輸出結果保存到指定的文件,而不是直接顯示到屏幕上

語法:

  • 如果文件不存在,則會創建
 > 文件名
表示將標準輸出的內容,覆蓋寫到後面的文件中
 >> 文件名
表示將標準輸出的內容,追加寫到後面的文件中

技術分享圖片

技術分享圖片

將內核的版本信息追加到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
  

技術分享圖片

重定向,管道符,黑洞文件