書-Linux命令行與shell腳本編程大全(第3版)

image

 

■文件描述符號

□重定向符號(&>)

■重定向

□創建重定向

■重定向文件符號

 

文件描述符號

先大概知道什麼數字代表甚麼。

image

這個就是定向輸出,2的意思就是指會輸出錯誤訊息,可以看到'cat t9'會顯示錯誤訊息。

image.

我們可以看到,如果不是錯誤訊息就會直接輸出在視窗上,並不會輸入到文件中。

image

重定向符號(&>)

不管正確還是錯誤全部直接輸出到't8',錯誤訊息會優先被shell置頂。

image

image

重定向

下面這個就是重定向錯誤到別的文件,你可以分別在畫面、文件中顯示不一樣的東西。

image

 

image

 

我們可以看到第一行的exec 2> testout,的意思就是只要有錯誤的訊息都丟到testout的這個文件。

'hello'這只是單純的輸出

'exec 1> testcat' 輸出以後所輸出的值,下面可以有很多echo

'echo"niput two" >&2' 不論輸出答案的正確、錯誤都會輸出到'testout'這個文件,因為第一行就已經把'testout'重新定向為'只要有錯誤訊息就會輸入'

image

image

最後一行指定輸入到testout(不論對錯)

image

exec 1>testcat(只要輸出在終端機的內容都會寫到testcat)

image

這個就是把testout輸入,我們讀取read就可以讀到testout的內容,所以我們使用read輸入的值就是跑到STDIN裡面。

image

image

創建重定向

你真的以為只有0~2代表輸入、輸出、錯誤,這些都是系統預設的,當然我們也可以自己用,雖然0~2被用了,但是我們還有3~8可以用。

下面這個就是我自己定義一個3,把'hello world'輸入到3。

image

'byebye'就是一般的輸出

image

使用'exec 3> testcat'會直接覆蓋掉testcat這個文件。

image

使用'exec 3>> testcat'會直接把值加到文件最後(不要搞混'>'、 '>>')。

image

重定向文件符號

我下面會畫圖來解釋一下這個到底在做什麼。

image

image

一開始就是這樣子定向,沒有問題。

image

第一行 exec 3>&1,3重定向1就是間接指向終端機介面。

image

exec 1>testout 就是把1重定向到'testout',不要忘記STDOUT的本能,雖說1重定向到'testout'文件。

image

echo dog、echo cat,因為STDOUT的本能所以會把輸出終端機的內容輸入到testout

image

exec 1>&3 就是很常用於恢復默認設置的方法。

image

創作者介紹
創作者 讀書小天地 的頭像
讀書小天地

書籍分享天地

讀書小天地 發表在 痞客邦 留言(0) 人氣()