为何rm abc ab*会显示不存在abc文件?

为当前最终发行版之前的所有版本提供支持
回复
zipkong
帖子: 76
注册时间: 2010-11-27 22:20
送出感谢: 0
接收感谢: 0

为何rm abc ab*会显示不存在abc文件?

#1

帖子 zipkong » 2011-03-29 15:24

我做了一个实验:
$ touch abc abd abe abf
$ls
会出现以上文件
$ rm abc ab*
显示无abc文件,当然,ls后以上四个文件也没了
为何命令会优先处理ab*而不是从左到右先abc后再ab*呢?谢谢
头像
lexdene
帖子: 434
注册时间: 2010-02-21 16:19
来自: 大连
送出感谢: 1 次
接收感谢: 2 次
联系:

Re: 为何rm abc ab*会显示不存在abc文件?

#2

帖子 lexdene » 2011-03-29 15:42

先解释,再执行。
shell会先解释你的命令,然后再执行你的命令。
例如,当你说
rm abc ab*
的时候,shell会寻求匹配通配符ab*的文件,这个时候abc文件还在,所以ab*会被展开为:abc abd abe abf。
那么你的命令就会变为:
rm abc abc abd abe abf
然后命令开始执行,先删除abc。
然后再删除abc的时候会发现abc不存在。
所以会提示“不存在abc文件”。
大概是这个意思是吧?
欢迎高手指教。
我对shell也只是略懂。
头像
Sunmover
帖子: 2339
注册时间: 2010-05-24 13:02
来自: 星城长沙
送出感谢: 0
接收感谢: 4 次

Re: 为何rm abc ab*会显示不存在abc文件?

#3

帖子 Sunmover » 2011-03-29 15:45

:em09
头像
懒蜗牛Gentoo
论坛版主
帖子: 7284
注册时间: 2007-03-02 17:36
送出感谢: 0
接收感谢: 95 次

Re: 为何rm abc ab*会显示不存在abc文件?

#4

帖子 懒蜗牛Gentoo » 2011-03-29 15:55

2楼正解
虽然世上没有完美的东西,但这并不影响我们追求完美,因为只有偏执狂才TMD能成功。
10.04新手入门——笨兔兔讲述自己的故事
头像
月下叹逍遥
论坛版主
帖子: 33994
注册时间: 2010-10-07 14:23
系统: Archdows10
来自: 某系某星某洲某国某省某市
送出感谢: 8 次
接收感谢: 63 次
联系:

Re: 为何rm abc ab*会显示不存在abc文件?

#5

帖子 月下叹逍遥 » 2011-03-29 16:04

看样子和C的printf很像嘛。
心似浮云常自在,意如流水任东西。
此事背后一定有个天大的咪咪
广告:
1、走过路过,不要错过,dropbox网盘2.25G大放送
py大法好,退C保平安
java多妖孽,VB本异端
日诵一千遍,快活似神仙
回复

回到 “老旧版本支持”