Linux 資料流重定向

2021-10-01 14:06:16 字數 3260 閱讀 8923

1.重定向怎麼用

2.檔案描述符(0,1,2)

資料流重定向

簡單的重定向

標準錯誤的重定向

使用tee命令重定向到多個檔案

exec命令

建立檔案描述符

關閉檔案描述符

完全遮蔽命令的輸出

使用xargs分割引數列表 命令

>: 覆蓋檔案內容並寫入

>>:在檔案後面追加,不覆蓋檔案內容

<:和>作用一樣,表示從右到左

<<:和>>作用一樣,表示從右到左

前置知識:檔案描述符

1.  檔案描述符:0   裝置檔案:/dev/stdin    縮寫:stdin    說明:標準輸入

2. 檔案描述符:1 裝置檔案:/dev/stdout 縮寫:stdout 說明:標準輸出

3. 檔案描述符:2 裝置檔案:/dev/stderr 縮寫:stderr 說明:標準錯誤

參考**

例項(1:

mkdir documents #建立目錄

cat> documents/test.c << eof #將cat的連續輸出重定向到乙個檔案中

#include

int main(

)eof

補充eof

是end of file的縮寫,表示自定義終止符.既然自定義,那麼eof就不是固定的,可以隨意設定別名,在linux按ctrl-d就代表eof.

eof一般會配合cat能夠多行文字輸出.

其用法如下:

《參考**

cat documents/test.c

意義:將乙個檔案作為命令的輸入(cat),標準輸出作為命令的輸出

例項(2:

#將echo命令的輸出從預設的標準輸出重定向到乙個普通檔案

echo 'hello world'

> file

#檢視檔案

cat file

例項(1:

#用bash提供的特殊的重定向符號「&」將標準錯誤和標準輸出同時重定向到檔案

cat [目錄]

/[標準輸出檔案]

[標準錯誤檔案]

&>

[檔案]

例項(2:

#將標準錯誤重定向到標準輸出,將標準輸出重定向到檔案中,注意要將標準輸出重定向到檔案寫在前面

cat [目錄]

/[標準輸出檔案]

[標準錯誤檔案]

>

[檔案]

2>

&1

補充:在輸出重定向檔案描述符前加上&,否則shell會當作重定向到乙個檔名為1的檔案中

例項(1:

#將echo命令輸出通過tee命令同時重定向到file1 file2 file3

echo 'git is good'

| tee file1 file2 file3

呼叫並執行指定的命令。

exec命令 用於呼叫並執行指令的命令。exec命令通常用在shell指令碼程式中,可以呼叫其他的命令。如果在當前終端中使用命令,則當指定的命令執行完畢後會立即退出終端。

例項(1:

zsh #進入子shell

exec 1

> somefile #使用exec替換當前程序的重定向,將標準輸出(1)重定向到檔案中

#後面執行的命令都將重定向到檔案中,知道使用exit退出當前子shell

ls #ls命令重定向到檔案(somefile)中

ll #ll命令重定向到檔案(somefile)中

pwd #pwd命令重定向到檔案(somefile)中

exit #退出

cat somefile #主程序檢視檔案(somefile) ls ll pwd命令會同時執行

參考**

linux系統將所有裝置都當作檔案來處理,而linux用檔案描述符來標識每個檔案物件。其實我們可以想象我們電腦的顯示器和鍵盤在linux系統中都被看作是檔案,而它們都有相應的檔案描述符與之對應。

shell中有9個檔案描述符,上面是用了它提供的預設的0,1,2檔案描述符,另外我們還可以使用3—8檔案描述符。

cat /dev/fd;ls -al:檢視當前shell程序中開啟的檔案描述符。

;:路徑的分隔符

例項(1:

zsh #進入子shell

exec 3

> somefile #將檔案描述符3重定向到檔案中(somefile)

cat /dev/fd;ls -al;cd - #檢視當前shell中開啟的檔案描述符

echo "this is test"

>

&3 #將echo命令的輸出重定向到檔案描述符3種

cat somefile #檢視檔案(somefile)

exit #退出

參考**

exec 3>&-:關閉檔案描述符3

前置知識

/dev/null空裝置,一般用來丟棄不需要的輸出流

例項(1:

cat directory/file 1

>

/dev/null 2

>

&1

#將檔案標準輸出(1)重定向到/dev/null中,將標準錯誤(2)重定向到標準輸出(1)中

補充:

cat:連線多個檔案並列印到標準輸出

將列表引數轉換成小塊分段傳遞給其他命令,以避免引數列表過長問題。

例項(1:

cut -d:

-f1 <

/etc/passwd | sort |xargs echo

#將/etc/passwd檔案按:分割,取第乙個字段排序後,使用echo命令生成乙個列表。

參考**

Linux資料流重定向

開篇 當在執行shell命令時,常見的就是輸出在螢幕上,但是我們有些時候需要儲存輸出結果或者丟棄輸出錯誤,就需要重定向了。什麼是資料流重定向 當我們執行乙個命令 命令不也是程式嘛 可能由檔案或者鍵盤讀入資料,經過處理之後,再將結果輸出到螢幕上。圖中,standard output與standard ...

Linux資料流重定向

在我們日常linux命令操作中,命令執行的輸入一般是鍵盤輸入,輸出一般是輸出到螢幕,但有時候,我們可能會去讀取檔案裡但資料作為輸入,或者將輸出儲存到檔案裡 比如日誌檔案 這個時候就需要用到資料流重定向。所謂資料流重定向,就是 1 將某個命令執行後應該要出現在螢幕上的資料傳輸到其它地方,例如檔案或者諸...

Linux 資料流重定向

1.三種資料流重定向 1 標準輸入 stdin 為0,使用0 或0 2 標準輸出 stdout 為1,使用1 或1 其中 1可以省略 3 標準錯誤輸出 stderr 為2,使用2 或2 2.標準輸出 stdout 重定向 我們知道linux中,cat命令可以將檔案內容輸出到螢幕。如下所示 我們可以使...