Answers:
$ 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 */
man ls
具有下一个信息:list directory entries instead of contents, and do not derefer‐ ence symbolic links
。因此,在您的版本中可以更好地说明其实际功能。
ls
仅与with一起使用-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 */
单独使用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/
让我举例说明:
ls
:列出目录的内容
ls -d
或ls --directory
:列出目录本身,而不是目录内容
例子:
ls -d android-sdk-linux/
# result
android-sdk-linux/
ls android-sdk-linux/
# result
add-ons build-tools platforms platform-tools SDK Readme.txt temp tools
您的ls -d
这种情况表明仅列出我所在的目录,而不显示其目录(即.
Linux术语),因此结果是:.
。
但是,如果您说过:ls
,那么您将看到当前目录中存在的所有内容.
。
ls -dC .* --color
还列出了隐藏文件,而不仅仅是目录。