打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
linux内部命令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 {} \;
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Shell 的source命令
求linux 下source、sh、bash、./执行脚本的区别?
Linux shell的标准输入、输出和错误
perl脚本中的一些安全问题
SHELL脚本执行方式
使用Linux的Shell脚本定时处理MySQL超时
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服