exec 命令的用法

shell的內建命令exec將並不啓動新的shell,而是用要被執行命令替換當前的shell進程,並且將老進程的環境清理掉,而且exec命令後的其它命令將不再執行。
因此,如果你在一個shell裏面,執行exec ls那麼,當列出了當前目錄後,這個shell就自己退出了,因爲這個shell進程已被替換爲僅僅執行ls命令的一個進程,執行結束自然也就退出了。爲 了避免這個影響我們的使用,一般將exec命令放到一個shell腳本里面,用主腳本調用這個腳本,調用點處可以用bash a.sh,(a.sh就是存放該命令的腳本),這樣會爲a.sh建立一個sub shell去執行,當執行到exec後,該子腳本進程就被替換成了相應的exec的命令。
source命令或者”.”,不會爲腳本新建shell,而只是將腳本包含的命令在當前shell執行。
不過,要注意一個例外,當exec命令來對文件描述符操作的時候,就不會替換shell,而且操作完成後,還會繼續執行接下來的命令。
    exec 3<&0:這個命令就是將操作符3也指向標準輸入。
別處,這個命令還可以作爲find命令的一個選項,如下所示:
(1)在當前目錄下(包含子目錄),查找所有txt文件並找出含有字符串”bin”的行
find ./ -name “*.txt” -exec grep “bin” {}
(2)在當前目錄下(包含子目錄),刪除所有txt文件
find ./ -name “*.txt” -exec rm {}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章