1. 程式人生 > >Shell--數據流重定向

Shell--數據流重定向

find 替代 span 簡單 特殊 right 文件中 標準 /dev/

數據流重定向就是將某個命令執行後應該要出現在屏幕上的數據傳輸到其他地方

標準

1、標準輸入(stdin:代碼為0,使用<<<

2、標準輸出(stdout:代碼為1.,使用>>>

3、標準錯誤輸出(stderr:代碼為2,使用2>2>>

Standard output standard error output

簡單地說,標準輸出值的是命令執行所回傳的正確的信息,而標準錯誤輸出可以理解為命令執行失敗後,所回傳的錯誤信息

範例:

正確與錯誤數據寫入兩個不同的文件中

[email protected]:/mnt/c/Users/vivi# find /home -name .bashrc > list_right 2> list_error

正確與錯誤數據寫入同一個文件中

[email protected]:/mnt/c/Users/vivi# find /home -name .bashrc > list 2>&1

[email protected]:/mnt/c/Users/vivi# find /home -name .bashrc &> list

/dev/null垃圾桶黑洞設備與特殊寫法

如果我們知道錯誤信息會發生,所以要將錯誤信息忽略掉而不顯示或存儲呢?這個時候黑洞設備/dev/null就很重要了,這個/dev/null可以吃掉任何導向這個設備的信息

範例:

[email protected]

/* */:/mnt/c/Users/vivi# find /home -name .bashrc 2> /dev/null

Standard input:<<<

以最簡單的說法來說,就是將原本需要有鍵盤輸入的數據改有文件內容來替代,下面我們由cat命令操作來了解一下什麽叫做鍵盤輸入吧

範例:利用cat命令來創建一個文件的簡單流程

[email protected]:/mnt/c/Users/vivi# cat > catfile

testing

cat file test

<==這裏按下【ctrl+d來離開

下面用純文本文件代替鍵盤輸入

範例:

[email protected]

/* */:/mnt/c/Users/vivi# cat > catfile < ~/.bashrc

[email protected]:/mnt/c/Users/vivi# ll catfile ~/.bashrc

-rwxrwxrwx 1 root root 3106 Jun 24 16:05 catfile*

-rw-r--r-- 1 root root 3106 Feb 20 2014 /root/.bashrc

理解<之後,我們來看看<<這個符號,它代表的是結束輸入的意思,舉例來說,我們要用cat直接將輸入的信息輸出到catfile中。且當由鍵盤輸入eof時,該次輸入就結束

[email protected]:/mnt/c/Users/vivi# cat > catfile << "eof"

> this is a test

> ok now stop

> eof

<==輸入eof這個關鍵字,立刻就結束而不需要輸入ctrl+d

[email protected]:/mnt/c/Users/vivi# cat catfile

this is a test

ok now stop

<==只有這兩行,不會存在關鍵字那一行

我們總結一下哪些情況需要使用命令輸出重定向:

1、屏幕輸出的信息很重要,而且我們需要將它存下來的時候

2、後臺執行中的程序,不希望她幹擾屏幕正常的輸出結果時

3、一些系統的例行命令的可能已知錯誤信息時,想以2>/dev/null”將它丟掉時

4、錯誤信息與正確信息需要分別輸出時

Shell--數據流重定向