管道與重定向

2021-08-15 22:53:50 字數 3497 閱讀 5599

目錄

重定向

轉換和刪除字元

tr 從檔案中匯入

stdin

把多行傳送給

stdin

管道 重定向到多個目標

先說什麼是標準輸入輸出,我們從鍵盤上敲擊,然後輸入到我們的電腦中,這是標準的輸入,那麼什麼是標準輸出呢,我們在經過一系列正確的操作得到的能在螢幕上顯示出來的輸出是標準輸出。那不正確的操作產生的能顯示在螢幕上的資訊是啥呢,那就是標準錯誤。

標準輸入(

stdin

)-0

預設接受來自鍵盤的輸入

標準輸出(

stdout

)-1

預設輸出到終端視窗    

標準錯誤(

stderr

)-2

預設輸出到終端視窗     

我們可以將我們的操作進行重定向,將資訊輸入到檔案當中去,我們可以通過這樣的操作去觀察一下操作資訊,或我們進行的錯誤資訊。

>:把標準輸出(

stdout

)進行重定向

2>

:把標準錯誤輸出(

stderr

)進行重定向

&>

:代表吧所有輸出進行重定向

檔案內容會被覆蓋

set -c:

禁止將內容覆蓋已有檔案

,但可追加

>| file

:強制覆蓋

set +c:

允許覆蓋

>>

原有內容基礎上,追加內容

把輸出和錯誤重新定向到檔案

2>:

覆蓋重定向錯誤輸出資料流

2>>:

追加重定向錯誤輸出資料流

標準輸出和錯誤輸出各自定向至不同位置

command > /path/to/file.out 2> /path/to/error.out

合併標準輸出和錯誤輸出為同乙個資料流進行重定向

&>

覆蓋重定向

&>>

追加重定向

command > /path/to/file.out 2>&1

(順序很重要)

command >> /path/to/file.out 2>&1

():合併多個程式的stdout

( cal

2007 ; cal 2008 ) > all.txt

格式:tr

[option] .. set1 set2

作用:轉換和刪除字元

選項:-c:取字符集的補集

-d:刪除所有屬於第一字符集的字元

-dc:刪除其補集

-s:把連續重複的字符集以單獨的乙個字元表示

-t:將第乙個字符集對應的字元轉換第二字符集對應的字元(預設)

對應的字元:

[:digit:]

:數字 [:alpha:]

:字母 [:lower:]

:小寫字母

[:upper:]

:大寫字母

[:alnum:]

:字母和數字

[:punct:]

:標點符號

[:space:]

:空白字元

[:print:]

:可列印字元

[:cntrl:]

:控制(非列印)字元

[:graph:]

:圖形字元

[:xdigit:]

:十六進製制字元

使用<

來重定向標準輸入

某些命令能夠接受從檔案中匯入的

stdin

tr 『a-z』 『a-z』< /etc/issue

該命令會把

/etc/issue

中的小寫字元都轉換成寫寫字元

tr –d abc < /etc/fstab

刪除fstab

檔案中的所有

abc中任意字元

cat > file

mage

wangxiaochun

按ctrl+d

離開,可以使用檔案來代替鍵盤的輸入

使用「<<

終止詞」命令從鍵盤把多行重導向給

stdin 直到

終止詞位置的所有文字都傳送給

stdin

有時被稱為就地文字(

heretext

) 例如:

1  [root@ct71 tmp]# mail -s "

help

" root <

2 >hello

3 > my name is shanghai,may i know your name?

4 > end

管道命令無疑是我們在今後操作

linux

經常會用帶的命令,它的作用是將我們在上一步操作產生的正確的標準輸出使用管道後面的命令繼續進行操作,如

ls /etc/* | grep passwd

,是不是我們有操作產生的標準的錯誤輸出就無法進行管道處理了呢,並不是的,我們可以使用

2>&1或|&

進行將產生的標準錯誤輸出

交給下乙個命令執行。

管道中的—符號

這個符號就像乙個臨時介質,我們可以將我們處理的資訊暫時存在這個介質裡,然後交給管道後面的命令繼續對介質中的資訊繼續處理。這樣,我們就不必將我們在第一步處理的資訊先存在磁碟上在進行下一步操作了,十分的方便。

格式:command_1 | tee [-a] file_name | command_2

作用:把命令1的

stdout

儲存到檔案中作為命令

2的輸入

選項:-a:追加

作用:儲存不同階段的輸出

複雜管道的故障排除

同時檢視和記錄輸出

管道與》重定向

命令 可以將乙個命令的輸出作為另乙個命令的輸入。rpm qa grep licq 這條命令使用乙個管道符 建立了乙個管道。管道將rpm qa命令的輸出 包括系統中所有安裝的rpm包 作為grep命令的輸入,從而列出帶有licq字元的rpm包來。命令 提供了兩個程序之間通訊的途徑。表示將結果輸入到乙個...

管道與重定向

在linux中大多數命令都很簡單,為了完成複雜的操作,我們需要將這些命令組合使用。linux中絕大多數的命令都是返回純文字格式的資料,而命令的輸入格式也是純文字,這就讓命令的組合呼叫成為可能。管道和重定向機制就是為了多命令的協作工作。命令列shell的資料流有如下定義 名稱說明 編號預設 stdin...

重定向 管道

1 輸入輸出重定向可分為 標準輸入 由鍵盤輸入 標準輸出 由監視器輸出 錯誤輸出 與標準輸出相同,但是他們是具有各自的資料流,各佔乙個資料流 通常用識別符號對位 標準輸入用0,標準輸出用1,錯誤輸出用2。重定向 顧名思義就是將標準的輸入和輸出位置重新定向 覆蓋重定向 每一次的輸出都要覆蓋原始檔中的內...