linux下的exec命令


shell 中的 exec 兩種用法:

1.exec 命令 ;命令代替shell程序,命令退出,shell 退出;比如 exec ls

2.exec 文件重定向,可以將文件的重定向就看為是shell程序的文件重定向 比如 exec 5</dev/null;exec 5<&-

=============================

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 {} \; 

————————————————
版權聲明:本文為CSDN博主「再鬧東海7」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_31186123/article/details/82190776

喜歡這篇文章?歡迎打賞~~

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM