远方

shell中exec命令

bash shell的命令分为两类:外部命令和内部命令。外部命令是通过系统调用或独立的程序实现的,如sed、awk等等。内部命令是由特殊的文件格式(.def)所实现,如cd、history、exec等等。

exec和source都属于bash内部命令(builtins commands)。


在说exec和source的区别之前,先说一下fork。

fork是linux的系统调用,用来创建子进程(child process)。子进程是父进程(parent process)的一个副本,从父进程那里获得一定的资源分配以及继承父进程的环境。子进程与父进程唯一不同的地方在于pid(process id)。

环境变量(传给子进程的变量,遗传性是本地变量和环境变量的根本区别)只能单向从父进程传给子进程。不管子进程的环境变量如何变化,都不会影响父进程的环境变量。 


有两种方法执行shell scripts,一种是新产生一个shell,方法是在scripts文件开头加入语句#!/bin/bash;另外一种方法就是上面说过的source命令,不再产生新的shell,而在当前shell下执行一切命令。

find ./ -name "*.txt" -exec grep "bin" {} \; # 在当前目录下(包含子目录),查找所有txt文件并找出含有字符串"bin"的行
find ./ -name "*.txt" -exec rm {} \; # 在当前目录下(包含子目录),删除所有txt文件

shell中exec命令

{ }代表的是「由 find 找到的内容」,如上图所示,找到的结果会被放置到 { } 位置中;

-exec一直到 \; 是关键字,代表找到额外动作的开始(-exec)到结束(\),在这中间的就是找到指令内的额外动作(;在bash的环境下是有特殊意义的,因此用反斜线)

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

Catalog
标签列表
最新
最热
常用网站
站点信息
  • 文章总数:2605
  • 页面总数:1
  • 分类总数:21
  • 标签总数:668
  • 评论总数:6
  • 浏览总数:3464920
Archives
Copyright © 2017-2023 WWW.MY889.COM All Rights Reserved.
推荐使用 Chrome 浏览器浏览本站
沪ICP备17052342号-1
Sitemap XML