ls 没有按预期列出文件

4 bash

我面临以下问题:

输出 1

sh-3.2$ ls -R
.:
#dir1  #dir2

./#dir1:
f1  f2  f3

./#dir2:
f1  f2  f3
Run Code Online (Sandbox Code Playgroud)

输出 2

sh-3.2$ ls #dir1
#dir1  #dir2
Run Code Online (Sandbox Code Playgroud)

正如在 Output1 中看到的,该目录#dir1有文件,f1 f2 and f3但是当我在该目录上执行 ls 时,我得到了一个不同的输出,如 Output2 中所见,Output2 似乎表明该#dir1目录具有#dir1 #dir2.

这里发生了什么?这是某种循环链接吗?

use*_*644 8

#是一个 shell 元字符,它标志着注释开始。因此

ls #dir1
Run Code Online (Sandbox Code Playgroud)

实际上与

ls
Run Code Online (Sandbox Code Playgroud)

它列出了 cwd 中的所有内容。

尝试逃避 #

ls \#dir1
Run Code Online (Sandbox Code Playgroud)

或或引用整个目录名称:

ls '#dir1'
Run Code Online (Sandbox Code Playgroud)

或者

ls ./#dir1
Run Code Online (Sandbox Code Playgroud)