1. 程式人生 > >文件輸入輸出的管理以及管道的使用

文件輸入輸出的管理以及管道的使用

使用 str name -name all 執行 處理 linux系統中 linu

在linux操作系統中,一個程序被加載到內存並開始運行後是以進程的形式的形態表現出來的,而系統宗的每一個進程在默認的情況下都有三個標準的通道,分別為標準輸入、標準輸出和標準錯誤輸出。標準輸入的操作代碼為0,標準輸出的操作代碼為1,標準錯誤輸出的操作代碼為2。

在linux系統中用普通用戶執行命令 find /etc/? -name passwd 有兩種輸出

正確的為1? 錯誤的為2

技術分享圖片

> ? ?#重定向正確輸出
2> ? ?#重定向錯誤輸出
&> ? ?#重定向所有輸出
2>&1 ? ?#把錯誤輸出的編號由2轉換為1

(1) find /etc/ -name passwd? > file.out? ##定向正確輸出

(2) find /etc/ -name passwd 2> file.err? ##定向錯誤輸出

(3) find /etc/ -name passwd &> file.all ##定向全部輸出

技術分享圖片

註意:重定向會覆蓋原文件內容!

技術分享圖片

追加則不會覆蓋源文件內容

保持原文件內容不變的情況下把輸出追加到文件之後

>> ? ?##追加正確輸出
2>> ? ?##追加錯誤輸出
&>> ? ?##追加所有輸出
(4)find /etc/ -name passwd >> file ##追加正確輸出

(5)find /etc -name passwd 2>> file ##追加錯誤輸出

(6)find /etc -name passwd &>> file ##追加所有輸出

相關截圖不再贅述<< 的應用

當出現EOF時錄入結束

技術分享圖片

使用該命令非交互式修改密碼

技術分享圖片

管道命令" | "把輸出變成下一個程序的輸入,只能處理經由前面的一個命令傳來的正確消息,對於錯誤的消息並沒有直接處理的能力。

例如:

技術分享圖片

管道只將正確的輸出變為輸入再進行下一個命令

應用:使用tee命令復制date命令的輸出到file中,並統計輸出行數

技術分享圖片

文件輸入輸出的管理以及管道的使用