免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: yuyongyu
打印 上一主题 下一主题

bash有单步调试功能吗? [复制链接]

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
11 [报告]
发表于 2009-08-13 10:34 |只看该作者

回复 #10 ywlscpl 的帖子

不是这样吧。
find应该是先建立文件列表再stat.

论坛徽章:
0
12 [报告]
发表于 2009-08-13 10:37 |只看该作者

回复 #11 blackold 的帖子

文件的存在检测肯定是在-exec 中的命令执行后进行的吧?
要不然本题中目录怎么会被删除了但又报目录不存在?

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
13 [报告]
发表于 2009-08-13 10:52 |只看该作者
更准确地说,./u文件的检测是在rm .之后。
find对每一个文件都执行一遍检测。

论坛徽章:
0
14 [报告]
发表于 2009-08-13 11:44 |只看该作者

回复 #13 blackold 的帖子

但rm -r .是不会删除当前目录下的目录的
如果是的话我就不会有疑问了,因为./在./u之前

我还是认为:find先根据查找条件出一个列表,按列表顺序执行(先运行-exec中的命令,再检测本文件是否存在),这个真的有点说不过去啊,既然-exec都执行了,再去检测文件存在有什么意义呢?
  1. [root@Mylinux tmp]# find . -type d
  2. .
  3. ./xxx
  4. ./u
  5. [root@Mylinux tmp]# rm -r .
  6. rm: 无法删除“.”或“..”
  7. [root@Mylinux tmp]# find . -type d
  8. .
  9. ./xxx
  10. ./u
  11. [root@Mylinux tmp]# find . -type d -name "u*" -exec rm -r {} \;
  12. find: ./u: 没有那个文件或目录
  13. [root@Mylinux tmp]# find . -type d
  14. .
  15. ./xxx
复制代码


-exec执行的不是删除
  1. [root@Mylinux tmp]# find . -type d
  2. .
  3. ./xxx
  4. ./u
  5. [root@Mylinux tmp]# find . -type d -name "u*" -exec echo {} \;
  6. ./u
复制代码

[ 本帖最后由 ywlscpl 于 2009-8-13 11:55 编辑 ]

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
15 [报告]
发表于 2009-08-13 11:55 |只看该作者
是,我搞错了,不过道理没错。
不是再检测它本身,而是检测它的后代。
./u目录被删除后,再试图沿着./u路径进行检测,于是产生了错误。

论坛徽章:
0
16 [报告]
发表于 2009-08-13 11:58 |只看该作者

回复 #15 blackold 的帖子

哦,看来不是我理解的那样,是find查找机制的问题,道理应该是没错的,只不过-exec执行的恰好是删除目录命令造成一些出错,能有关于find这方面的详细说明就能完全解惑了。

[ 本帖最后由 ywlscpl 于 2009-8-13 12:04 编辑 ]

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
17 [报告]
发表于 2009-08-13 12:07 |只看该作者
"只不过-exec执行的恰好是删除目录命令造成一些出错"如何理解?

man中有解释。

论坛徽章:
0
18 [报告]
发表于 2009-08-13 12:19 |只看该作者
原帖由 yuyongyu 于 2009-8-12 14:03 发表
如题

还有一个问题,我想删除一个目录下的所有目录
find . -type d -exec rm -r {} \;
这个命令能执行,但是会报错 find: ./u: No such file or directory
如何解决


find ./ -type d -mtime +7 -exec rm -rf {} \;

绝对可以删除的。

这是我MYSQL线上删除7天以前备份目录的命令。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP