ls -l 显示带有两个尾部斜杠的符号链接目录

ls -l 显示带有两个尾部斜杠的符号链接目录

我刚刚将我的~/.config目录复制到另一个目录并将其符号链接回$HOME

当我运行ls -l它时,它会显示如下内容,末尾带有双斜杠:

lrwxrwxrwx  1 lud  lud     22 Jul 23 20:25 .config -> /home/lud/dots/config//

我不记得以前是否见过这种情况。我查看了另一个符号链接目录,看看是否到处都发生了同样的事情,但另一个符号链接目录末尾只有一个反斜杠。

符号链接有效。似乎没有任何东西损坏。我只是想知道额外的斜线是否有任何意义,或者它是否应该在那里。

答案1

ls如果您有一个映射到的别名ls -F,它将根据文件类型为所有文件添加后缀。

启用此选项后,所有目录路径都以 为后缀/。因此,如果符号链接的目标路径已存储一个尾随反斜杠,您将看到两个。

答案2

POSIX定义:

3.271 路径名

[…] 路径名可以选择性地包含一个或多个尾随<slash>字符。多个连续<slash>字符被视为与一个相同<slash>,除非有两个前导<slash>字符。

每个符号链接都应该起作用:

.config -> /home/lud/dots/config//
.config -> /home/lud/dots/config/
.config -> /home/lud/dots/config

(尽管它/home/lud/dots/config是一个文件,但只有最后一条路径才会产生有效的符号链接)。

你的符号链接就是这样的,因为它是这样创建的(除非另一个答案适用)。你显然给出了带有两个尾部斜杠的目标路径,并且它恰好是有效路径。请注意,你可以链接到几乎任何内容;此命令

ln -s path/that//may///not/exist/foo//// baz

将创建一个符号链接

baz -> path/that//may///not/exist/foo////

符号链接本身很可能会损坏,因为您在此路径上没有目录foo/。当您尝试使用符号链接时,目标的存在很重要,但对于您来说并不重要ln -s。如果path/that/may/not/exist/foo/存在,符号链接将起作用。

相关内容