ls 命令不显示文件夹,但我无法创建它,因为文件夹已存在

DR0*_*01D 8 ubuntu

我正在使用 Ubuntu 16.04。

步骤 1) 我登录到我的root用户帐户。

步骤 2) 我曾经cd导航到不同用户帐户的主目录。

步骤 3) 我输入ls以检查该目录的内容。

步骤 4) 内容返回为空。

第 5 步)我键入mkdir .ssh以创建一个目录。

结果) mkdir: cannot create directory '.ssh': File exists

问题:如果目录中存在 .ssh 文件夹,为什么该目录列为空?

- 更新 -

我登录到 root 因为这是一个测试服务器。我不断地创造和摧毁它。

小智 35

ls本身不显示隐藏目录(隐藏目录和文件是以 开头的.,例如.ssh

尝试ls -a在目录中使用。

从 ls 联机帮助页:

-a, --all

不要忽略以 开头的条目。

正如评论中所指出的,“隐藏”目录和文件在技术上不是一回事,只是在许多常用工具中内置了代码来处理...具有特殊意义,结果.通常被大多数工具认为是“隐藏”的。我使用这个术语的原因是因为听到它以这种方式被提及是很常见的。

此外...通常对大多数文件系统具有特殊意义,分别表示当前目录和父目录。

  • 有趣的事实,隐藏文件的发明是一个错误,`ls` 只应该隐藏`.` 和`..`,所以他们添加了代码来查看它是否以点开头 (12认同)
  • 请注意,“隐藏目录”本身并不是一个东西,它们是隐藏的,因为 ls 有特殊的代码,当它们以点开头时不显示它们。 (4认同)
  • 我担心“以‘root’身份登录”部分以及对 *nixes 的明显不熟悉。OP 很容易不小心破坏了一些重要的东西。 (4认同)
  • @MichaelKjörling:在很多这样的系统上,情况正好相反。在那里你通常要求系统“给我所有东西”,当你想显示隐藏文件时,你说“给我所有东西加上隐藏的东西”或“给我所有隐藏的东西”。因此,它在隐藏文件方面付出了额外的努力,而在显示隐藏文件方面也付出了额外的努力。 (3认同)
  • @PlasmaHH 好吧,`ls` 和一大堆其他工具。但原则上你是绝对正确的;再说一次,即使在将其谱系追溯到 MS-DOS 及其文件属性的系统上,它也需要特殊代码来处理“隐藏”文件的情况(这意味着“设置了隐藏属性的文件”而不是“以这种特殊形式命名”)。 (2认同)
  • @PlasmaHH 我不知道这种情况的操作系统,是吗? (2认同)
  • @heinrich5991:已经很久了,我不确定,但我确定 dos int21,4e 有一个属性参数。 (2认同)
  • 理论上,可能有一些奇怪的文件系统实际上有隐藏文件,即那些不会被 `readdir`/`getdents` 显示的文件,但可以正常使用 `stat` 或 `open` 等。不应该太不可能用例如 FUSE 做到这一点。 (2认同)
  • `.` 和 `..` 在文件系统本身中具有特殊意义(这不仅仅是 `ls` 等的一个特性)。附加到名称以`.` 开头的其他文件的特殊含义*是*`ls` 和shell globbing 的一个特性。 (2认同)