跳轉到內容

Unix/重定向快速入門

來自華夏公益教科書,開放的書籍,開放的世界


重定向

[編輯 | 編輯原始碼]

當你執行一個有輸出的命令時,我們說它預設會寫入標準輸出,也就是螢幕。如果一個命令需要輸入,我們說它從標準輸入讀取,也就是鍵盤。我們已經多次見過的ls命令會生成一個檔案和目錄的列表作為其輸出,並將其列印到螢幕上。我們將使用一個新的命令 - cat - 來研究如何將流'重定向'到標準輸入或輸出。

顯示檔案內容

[編輯 | 編輯原始碼]

你可以使用cat命令來接收輸入並將其寫入標準輸出。通常你像這樣使用它

%cat myfile.txt

它會將myfile.txt的內容放到螢幕上,然後返回到提示符。它滾動內容非常快!

使用 cat 從鍵盤捕獲

[編輯 | 編輯原始碼]

當你以描述的方式使用cat時,輸入來自檔案,它寫入標準輸出(你猜對了:螢幕)。但我們可以指示cat從檔案以外的地方獲取輸入,並將輸出傳送到螢幕以外的地方。

你可以使用cat來捕獲在鍵盤上鍵入的內容,並將其傳送到某個輸出。我們可以透過在不指定檔名的情況下鍵入cat來嘗試它,就像這樣

% cat

你現在可以在鍵盤上輸入,當你輸入完你想要的字元後,按下回車鍵換行。當你完全輸入完後,鍵入 Ctrl-d(簡寫為 ^D)來結束該過程。如果你像這樣執行cat而不命名要讀取的檔案,它會讀取標準輸入(鍵盤),並在收到'檔案結束'(^D)時,將其複製到標準輸出(螢幕)。

重定向輸出

[編輯 | 編輯原始碼]

正如我所說,你可以重定向命令的輸入和輸出。

你使用>符號將輸出重定向到檔案。例如,要建立一個名為colours的檔案,其中包含顏色名稱列表,鍵入

% cat > colours

然後輸入一些顏色的名稱。每個名稱後按[回車]鍵,最後以^D結束。

pink
yellow
purple
^D 

(這意味著按[Ctrl]和[d]來停止)。

cat命令讀取標準輸入(鍵盤),>將輸出(通常會發送到螢幕)重定向到一個名為 colours 的檔案

要讀取檔案的內容,鍵入

% cat colours

(這並不是建立文字檔案的最佳方法 - 通常我建議使用像viemacspico這樣的編輯器,但我們正在學習重定向,而不是文字編輯。)

追加到檔案

[編輯 | 編輯原始碼]

如果你使用>>來重定向,那麼標準輸出將被重定向到檔案的末尾,並追加到現有內容中。因此,要向 colours 檔案新增更多專案,鍵入

% cat >> colours

然後輸入一些更多顏色的名稱

red
^D

(Control D 來停止)

這將鍵盤輸入重定向到colours檔案的末尾。

要讀取檔案的內容,鍵入

% cat colours

現在我們將建立一個名為 colours2 的檔案

% cat > colours2
green
blue
^D

(Control D 來停止)

你現在有兩個檔案。一個列出了四種顏色,另一個列出了兩種顏色。

將兩個檔案合併在一起

[編輯 | 編輯原始碼]

我們現在將使用cat命令將 colours 和 colours2 合併(concatenate)到一個名為 allcolours 的新檔案中。這實際上是該命令的最初目的。你像這樣操作

% cat colours colours2 > allcolours

這樣做的原理是依次讀取 colours 和 colours2 的內容,並將結果組合到 allcolours 檔案中。要讀取新檔案的內容,鍵入

% cat allcolours

重定向輸入

[編輯 | 編輯原始碼]

我們使用<符號來重定向命令的輸入。

例如,sort命令按字母順序或數字順序對列表進行排序。鍵入

% sort

然後輸入一些動物的名稱。每個名稱後按[回車]鍵。

dog
cat
bird
ape
^D

(控制 d 來停止)

輸出將是

ape
bird 
cat 
dog

將輸入重定向到檔案

[編輯 | 編輯原始碼]

使用<,你可以將輸入重定向到來自檔案而不是鍵盤。例如,要對顏色列表進行排序,鍵入

% sort < allcolours

排序後的列表將輸出到螢幕上。

要將排序後的列表的輸出重定向到檔案,鍵入,

% sort < allcolours > sortedcolours

使用cat來顯示 sortedcolours 檔案的內容。

除了將命令的輸出重定向到檔案外,我們還可以使用管道將它傳遞給另一個程序。例如

% sort < allcolours | wc -l

在這種情況下,sort命令的輸出被傳遞到wc命令並進行處理,然後再顯示。

華夏公益教科書