dsyayo 于 2009-07-19 00:31:38发表:
很茫然啊~~新手来看看~
飞翔26 于 2009-07-17 15:08:44发表:
不是很清楚,能再详细点嘛
cgy_nhtl 于 2009-07-16 18:15:02发表:
[i=s] 本帖最后由 cgy_nhtl 于 2009-7-16 18:21 编辑 [/i]
引用: 3# cgy_nhtl 如果楼上所说正确,那么为什么会出现下图所示的结果: 17818 主目录下没有*.conf的文件,结果会搜索出结果 17819 在主目录下创建了两个*.conf的文件,结果报错 假如说 “find /etc -name *.conf ... hbf 发表于 2009-7-16 15:28
hbf 于 2009-07-16 16:10:43发表:
4# hbf 仔细看了一下,忽然发现这样一个问题 如果A=*.conf,会看到A=a.conf b.conf,也就是说,在执行A=$(*.conf)之前,bash已经将*.conf转换为a.conf b.conf了。因为整条语句中,只有*.conf可以应用命令行转换。也就是说,bash在执行命令前,会先将能转换的部分先转换了。只有这么理解才能解释上面的现象了。不知道这样理解对么,哪位老师能解答以下?
hbf 于 2009-07-16 15:28:48发表:
[i=s] 本帖最后由 hbf 于 2009-7-16 16:01 编辑 [/i] 3# cgy_nhtl 如果楼上所说正确,那么为什么会出现下图所示的结果: [attach]17818[/attach] 主目录下没有*.conf的文件,结果会搜索出结果 [attach]17819[/attach] 在主目录下创建了两个*.conf的文件,结果报错 假如说 “find /etc -name *.conf = cd /etc; find -name *.conf” 怎么会出现上面的情况?在/etc下寻找文件怎么会与主目录有关系? 书中是这么解释的 : bash首先应用命令行转换,将*.conf转换为a.conf 和 b.conf ,于是原命令就成了find /etc -name a.conf b.conf 显然find多了一个参数。于是报错。我的问题是,bash怎么应用命令行转换了? 一条命令bash会转换哪些部分?为什么上面的例子bash只转换了*.conf? 如果用这条命令:A=$(*.conf) 结果会报错,因为a.conf不是有效命令。
cgy_nhtl 于 2009-07-16 09:08:37发表:
同意楼上的
ph4291983 于 2009-07-14 21:40:57发表:
find /etc -name *.conf = cd /etc; find -name *.conf 我是这样理解的!
dsyayo 于 2009-07-19 00:31:38发表:
很茫然啊~~新手来看看~
飞翔26 于 2009-07-17 15:08:44发表:
不是很清楚,能再详细点嘛
cgy_nhtl 于 2009-07-16 18:15:02发表:
[i=s] 本帖最后由 cgy_nhtl 于 2009-7-16 18:21 编辑 [/i]
我是在本机‘/’目录下执行的 find /etc -name *.conf
结果如楼上所示,有些成功,有些文件夹确实是没有权限:
find: /etc/cups/ssl: Permission denied
>cd etc/cups 执行‘ll ’命令
drwx------ 2 root lp 4096 May 25 2008 ssl
不明白楼上所说跟根目录有何关系?
楼主所说 *.conf 替换为a.conf、b.conf, 这里的‘*’应该叫命令通配符吧。本人也是一知半解,还望高人指点!
hbf 于 2009-07-16 16:10:43发表:
4# hbf
仔细看了一下,忽然发现这样一个问题
如果A=*.conf,会看到A=a.conf b.conf,也就是说,在执行A=$(*.conf)之前,bash已经将*.conf转换为a.conf b.conf了。因为整条语句中,只有*.conf可以应用命令行转换。也就是说,bash在执行命令前,会先将能转换的部分先转换了。只有这么理解才能解释上面的现象了。不知道这样理解对么,哪位老师能解答以下?
hbf 于 2009-07-16 15:28:48发表:
[i=s] 本帖最后由 hbf 于 2009-7-16 16:01 编辑 [/i]
3# cgy_nhtl
如果楼上所说正确,那么为什么会出现下图所示的结果:
[attach]17818[/attach]
主目录下没有*.conf的文件,结果会搜索出结果
[attach]17819[/attach]
在主目录下创建了两个*.conf的文件,结果报错
假如说 “find /etc -name *.conf = cd /etc;
find -name *.conf”
怎么会出现上面的情况?在/etc下寻找文件怎么会与主目录有关系?
书中是这么解释的 : bash首先应用命令行转换,将*.conf转换为a.conf 和 b.conf ,于是原命令就成了find /etc -name a.conf b.conf 显然find多了一个参数。于是报错。我的问题是,bash怎么应用命令行转换了? 一条命令bash会转换哪些部分?为什么上面的例子bash只转换了*.conf?
如果用这条命令:A=$(*.conf) 结果会报错,因为a.conf不是有效命令。
cgy_nhtl 于 2009-07-16 09:08:37发表:
同意楼上的
ph4291983 于 2009-07-14 21:40:57发表:
find /etc -name *.conf = cd /etc;
find -name *.conf
我是这样理解的!