LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1527|回复: 12

为什么ls *.*显示不了隐藏文件

[复制链接]
发表于 2009-1-21 15:44:32 | 显示全部楼层 |阅读模式
为什么ls *.*显示不了隐藏文件

讨论一下
发表于 2009-1-21 16:03:29 | 显示全部楼层
这是bash的事情, echo *.* 看看吧,都不会把"."开头的扩展开的...  echo .* 却可以.
回复 支持 反对

使用道具 举报

发表于 2009-1-21 16:13:15 | 显示全部楼层
Post by waterloo2005;1940373
为什么ls *.*显示不了隐藏文件

讨论一下

ls -a *.*应该就可以了
回复 支持 反对

使用道具 举报

发表于 2009-1-21 16:18:59 | 显示全部楼层
Post by imake;1940380
ls -a *.*应该就可以了


bash 匹配 * 号必须至少一个字符。

因此 *.* 的格式要求文件名的第二个字符之后必须有一个点。但是实际上并非如此。例如 README 这个文件就根本没点。

而且 .vimrc 这样的文件,由于除了第一个点匹配了第一个*之外后面没点了,因此不能匹配 *.*
回复 支持 反对

使用道具 举报

发表于 2009-1-21 16:34:56 | 显示全部楼层
Post by poet;1940383
bash 匹配 * 号必须至少一个字符。

因此 *.* 的格式要求文件名的第二个字符之后必须有一个点。但是实际上并非如此。例如 README 这个文件就根本没点。

而且 .vimrc 这样的文件,由于除了第一个点匹配了第一个*之外后面没点了,因此不能匹配 *.*


错了:

  1. $ touch 123
  2. $ ls *.*
  3. ls: 无法访问 *.*: 没有那个文件或目录
  4. $ ls *123*
  5. 123
  6. $ ls 123*
  7. 123
  8. $
复制代码
回复 支持 反对

使用道具 举报

发表于 2009-1-21 19:35:33 | 显示全部楼层
Post by bones7456;1940391
错了:

  1. $ touch 123
  2. $ ls *.*
  3. ls: 无法访问 *.*: 没有那个文件或目录
  4. $ ls *123*
  5. 123
  6. $ ls 123*
  7. 123
  8. $
复制代码


看来你的实验是对的,那么,你怎么解释 ls -a *.* 不能匹配 .vimrc 这样的文件呢?
回复 支持 反对

使用道具 举报

发表于 2009-1-21 21:09:47 | 显示全部楼层
Post by bones7456;1940378
这是bash的事情, echo *.* 看看吧,都不会把"."开头的扩展开的...  echo .* 却可以.


但ls .*会把第二层目录的东西列出来
回复 支持 反对

使用道具 举报

发表于 2009-1-21 22:32:27 | 显示全部楼层
Post by poet;1940452
看来你的实验是对的,那么,你怎么解释 ls -a *.* 不能匹配 .vimrc 这样的文件呢?


我猜这是shell做的特殊处理,没有完全按照正则的规律来的,
回复 支持 反对

使用道具 举报

发表于 2009-1-21 22:33:28 | 显示全部楼层
Post by crccw;1940477
但ls .*会把第二层目录的东西列出来


如果 .* 匹配到目录名的话,ls 一个目录,自然会列出目录里面的内容啊.不想这样的话,要用 ls -d
回复 支持 反对

使用道具 举报

发表于 2009-1-22 12:47:03 | 显示全部楼层
Post by bones7456;1940518
我猜这是shell做的特殊处理,没有完全按照正则的规律来的,


这应该不是正则吧
回复 支持 反对

使用道具 举报

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

本版积分规则

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