我有一个特定的目录,其中包含按日期组织(命名)的其他目录。为了便于参考,我有一个符号链接,称为current指向最新的符号链接。
在创建新日期目录的脚本中,我希望创建或修复current符号链接以指向创建后的最新目录。
我认为适当的命令只是,例如,
ln -fs 2017-03-01 current
Run Code Online (Sandbox Code Playgroud)
如果current符号链接尚不存在,则此方法有效。
但是,如果current符号链接已经创建(并且指向,让我们说,在目录2017-02-28),这不起作用:
除删除符号链接current,并创建一个新的符号链接current指向2017-03-01,其结果反而是一个破碎的符号链接称为 2017-03-01指向自身,休息里面的目录2017-02-28(这是符号链接current指向,仍然分)。
概要
Run Code Online (Sandbox Code Playgroud)ln [-fs] [-L|-P] source_file target_file ln [-fs] [-L|-P] source_file... target_dir描述
...
当最终操作数命名现有目录时,应采用第二种概要形式。
那么,似乎没有任何方法可以将当前指向目录的符号链接重新指向新目标,其中新目标的名称与符号链接的名称不同。所以ln -fs不像我想的那样工作。
我必须rm current吗,还是我忽略了另一种方法?
小智 22
在 GNU 中ln,有ln -n,这将允许重新指向符号链接:
$ mkdir dir1 dir2
$ ln -s dir1 sym
# dir1/
# dir2/
# sym -> dir1/
$ ln -nsf dir2 sym
# dir1/
# dir2/
# sym -> dir2/
Run Code Online (Sandbox Code Playgroud)
BSD coreutils 使用该标志-h的方式-n与使用方式相同,但二进制文件可能-n仅支持与 GNU 兼容。