歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Bash內置命令exec和重定向

Bash內置命令exec和重定向

日期:2017/3/1 9:28:33   编辑:Linux編程

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

Copyright © Linux教程網 All Rights Reserved