什么是* /在Unix中?

时间:2014-02-02 15:27:40

标签: shell unix ls

假设您在Unix的主目录中并希望查看所有子目录。

ls -d

会打印'。'

ls -d */

会打印每个子目录。

2 个答案:

答案 0 :(得分:3)

来自ls:

的手册页
   -d, --directory
          list  directory entries instead of contents, and do not derefer‐
          ence symbolic links

所以,我认为您对目录条目和目录内容感到困惑。当你这样做

ls -d

打印当前目录的“目录条目”,在我的情况下是:

.

但是当你做的时候

ls -d */

shell将扩展*到当前目录的所有内容,上面的命令将每个目录内容作为参数。因此,输出将是当前目录的每个“目录内容”的“目录条目”,在我的情况下将是($pwd=/tmp):

ls -d */
systemd-colord.service-XwkSsOM/  systemd-rtkit-daemon.service-XH1Bbsw/
systemd-cups.service-XRwwRXh/

请注意我不使用/

时的区别
ls -d *
a.php                            ip.sh                            systemd-colord.service-XwkSsOM        tmp.php
eiskaltdcpp-gtk.Wani.1462694194  model-one-final-rev.pdf          systemd-cups.service-XRwwRXh          tmp.py
hogsuspend                       res-failed.txt                   systemd-mariadb.service-XTsa5E9       yum_save_tx.2014-02-02.08-36.RhLlKa.yumtx
ip                               sess_ph2d61cksimbibrqrn1jru8l85  systemd-rtkit-daemon.service-XH1Bbsw

在*之后加上'/'将过滤掉当前目录中目录本身的所有目录内容。

答案 1 :(得分:1)

*/仅匹配当前目录的子目录(不是文件,如果有的话)。 -d标志指示ls打印目录名称而不是列出其内容。

没有参数的

ls -d将列出当前目录本身(同样,其内容),由.引用。