/dir 和 /dir/ 之间的区别

/dir 和 /dir/ 之间的区别

考虑我正在为我的音乐目录创建一个名为 的符号链接music

ln -s Music music

现在考虑以下命令序列:

edward@ArchLinux:~$ readlink music
Music
edward@ArchLinux:~$ readlink music/
edward@ArchLinux:~$ 

只有当我是时我才会得到输出不是/在符号链接名称的末尾使用。

我想知道/dir/dir/是否不同。有人能解释一下吗?

答案1

readlink需要符号链接,然后显示符号链接指向的文件/目录。

  • 在您的第一次尝试中:它看到符号链接,因此它显示它指向的内容
  • 在你的第二次尝试中:它看到了 music/.,即 Music/.这是指向的目录,而不是指向该目录的符号链接,因此它没有要解释的链接。 (换句话说,当您添加最后的“/”时,shell 的文件描述符将改为指向的目录)。

答案2

在 Unix 上,一切都是文件描述符

在这种情况下,“一切”包括普通文件、目录、分区(例如/dev/sda1)、设备(例如/dev/sda)、虚拟设备(例如/dev/null)和符号链接。

但在这种情况下,“文件描述符”是什么?它是文件系统根目录中的一个条目,指向磁盘或内存(对于虚拟文件)中的数据位置。请注意,例如在 ext? 文件系统上,文件描述符和数据之间还有另一层抽象,称为“inode”。

因此,在您的示例中,music是一个符号链接,它由文件描述符表示,就像任何其他文件或目录一样。但它有一个特殊的标志集来将其标识为符号链接,其中目录将有另一个标志集将其定义为符号链接。现在系统可以解释符号链接,它实际上只是一个包含目标的绝对或相对路径的字符串。

如果您在其后面显式写入 a,它只会被解释为目录/,否则它会被视为文件。

相关内容