【问题标题】:How to view all ( including hidden ) subdirectories如何查看所有(包括隐藏的)子目录
【发布时间】:2013-02-02 07:36:48
【问题描述】:

在服务器上,当我输入 ls -al 时,我会得到一个目录列表

-bash-3.2$ ls -al
total 12
drwxr-xr-x  3 root root    0 Feb 13  2011 .
drwxr-xr-x  4 root root 4096 May 11  2011 ..
drwxr-xr-x 55 torg torg 4096 May 15 05:40 stuff

但是我碰巧知道有更多的目录存在,因为当我输入cd loourr 然后返回cd .. 时,我发现自己与

-bash-3.2$ ls -al
total 32
drwxr-xr-x  3 root root    0 Feb 13  2011 .
drwxr-xr-x  4 root root 4096 May 11  2011 ..
drwxr-xr-x 55 torg torg 4096 May 15 05:40 torg
drwxr-xr-x 108 loourr loourr 20480 Jan 29 19:48 loourr

这是为什么?我的印象是-a 标志显示了所有目录。这可能是什么原因造成的?如何显示仍未列出的目录?

更新: 以下是当我遵循 David Wolever 的建议时会发生什么

-bash-3.2$ ls
torg
-bash-3.2$ pwd
/home/room1
-bash-3.2$ cd loourr
-bash-3.2$ pwd
/home/room1/loourr
-bash-3.2$ cd ..
-bash-3.2$ ls
torg  loourr
-bash-3.2$ pwd
/home/room1

当我挂载时

-bash-3.2$ mount
/dev/sda2 on / type ext3 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/sda6 on /scratch type ext3 (rw)
/dev/sda3 on /var type ext3 (rw)
/dev/sda1 on /boot type ext3 (rw)
tmpfs on /dev/shm type tmpfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
cartman.foo.bar:/home/room2/me on /home/room2/me type nfs (rw,addr=*.43)
cartman.foo.bar:/home/room2/admin on /home/room2/admin type nfs (rw,addr=*.43)
storage1.foo.bar:/storage/3 on /storage/3 type nfs (rw,nfsvers=3,tcp,intr,hard,addr=*.44)
cartman.foo.bar:/home/room1/torg on /home/room1/torg type nfs (rw,addr=*.43)
cartman.foo.bar:/home/room1/loourr on /home/room1/loourr type nfs (rw,addr=*.43)

一些注意事项:我将服务器管理员名称替换为 admin,将我的帐户名称替换为 me,将服务器扩展名替换为 foo.bar,并且 addr= 中与 * 保持一致的部分

【问题讨论】:

  • 我想我们有一个副本。谷歌搜索“总 ls”,第三个结果。 stackoverflow.com/questions/7401704/…
  • @Numbers 你的权利,但我已经更改了问题以更准确地反映我感兴趣的内容。
  • 下次编辑现有帖子而不是创建副本,这样原始中提供的所有知识都可以传递。
  • 当心符号链接...更改目录可能不会让您离开您认为的位置。在bash 中查找cd 命令的-L(逻辑)和-P(物理)选项。
  • 这是某种挑战的一部分吗?如果是这样,挑战是否有可能是在做一些有趣的事情?

标签: bash shell unix ls


【解决方案1】:

ls -al 没有理由不显示loourr 目录。

它必须是在对ls 的第一次和第二次调用之间创建的,或者您可能最终位于不同的目录中。试试这个:

$ ls
stuff/
$ pwd
/foo/
$ cd loourr
$ pwd
/bar/loourr/
$ cd ..
$ ls
stuff/ loourr/
$ pwd
/bar/ <-- different directory

cd 可能会将您带到不同的目录有几个不同的原因......符号链接是一个(尽管可能不是您的情况),CDPATH 环境变量是另一个(如果您 echo $CDPATH ,你看到什么了吗?)

【讨论】:

  • 啊,好的。在这种情况下,您能否确认这是可重复的并且您最终在同一目录中?
  • 我确实在同一个目录中( /foo/ == /bar/ )
  • 在这种情况下,您能否运行我在回答中执行的相同命令,然后复制并粘贴终端会话(或截屏)并将其添加到您的问题中?
  • 求助。这太奇怪了。如果您反复看到这种情况,那么我不确定它可能是什么。
  • 是的,不知何故他们被隐藏了,一些 unix 诡计。谢谢你的想法
【解决方案2】:

我怀疑您设置了自动安装程序。这不是目录不可见的情况,而是当您第一次尝试引用该位置时,会创建目录并在该位置安装远程文件系统。

在这种情况下,使用ls -a 或任何其他选项都不会显示目录,因为它们还不存在。您的系统管理员可以在自动挂载程序上设置选项以使目录可见(可浏览),但除了通常不是默认设置之外,他们可能没有这样做是有充分理由的。

【讨论】:

  • 这很有趣。我倾向于相信你的正确。有没有办法解决?您还知道有什么好的资源可以了解更多信息吗?
  • 不涉及系统管理员就无法绕过它,但您可以通过man automountman autofsman auto.master 阅读更多信息,或者通过谷歌搜索这些术语以查找在线文档(如果您的管理员不这样做)无论出于何种原因安装手册页)。
猜你喜欢
  • 2021-08-26
  • 2014-12-13
  • 2014-01-07
  • 1970-01-01
  • 1970-01-01
  • 2018-05-30
  • 2018-05-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多