在我的 Ubuntu 版本中,man ls 包含有关 --directory 的以下信息:
list directory entries instead of contents, and do not dereference symbolic links
所以我有点困惑它是如何工作的。我使用了命令ls --directory
,我期望得到一个包含所有目录的列表,但我得到的是.
那么它到底起什么作用ls --directory
呢ls -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
仅使用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 */
答案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 ..
目录层次结构中向上移动