当我运行命令时ls -d
,我只看到一个点,没有其他东西。
无论我在哪里,它都是一样的。那是什么意思?Linux 在这里向我显示了什么?
我使用的是 RHEL 8.6,但我猜它与所有 Linux 系统都相关。
答案1
在大多数 Unix/Linux 文件系统中(并通过 shell 表示),单个点.
代表当前目录(看这里)。
另外,来自man ls
:
-d, --directory
list directories themselves, not their contents
这意味着如果你ls -d
在任何目录中运行(以 表示.
),该命令只会输出这个点。不用说,这个命令是相当没用的。
有效的用法ls -d
是将其与其他选项结合使用,并在另一个目录中使用,例如:
ls -lad /usr/bin/
这将显示目录本身的更多属性/usr/bin
。
答案2
首先,您发送命令的对象不是 Linux。您正在运行/usr/bin/ls
。此程序可与任何类型的文件系统上的其他操作系统一起使用。
ls -d
列出目录。
如果不带参数运行ls -d
,它会输出.
表示当前目录的内容。
如果您运行例如ls -d ~
,它将显示您的主目录的路径。
如果运行ls -d ~/*
,您将看到您的$HOME
.
令人困惑的是,它ls -d
给出的是目录的路径作为参数,而不是目录的内容。如果你不使用 globs,它几乎没用。
它可用于输出目录的完整路径,例如
pilot6@Pilot6:~$ ls -d ~
/home/pilot6
答案3
对于这些问题,最好的办法就是阅读手册。
您可以在命令行中输入命令 man 或者直接通过 Google 搜索来执行此操作。
在这种情况下man ls
对于选项 -d 或 --directory 我们得到:列出目录本身,而不是其内容
这个描述非常不言自明。
要在浏览器中查看该人: https://man7.org/linux/man-pages/man1/ls.1.html
另外,我想指出 Pilot 的评论。输出根据您使用的 shell 而不同。但由于您是新手,我假设您使用 Ubuntu 上的终端。
编辑以匹配评论的答案:
该命令仅输出当前目录。如果您有一个包含 3 个项目的文件夹 x,并在该文件夹内运行该命令,您将得到一个点。文件夹内的项目未列出。只有文件夹本身。
但是它并不总是输出点。如果你对另一个文件夹使用 ls 命令,它将输出该路径。
铁
ls -d /usr/bin
将输出 /usr/bin。
就像其他答案所说的那样:单独使用这个命令是没用的。它只是打印文件夹,您已经知道了。然而:如果您在特定文件夹的终端中并且想要查看该文件夹的权限,而无需退出该文件夹,您可以使用ls -dl
。
drwxrwxr-x 2 test test 4096 Feb 16 13:53 .
使用不带 d 选项的 ls -l 将仅打印内容的权限掩码。
假设我们现在想更改权限并撤销所有人的写权限。我们在名为 test 的文件夹中。
我们现在可以做chmod a-w `ls -d`
请记住,chmod 会更改权限,a 代表所有(所有者、组和其他人),-w 撤销写入权限。如果我们现在重新输入之前的 ls -dl 命令,我们会得到:
dr-xr-xr-x 2 test test 4096 Feb 16 13:53 .
总之
如果您想要定位到您所在的文件夹,可以使用 -d 命令。单独使用 ls 不会产生任何效果。但是此命令不是必需的。您可以通过从文件夹外部定位文件夹来解决这个问题,例如只需执行 cd . 并在测试文件夹上应用 chmod 即可。但是,如果您出于某种原因不想离开该文件夹,可以使用此命令。
我希望现在一切都清楚了。