它是否显示所有目录中的隐藏文件名?还是仅显示当前目录(包括其中的任何目录)?我不明白为什么ls -ld .*
会返回不同的结果(它仅显示当前目录中的隐藏文件和目录,而不显示其中任何其他目录中的文件)?另外,-d
单独执行 ( ls -d
) 有什么用?
答案1
ls -al .*
显示当前目录中名称以 开头的所有目录的内容.
(即所有与 shell glob 匹配的目录.*
)
在 Bash 中,.*
glob 也解析为.
和..
。由于.
代表当前目录和..
父目录,因此这两个目录的内容(包括任何隐藏文件和目录)也会显示出来。1
.*
还可以捕获当前目录中的隐藏文件,但它们仍然被列为.
正如解释的那样“ls --directory” 代表什么?该-d
标志导致显示目录本身,而不是其内容。
1在 Ubuntu 中符号链接到的 shell dash 中也是如此sh
。但是,其他 shell(包括 zsh 和 mksh)的行为更直观,在扩展 时不包括.
and 。还值得注意的是,虽然大多数命令在包含在 glob 中时将对and进行操作(包括and - 您可能会用它们弄乱您的系统),但该命令在设计上会失败。..
.*
..
.
.*
chmod
chown
rm
答案2
它将列出当前目录中的所有文件 + 目录,包括隐藏文件/目录以及.
名称以 开头的文件。
ls
表示列出当前目录中的目录以及文件。
a
表示目录中的所有文件,包括隐藏的和非隐藏的。
l
表示有关文件+目录的长信息列表,包括它们的权限和最后更新时间。
.*
表示当前目录中所有名称以 开头的隐藏文件.
。
答案3
它将返回.
该目录中的所有隐藏文件或以 开头的文件。要查看目录中的所有文件(包括隐藏文件),请使用ls -al