在shell指令碼中,可以用幾種不同的方式讀入資料:可以使用標準輸入—預設為鍵盤,或者指定乙個檔案作為輸入。對於輸出也是一樣:如果不指定某個 檔案作為輸出,標準輸出總是和終端螢幕相關聯。如果所使用命令出現了什麼錯誤,它也會預設輸出到螢幕上,如果不想把這些資訊輸出到螢幕上,也可以把這些信 息指定到乙個檔案中。
可以通過管道把乙個命令的輸出傳遞給另乙個命令作為輸入。管道用豎槓|表示。它的一般形式為:
命令1 |命令2
其中|是管道符號。
在 下面的例子中,在當前目錄中執行檔案列表操作,如果沒有管道的話,所有檔案就會顯示出來。當shell看到管道符號以後,就會把所有列出的檔案交給管道右 邊的命令,因此管道的含義正如它的名字所暗示的那樣:把資訊從一端傳送到另外一端。
sed、awk和grep都很適合用管道,特別是在簡單的一行命令中。
如圖,將ls命令的結果通過 | 傳給 grep 命令
teetee命令作用可以用字母t來形象地表示。它把輸出的乙個副本輸送到標準輸出,另乙個副本拷貝到相應的檔案中。如果希望在看到輸出的同時,也將其存入乙個檔案,那麼這個命令再合適不過了。
它的一般形式為:
tee -a files
其中,-a表示追加到檔案末尾。
當執行某些命令或指令碼時,如果希望把輸出儲存下來,tee命令非常方便。
如圖,在顯示/root/desktop 下的檔案的同時,將顯示結果重定向給檔案 file
標準輸入、輸出和錯誤
當我們在shell中執行命令的時候,每個程序都和三個開啟的檔案相聯絡,並使用檔案描述符來引用這些檔案。由於檔案描述符不容易記憶,shell同時也給出了相應的檔名。
下面就是這些檔案描述符及它們通常所對應的檔名:
檔案 檔案描述符
輸入檔案—標準輸入 0
輸出檔案—標準輸出 1
錯誤輸出檔案—標準錯誤 2
系統中實際上有12個檔案描述符,但是正如我們在上表中所看到的,0、1、2是標準輸入、輸出和錯誤。可以任意使用檔案描述符3到9。
如下圖 用普通使用者去搜尋 passwd 時會產生一些錯誤輸出,通過將錯誤重定向,達到只顯示正確輸出。
標準輸入
標準輸入是檔案描述符0。它是命令的輸入,預設是鍵盤,也可以是檔案或其他命令的輸出。
標準輸出
標準輸出是檔案描述符1。它是命令的輸出,預設是螢幕,也可以是檔案。
標準錯誤
標準錯誤是檔案描述符2。這是命令錯誤的輸出,預設是螢幕,同樣也可以是檔案。你可能會問,為什麼會有乙個專門針對錯誤的特殊檔案?這是由於很多人喜歡把錯誤單獨儲存到乙個檔案中,特別是在處理大的資料檔案時,可能會產生很多錯誤。
如果沒有特別指定檔案說明符,命令將使用預設的檔案說明符(你的螢幕,更確切地說是你的終端)
檔案重定向
在 執行命令時,可以指定命令的標準輸入、輸出和錯誤,要實現這一點就需要使用檔案重定向。以下列出了最常用的重定向組合,並給出了相應的檔案描述符。在 對標準錯誤進行重定向時,必須要使用檔案描述符,但是對於標準輸入和輸出來說,這不是必需的。
常用檔案重定向命令
command > filename 把標準輸出重定向到乙個新檔案中
command >> filename 把標準輸出重定向到乙個檔案中(追加)
command 1 > fielname 把標準輸出重定向到乙個檔案中
command > filename 2>&1 把標準輸出和標準錯誤一起重定向到乙個檔案中
command 2 > filename 把標準錯誤重定向到乙個檔案中
command 2 >> filename 把標準輸出重定向到乙個檔案中(追加)
command >> filename 2>&1 把標準輸出和標準錯誤一起重定向到乙個檔案中(追加)
command < filename >filename2 把command命令以filename檔案作為標準輸入,以filename2檔案作為標準輸出
command < filename 把command命令以filename檔案作為標準輸入
command << delimiter 把從標準輸入中讀入,直至遇到delimiter分界符
command
command >&m 把標準輸出重定向到檔案描述符m中
command
如下圖,通過》 將「hello word 」追加到檔案 file 中
linux 輸入輸出的管理
輸入輸出的管理 在linux系統中,正確輸出的編號為 1 錯誤輸出的編號為 2 這是因為不同使用者的許可權不同。下面介紹兩種linux中常用的輸入輸出管理命令 1.輸出重定向 輸出追加 在普通使用者student下執行 find etc name passwd 命令便會將所有輸出如下圖顯示出來,注 ...
Linux 4 賬號管理
簡介 linux系統是乙個多使用者多工的分時作業系統,任何乙個要使用系統資源的使用者,都必須首先向系統管理員申請乙個賬號,然後以這個賬號的身份進入系統。使用者的賬號一方面可以幫助系統管理員對使用系統的使用者進行跟蹤,並控制他們對系統資源的訪問 另一方面也可以幫助使用者組織檔案,並為使用者提供安全性保...
4 標準輸入輸出
使用者通過控制台將資料傳遞給程式的過程 格式一 input 格式二 input 提示資訊 格式一 變數 input 格式二 變數 input 提示資訊 控制台執行到input 操作後,會將程式掛起,等待使用者輸入資料,在使用者未完成資料輸入之前,程式不向下執行,一旦控制台接收到使用者輸入的資料後,繼...