在Linux终端中,ls -d命令代表什么意思?

3
当我在终端中输入ls -l -d命令,并且当前工作目录为root时,它会显示:
root@devils-ey3:~# ls -l -d
drwxrwxr-x 57 root root 4096 Apr 30 11:16 .

但是当我在其他的当前目录中,比如说是/usr/或者/usr/bin/,那么输出结果和以前一样,只是文件大小、ID和日期有所改变。

root@devils-ey3:/usr/bin# ls -l -d
drwxr-xr-x 2 root root 118784 Apr 29 23:10 .

我看了ls -d的文档,它写道:
-d, --directory            list directory entries instead of contents,
                               and do not dereference symbolic links

我很困惑为什么我们要使用ls -d以及为什么在每个不同的目录中它展示的输出看起来大多数都是相同的?


尝试将目录作为参数进行指定,例如 ls / vs ls -d /。或者甚至是多个目录,例如 ls / /bin/ /etc/ vs ls -d / /bin/ /etc/ - Biffen
4
我投票关闭此问题,因为它不是一个编程问题,更适合 https://unix.stackexchange.com/。 - Gerald Schneider
在你关闭之前,我想知道他使用的是哪个发行版,这样我就可以避免它了。任何安装有损坏的“man页面”的发行版都是我要远离的东西...说真的,唯一的痛苦就是-d不能做你想要的事情。好吧,那只是因为你没有正确使用它。正如答案所示,你必须告诉它查找子目录而不是当前目录(无聊的结果)。所以要查找子目录:ls -d /* - David C. Rankin
3个回答

4
在Linux(或一般情况下,类Unix系统中),所有目录都包含以下条目:
- . 是对当前目录的相对引用 - .. 是对父级目录的相对引用
由于您添加了-d标志,它将列出目录本身,而不是其内容。请参见ls --help

-d 列出目录条目而非内容,并且不解引用符号链接


实际上是 -a 显示隐藏文件。 - Gerald Schneider
@GeraldSchneider 非常正确,谢谢。 - Maroun

1
< p > -d开关基本上表示“我对目录本身感兴趣,而不是其内容”。请参见:

$ mkdir foo
$ touch foo/bar
$ ls -l foo # show me detailed info about the contents of “foo”
-rw-r--r--  1 zoul  staff     0B Apr 30 10:20 bar
$ ls -ld foo # show me detailed info about “foo” itself
drwxr-xr-x  3 zoul  staff   102B Apr 30 10:20 foo

0
如官方文档所示:列出目录条目而不是内容
如果您有子目录,它只会显示子目录的名称,而不是子目录中的所有文件。 同时,链接也不会被跟踪。因此,您只能在调用ls -d的目录中看到条目。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接