为了更改符号链接,可以使用 -fs 选项来消除先取消链接或删除旧链接的需要。但是,尝试在目录上执行此操作似乎不起作用:
$ mkdir dir1
$ mkdir dir2
$ ln -s dir1 lnk
$ ln -sf dir2 lnk
$ ll
......... lnk -> dir1
$
为什么这样?是否有其他选项可以像处理文件一样对目录执行此操作?
答案1
默认情况下,如果您将目录(或目录的符号链接)作为ln
命令的第二个参数传递,它将在该目录内创建一个与第一个参数同名的链接。因此,使用您发出的命令集,您应该会找到一个名为dir2
inside的符号链接dir1
。
您可以使用以下选项更改此行为-T
:
-T, --no-target-directory
treat LINK_NAME as a normal file
如果您在第二次ln
调用时传递此选项,那么它应该覆盖lnk
符号链接,而不是在第一个目录内创建新的符号链接。