ln -sf source_file target_file
即使 source_file 不存在也会成功。
ln -f source_file target_file
另一方面,正如预期的那样失败。
如何在没有首先明确测试文件存在的情况下在第一种情况下给出错误(即不存在[[ -e source_file ]] && ln -sf source_file target_file
)
从ln
手册页:
创建硬链接时,每个 TARGET 都必须存在。
那里没有提到符号链接;事实上,这种说法似乎暗示符号链接并非如此。
正如我在对您的问题的评论中所说,在创建指向不存在源的符号链接时,会创建一个断开的链接:
$ ln -sfv blah blabla
'blabla' -> 'blah'
$ file blabla
blabla: broken symbolic link to 'blah'
Run Code Online (Sandbox Code Playgroud)
就ln
目前而言,没有理由大喊错误:您要求提供符号链接并且它必须这样做。羞于 aliasing ln
,我没有看到一种方法可以在不明确检查源文件是否存在的情况下做你想做的事情。