为什么会ls .*打印出隐藏目录的内容?我只想打印隐藏文件,现在看到 Show only Hidden Files是一个解决方案,但我仍然想了解为什么显示目录的内容。未显示更多嵌套目录的内容。
以下是ls .*我的主目录中的部分输出。
.bash_history
.bash_profile
.bashrc
.coin_history
.emacs
.gitconfig
.gitignore_global
.grasp_jss
.ssh:
config github_rsa.pub id_rsa.pub known_hosts.old
github_rsa id_rsa known_hosts lambda.pem
.vim:
colors ftdetect syntax
Run Code Online (Sandbox Code Playgroud)
这台机器正在运行 RHEL。在 Mac OSX 上观察到类似的行为。
简短回答:shell glob 扩展。
外壳接受您的输入并.*在将其传递给之前扩展该部分ls,因此您正在有效地执行以下操作:
$ ls .bash_history .bash_profile .bashrc .coin_history .emacs ...
Run Code Online (Sandbox Code Playgroud)
所以它列出了每个条目。当它看到一个目录条目时,它会列出该目录的内容,正如您所期望ls的那样。要仅查看工作目录中的文件/目录,请使用以下-d选项ls:
$ ls -d .*
Run Code Online (Sandbox Code Playgroud)
该-d选项告诉ls“列出目录本身,而不是它们的内容”(取自ls手册页)。