天天看點

Bash内置指令exec和重定向

轉:Bash内置指令exec重定向

Bash内置指令exec可以替換目前程式而不需要啟動一個新的程序,可以改變标準輸入和輸出而不需要啟動一個新的子程序。

如果檔案用exec打開,read指令就會把檔案指針每次指向下一行直到檔案的末尾,如果要重新從檔案開始讀取,則必須把檔案關閉再重新打開。

1、替換目前shell,執行某個指令,指令終止,shell也就終止了

$exec ls

2、打開檔案作為目前shell的标準輸入

$exec <file_name

3、打開檔案作為目前shell的标準輸出

$exec >file_name

4、打開檔案作為輸入,并配置設定檔案描述符

$exec 3<datafile

5、打開檔案作為輸出,并配置設定檔案描述符

$exec 4>datafile

6、建立檔案描述符fd4的拷貝fd5

$exec 5<&4

7、關閉檔案描述符

$exec 3<&- //關閉輸入檔案描述符

$exec 4>&- //關閉輸出檔案描述符

注意: <&和重定向操作符>&、&>的差別

例子:

$exec 3>filex //打開檔案filex并配置設定檔案描述符3,作為輸出

$who >& 3 //who指令的輸出輸出到filex

$date >& 3 //date指令的輸出輸出到filex

$exec 3>&- //關閉filex

$exec 3<filex //重新打開檔案filex并配置設定檔案描述符3,作為輸入

$cat <& 3 //重定向cat指令的輸入到檔案描述符3,即檔案filex

$exec 3<&- //關閉filex

***********************************************************

 學習永遠不晚。——高爾基