LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
12
返回列表 发新帖
楼主: lxsbupt

ls *.*的作用是什么???

[复制链接]
发表于 2008-3-23 20:15:54 | 显示全部楼层
which ls
八成你的ls被alias掉了
回复 支持 反对

使用道具 举报

发表于 2008-3-24 13:29:19 | 显示全部楼层
我觉得是这样的原因:
有如下情况:
.a
a.
a.a
第一种:*.*是无法匹配.a的情况的,因为虽然*代表任意字符,但是*.*要求后面也要有. 因此不行
第二种:这种可以,因为*代表匹配0个或多个,因此a.在匹配范围之列,中间有点,前后有*
第三种:毫无疑问,标配.

总结:*.*的核心意义是:前面是任意字符,中间必须有点,后面有没有内容无所谓.
回复 支持 反对

使用道具 举报

发表于 2008-4-23 00:31:26 | 显示全部楼层
我的理解是*.*可以匹配任何名称中含有“.”(dot)的非隐藏文件。
注:所有以“.”开头的文件都是隐藏文件。
回复 支持 反对

使用道具 举报

发表于 2008-4-23 22:54:58 | 显示全部楼层
命令:ls *.*的作用是什么???
正确答案好象是:
A list of all files in the present working directory that have a dot in the name, but not as a first character.
不解阿。。。高手赐教。。。
----------------------------------------------------------------
如果目录里没有格式为 *.*的文件的时候,报以下错误,是正常的啊。上面的也说清楚了啊,文件名必须带有“.”,而且不能以“.”为文件名的第一个字符。
ls: *.*: No such file or directory
回复 支持 反对

使用道具 举报

发表于 2008-4-24 08:29:51 | 显示全部楼层
ls *.*

这个*.*是shell解析的,如果目录下有包含.的文件或者目录,那么shell就把所有符合条件的文件列出来作为命令的参数

如果没有任何符合条件的记录,那么shell就把*.*作为参数传递给命令

对于ls来说,它是不解析这个*的

做一些实验吧:

cd /tmp
mkdir test
cd test
ls *.*
ls '*.*'
-----------
touch 1
ls *.*
ls '*.*'
------
mv 1 1.1
ls *.*
ls '*.*'

=========
再做另外的实验:
cd /tmp
cat >test.sh<<"EOF"
#!/bin/bash
echo $#
[ $# -ge 0 ] && echo $1
EOF
chmod +x test.sh
rm -rf test
mkdir test
cd test
../test.sh *.*
touch 1.1
../test.sh *.*
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表