轉: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
***********************************************************
學習永遠不晚。——高爾基