Linux冷门却很重要的命令(五)---exec

来源:互联网 发布:仓管员用什么软件 编辑:程序博客网 时间:2024/06/05 02:52

exec解释:

    exec是shell的内建命令,将并不启动新的shell,而是用要被执行命令替换当前的shell进程,并且将老进程的环境清理掉,而且exec命令后的其它命令将不再执行。因此,如果你在一个shell里面,执行exec ls那么,当列出了当前目录后,这个shell就自己退出了,因为这个shell进程已被替换为仅仅执行ls命令的一个进程,执行结束自然也就退出了。

    本文主要讲解当exec命令来对文件描述符操作,也就是跟随find命令一起执行处理查找后的内容。find是我们很常用的一个Linux命令,但是我们一般查找出来的并不仅仅是看看而已,还会有进一步的操作,这个时候exec的就可以派上用场了。

    先使用实例:

先使用ll命令查看/mm目录下的文件

[root@10-9-62-247 mm]# ll
total 6204
-rwxrwxrwx 1 root root    8160 Jun  3 08:32 all_5.js
-rwxrwxrwx 1 root root    3337 Jun 27 20:19 control.php
-rw-r--r-- 1 root root     129 Jun 27 18:03 dch.sql
-rw-r--r-- 1 root root   27298 Jun  8 17:14 dirsync-1.11-1.el6.rf.x86_64.rpm
-rwxrwxrwx 1 root root   19052 Jun  1 12:07 install.sh
-rw-r--r-- 1 root root 6157869 Jun  3 11:58 master
-rwxrwxrwx 1 root root   12350 Jun 27 20:52 OperateControl.php
-rw-r--r-- 1 root root     114 Jun 22 10:28 permission.sql
-rwxrwxrwx 1 root root    8834 Jun 27 12:49 ScaleDaemon.py
-rwxrwxrwx 1 root root    6810 Jun 28 18:56 ServerJob.py
-rwxrwxrwx 1 root root    6638 Jun 27 20:19 SetupCore.php
-rwxrwxrwx 1 root root   42597 Jun 27 20:19 setup.html
-rw-r--r-- 1 root root     442 Jun 15 17:32 tb_player_chat.sql
-rw-r--r-- 1 root root     310 Jun 15 17:33 tb_player_complaint.sql
-rw-r--r-- 1 root root    3077 Jun 22 11:36 tb_user.sql
-rw-r--r-- 1 root root      92 Jul 19 19:10 test.yml
-rwxrwxrwx 1 root root    1407 Jun 27 20:19 util.php
-rwxrwxrwx 1 root root     723 Apr 13 16:33 WhitelistControl.php
-rw-r--r-- 1 root root      99 Jun 23 11:38 wk.sql

drwxr-xr-x 2 root root    4096 Jul 20 17:07 xihage


[root@localhost mm]# find  -type f -exec  ls -l {} \;

-rwxrwxrwx 1 root root 6810 Jun 28 18:56 ./ServerJob.py
-rw-r--r-- 1 root root 0 Jul 20 17:07 ./xihage/xiha.xiha
-rw-r--r-- 1 root root 3077 Jun 22 11:36 ./tb_user.sql
-rw-r--r-- 1 root root 92 Jul 19 19:10 ./test.yml
-rw-r--r-- 1 root root 129 Jun 27 18:03 ./dch.sql
-rwxrwxrwx 1 root root 42597 Jun 27 20:19 ./setup.html
-rw-r--r-- 1 root root 99 Jun 23 11:38 ./wk.sql
-rwxrwxrwx 1 root root 8834 Jun 27 12:49 ./ScaleDaemon.py
-rwxrwxrwx 1 root root 19052 Jun  1 12:07 ./install.sh
-rw-r--r-- 1 root root 114 Jun 22 10:28 ./permission.sql
-rw-r--r-- 1 root root 27298 Jun  8 17:14 ./dirsync-1.11-1.el6.rf.x86_64.rpm
-rw-r--r-- 1 root root 0 Jul 26 15:01 ./?
-rwxrwxrwx 1 root root 12350 Jun 27 20:52 ./OperateControl.php
-rw-r--r-- 1 root root 6157869 Jun  3 11:58 ./master
-rwxrwxrwx 1 root root 6638 Jun 27 20:19 ./SetupCore.php
-rwxrwxrwx 1 root root 3337 Jun 27 20:19 ./control.php
-rwxrwxrwx 1 root root 723 Apr 13 16:33 ./WhitelistControl.php
-rwxrwxrwx 1 root root 8160 Jun  3 08:32 ./all_5.js
-rwxrwxrwx 1 root root 1407 Jun 27 20:19 ./util.php
-rw-r--r-- 1 root root 442 Jun 15 17:32 ./tb_player_chat.sql
-rw-r--r-- 1 root root 310 Jun 15 17:33 ./tb_player_complaint.sql


说明: 
上面的例子中,find命令匹配到了当前目录下的所有普通文件,并在-exec选项中使用ls -l命令将它们列出。

语法:

exec选项后面跟随着所要执行的命令或脚本,然后是一对儿{}一个空格和一个\,最后是一个分号。

find XXX(find option) -exec XXX(cmd,对find出来的内容进行的操作){} \;

  

0 0
原创粉丝点击