Linux的資料流重導向,和管線命令

2021-09-01 18:48:28 字數 1723 閱讀 7702

資料流重導向(redirect)

名稱簡稱**

使用方式

標準輸入(standard input)

stdin

0<,將檔案的資料作為其他命令的輸入

<<,設定輸入結束的字串 

標準輸出(standard output)

stdout

1>,覆蓋方式將正確的資料輸出

>>,累加方式將正確的資料輸出

標準錯誤輸出(standard error output)

stderr

22>,覆蓋方式將錯誤的資料輸出

2>>,累加方式將錯誤的資料輸出

資料流重導向,可以將命令的stdout或stderr分別輸出到其他的檔案或裝置中去。

也可以將檔案或裝置作為stdin輸入,作為命令的輸入。

多條命令的執行順序

$?代表命令執行結果,其值為0表示成功。

cmd1;cmd2

分號兩邊的命令沒有相關性,只是按順序執行

cmd1&&cmd2

1若cmd1執行完畢且正確執行($?=0),則執行cmd2

2若cmd1執行完畢且為錯誤($?<>0),則不執行cmd2

cmd1||cmd2

1若cmd1執行完畢且正確執行($?=0),則不執行cmd2

2若cmd1執行完畢且為錯誤($?<>0),則執行cmd2

cmd1&&cmd2||cmd3

1若cmd1的($?=0),則執行cmd2

2若cmd1的($?<>0),則執行cmd3

管線命令(pipe)

cmd1|cmd2   cmd1的stdout,作為cmd2的stdin

管線命令僅會處理stdout,對於stderr會予以忽略

管線命令必須能夠接受前乙個命令的資料成為stdin繼續處理才行,也就是說cmd2是有限制的

具體管線命令

cut從每行中,取出符合條件的部分

grep

在一行中,若有符合條件的部分,則輸出此行。

支援正規表示式。

sort

對檔案中的多行進行排序

uniq

若有重複的多行,只輸出第乙個

wc統計檔案中的行,單詞,字元,位元組的數量

tee從stdin讀取,並同時輸出到stdout和檔案

tr替換或刪除一段文字

coltab轉換成多個空格,或man page轉換為文字

join

將兩個檔案中相同資料的兩行,連線成一行

paste

直接將兩個檔案的兩行,合併成一行,並以tab分割

expand

將tab轉換成空格

split

將乙個大檔案分割成幾個小檔案

可用 cat pieces* >> file 來恢復

xargs

從stdin中,以空格或換行來分割出多個引數,給其他命令

許多命令不支援管線,可以通過xargs提供引數

減號-   代表stdin或stdout

將/home裡面的檔案都打包,打包的資料輸出到stdout,第乙個「-」代表stdout。

經過管線後,解壓包的資料從stdin而來,第二個「-」代表stdin

$ tar -cvf - /home | tar -xvf -

Linux資料流重導向

當我們使用linux的時候,每下達1個命令,通常都會有對應的資訊輸出在螢幕上,這些輸出的資料就是資料流,而linux資料流重導向,就是把這些資料輸出到不同的地方了。而資料流通常分為正確的資料跟錯誤的資料,如果我們要把正確的資料導向到我們要的檔案裡面去,可以使 覆蓋 新增 來處理。malt malt ...

Linux之資料流重導向

其實一開始繞進檔案描述符這個大坑裡去了,越挖越深,什麼系統檔案表,記憶體索引節點,vfs等等都一下子冒了出來,而我暫時還沒那麼多精力搞定所有,於是只能遮蔽底層的一些細節,暫且當作黑盒子,來日再挖。1 linux系統中,一切資源都被視為檔案,包括放在磁碟上的各種文件,甚至各種裝置。檔案是linux組織...

Linux下資料流重導向

定義 指根據命令的輸出不列印在螢幕上而是直接輸入到其他裝置比如檔案或印表機或垃圾箱 格式 命令 command option 引數 1 2 2 檔案或列印裝置 1.標準輸入 stdin 為 0 使用 或 2.標準輸出 stdout 為 1 使用 或 3.標準錯誤輸出 stderr 為 2 使用 2 ...