ls -a
有人会过度使用有什么理由吗ls -A
?也就是说,能够.
或..
曾经展示过任何有用的东西吗?我以前使用-a
只是因为我不知道那-A
是同一件事,但没有.
and ..
。这让我回到了我的问题:是否-a
曾经展示过任何不平凡的东西.
或者..
有人可能想看到的东西?
答案1
最初ls
只支持-a
,已经在 Unix 的第一个版本中就有70年代初。
一个-A
选项在 70 年代末被添加到 BSD ls
(尽管直到 80 年代末才被记录),正是因为ls -a
列出.
or..
很少有用。ls
90年代初的GNU实现从一开始就拥有它(也称为--almost-all
there)。
POSIX 在其 2008 年版本中最终指定了该选项,因此它最终适用于大多数其他ls
实现。但到那时大多数人已经习惯了打字ls -a
。
ls -a
ls -la
当您除了目录中的文件之外还想检查当前目录和父目录的权限、修改时间等时,有时会很有用。
请注意,虽然 POSIX 要求 和dir/.
分别dir/..
解析到dir
和 其父目录(以及.
和..
到当前工作目录及其父目录),但它不需要readdir()
返回.
和..
条目,也不要求将这些.
和..
实现为实际目录条目,如下所示它们位于 Unix 的原始版本中。因此,您可以找到ls -a
既不报告.
也不报告的系统..
。在 Linux 上,.
和..
不会作为目录条目存储在多个文件系统中,但是readdir()
(好吧,getdents()
下面的系统调用)在这种情况下仍然会伪造它们。
一个相关的(而且更糟糕的)问题是一些 shell 包括.
和..
的扩展.*
。那是原因rm -rf .
和rm -rf ..
失败例如,作为防止这些炮弹的错误特征的保障措施。
答案2
根据 的手册页ls
,没有太大区别。
-a, --all
do not ignore entries starting with .
-A, --almost-all
do not list implied . and ..
-A
将列出以 a 开头的所有条目.
,但省略条目.
和..
。
答案3
我能看到的唯一优点是当前目录和父目录中的链接数量。这可以为您提供有关父目录或当前目录中子目录数量的信息。