在UNIX/Linux下,ls是一个简单的基本命令,它可以显示某个目录下的文件列表,如果不指定特定目录的话,它将显示当前路径下的文件列表。
那么,ls是可靠的吗?
“不,当然不是,有些文件它不会列举出来。”你可能会这样说。
不错,在SHELL命令行上简单的打ls,有一些文件我们是看不到的---那就是隐藏文件。
和Windows不同,UNIX系统里面的文件不能够设置隐藏/非隐藏属性。但是,UNIX下也是有隐藏文件的,不过,它是通过文件名称来达到这个目的的。
在UNIX/Linux下,如果文件的名称第一个字符是“.“的话,它就是所谓的隐藏文件了,通过简单的ls我们是看不到它的。(不然,它的隐藏属性有何意义)
没错,你说的不错,可是ls -a就能够显示当前路径下所有的文件吗?
???当然了,这还用说吗!?
嗯,不错!那,ls -a *呢?
???一样的吧!(没有什么不同吧!?)
呵呵,如果你真的想这样回答的话,最好先好好的考虑一下UNIX/Linux下对于*(通配符)的处理。
我们在SHELL命令行上敲入的命令为什么能够执行?
那是因为有SHELL在啊,它负责分析、查找、执行、返回我们输入的信息。
没错,SHELL的功能是很强大的,它是我们和操作系统之间的桥梁,我们是通过它来和操作系统打交道的。
我们知道,SHELL是一个命令解释器,我们输入的信息它不是原原本本的交给操作系统的,而是进行了一些处理。
对于符号“*”,SHELL往往将其翻译为当前目录下的所有文件(隐藏文件好像需要除外),任何SHELL才返回你想要的东西。
问题恰恰就在这里,因为再聪明的人也有糊涂的时候 ^_^
如果,如果我有一个名称为"-l"的文件,结果会如何呢?
???谁这么无聊啊,弄一个"-l"做文件名?
哈,假设一下嘛,不要那么认真。
没错的,如果真的有这样的文件的话,ls不仅会漏掉文件,而且会返回我们并不想要的显示模式。
...(稍后补充)
我们知道,ls可能会丢失文件,而这都是通配符惹的祸 ^_^