![ls 命令的 d 选项究竟如何工作?](https://linux22.com/image/229923/ls%20%E5%91%BD%E4%BB%A4%E7%9A%84%20d%20%E9%80%89%E9%A1%B9%E7%A9%B6%E7%AB%9F%E5%A6%82%E4%BD%95%E5%B7%A5%E4%BD%9C%EF%BC%9F%20.png)
具有以下简单结构:
project
main
aaa
aaa
test
ddd
ddd
pom.xml <--- unique regular file
如果当前目录是project
并且如果执行则ls
出现命令
main pom.xml test
到这里一切都OK了。现在,根据man ls
有关d
选项存在:
-d, --directory
list directories themselves, not their contents
因此,执行时ls -d
会出现命令:
.
为什么?老实说,我只期望目录而不是常规文件。例如
main test
问题
d
该命令的选项到底如何ls
工作?
额外问题:
- 什么是不是他们的内容到底是什么意思?是关于每个目录的内部内容吗?
答案1
通常,当您ls
输入目录时,会显示该目录的内容。
例如在你的例子中:
$ ls project
main test
$ ls project/main
aaa aab
$ ls project/test
dda ddb
如果您使用该-d
标志,则列出目录本身
$ ls -d project
project
这听起来很无聊,直到你看到像通配符这样的东西:
$ ls project/*
project/main:
aaa aab
project/test:
dda ddb
我们可以看到每个目录都匹配,我们得到了这些目录中的文件列表。
但是-d
我们只获取目录名称本身,而不是目录内的文件。
$ ls -d project/*
project/main project/test
答案2
ls 命令的 d 选项究竟如何工作?
ls -d
是关于不再进一步遍历目录。ls
不带参数相当于ls .
,这就是为什么您只看到.
输出。作为如何使用它的示例:
$ mkdir -p {foo,bar,baz}/dir
$ ls *
bar:
dir
baz:
dir
foo:
dir
$ ls -d *
bar baz foo
如果您想查看某些目录元数据(例如,使用ls -ld
.
答案3
你问的是一个非常广泛的问题。但对您的困惑的简短回答是:默认值争论for ls
(当未指定时)是 .
。当你ls
没有选择地运行时,你会得到的内容.
。 当你跑步时ls -d
,你会得到.
。