“ls --directory” 代表什么?

“ls --directory” 代表什么?

在我的 Ubuntu 版本中,man ls 包含有关 --directory 的以下信息:

list directory entries instead of contents, and do not dereference symbolic links

所以我有点困惑它是如何工作的。我使用了命令ls --directory,我期望得到一个包含所有目录的列表,但我得到的是.

那么它到底起什么作用ls --directoryls -d

答案1

$ man ls
...
-d, --directory
              list directories themselves, not their contents

当前目录表示为,.这就是ls -d列出的内容。

当前目录内的目录是目录的内容,因此不会通过此选项显示。

我使用-d别名中的选项来显示隐藏的文件和目录

alias l.='ls -dC .* --color'

如果没有-d,这也会列出隐藏目录的内容,这不是我想要的。

它的另一个用途是当我想使用该-l选项查看目录的元数据而不是其内容时:

$ ls -ld playground
drwxr-xr-x 72 zanna zanna 12288 Mar  1 23:10 playground

如果你想要当前目录中的目录列表,你可以使用

ls -d */

答案2

仅使用lswith-d几乎毫无用处。它提供有关目录本身的信息。它不会列出其内容。

这就是您看不到目录列表的原因。您期望看到的目录是当前目录的“内容”

如果您简单运行,ls -d它会显示当前目录.

如果使用其他键来运行它是有意义的,例如-l

ls -ld将显示当前目录的权限。

pilot6@Pilot6:~$ ls -ld
drwxrwxr-x 1 pilot6 pilot6 2570 Mar  4 12:14 .

您还可以查看任何其他目录的权限,例如

ls -ld /bin

pilot6@Pilot6:~$ ls -ld /bin
drwxr-xr-x 1 root root 2584 Feb 25 15:19 /bin

如果您ls -l不带此命令运行-d,您将获得当前目录中文件和文件夹的所有权限列表。如果您不需要它,这是一个很好的ls -ld使用示例。

您可以通过以下方式列出当前目录

ls -d */

答案3

ls -d单独使用是相当没用的,因为如果没有参数它总是返回.。但在指定参数后它就有意义了。例如,如果您的用户名是rick,并且您想查看您家中的所有目录,请使用:

$ ls -d /home/rick/*/
/home/rick/AAC/        /home/rick/EnhanceIO/         /home/rick/silentcast/
/home/rick/assembly/   /home/rick/EnhanceIO-master/  /home/rick/Templates/
/home/rick/bin/        /home/rick/log/               /home/rick/test/
/home/rick/Desktop/    /home/rick/Music/             /home/rick/tmpe/
/home/rick/Documents/  /home/rick/Pictures/          /home/rick/Videos/
/home/rick/Downloads/  /home/rick/Public/

答案4

ls -d列出目录本身而不是其内容。文件按正常方式列出。查看man ls所有选项的说明。

.是目录本身,与从当前目录运行命令时使用的目录相同,./runscript.sh

..是父目录,即当前目录的父目录,如在cd ..目录层次结构中向上移动

相关内容