1. 程式人生 > >Linux 入門記錄:十六、Linux 多命令協作:管道及重定向

Linux 入門記錄:十六、Linux 多命令協作:管道及重定向

不同的 重定向 協作 border 定向 等等 錯誤 錯誤信息 logs

一、多命令協作

在 Linux 系統當中,大多數命令都很簡單,很少出現復雜功能的命令,每個命令往往只實現一個或多個很簡單的功能。通過將不同功能的命令組合一起使用,可以實現某個復雜功能的。

Linux 中幾乎所有命令的返回數據都是純文本的(因為每個命令都是運行在 CLI 下),而純文本形式的數據又是絕大多數命令的輸入格式,這就讓多命令協作成為可能。

Linux 的命令行提供了管道和重定向機制,多命令協作就是通過管道和重定向完成的。

二、標準流

對於一個終端而言,可能要處理各種類型的數據,int 型、float 型、double 型、char 型、string 型,甚至是一個文本文件,終端更重視數據本身的內容,無視這些數據的類型而著重於他們的內容,將它們抽象為一個“流”(Stream)的概念。數據流一般也稱 I/O 流。

每一個終端幾乎都會有數據流的 I/O(輸入輸出),普遍地,基於流的走向和用途有輸入流、輸出流、錯誤流、文件流等等,而一般地,有 3 個默認的標準流:

名稱 說明

編號

(文件描述符)

默認設備
STDIN 標準輸入流 0 鍵盤
STDOUT 標準輸出流 1 終端
STDERR 標準錯誤劉 2 終端

STDIN 表示標準輸入流 ,一般默認是鍵盤。 STDOUT 和 STDERR 分別表示標準輸出流和標準錯誤流,一般默認是終端。

三、管道和重定向

1. 重定向

重定向可以將 I/O 流定向(關聯)到文件,而不是默認的終端。重定向通常用來將某命令的輸出或錯誤信息保存到一個指定的文件中。

常見的操作符有以下幾個:

>       將STDOUT重定向到文件(覆蓋)
>>      將STDOUT重定向到文件(追加)
2>      將STDERR重定向到文件(覆蓋)
2>&1    將STDERR和STDOUT重定向到文件(覆蓋)
<       將STDIN重定向到文件

2. 管道

管道操作可以實現將一個命令的輸出作為另一個命令的輸入。管道通常用來組合不同的命令,以實現一個復雜的功能。

操作符:

|        將一個命令的STDOUT作為另一個命令的STDIN

Linux 入門記錄:十六、Linux 多命令協作:管道及重定向