所以我基本上有一个始终存在的目录A 。我想用symbolik链接替换这个目录(这将在我的部署脚本中完成)。
我已尝试ln -sf app/cache A
但它不起作用,它在 A 内创建,而不是覆盖它。
$ tree
.
├── A
│ └── cache -> app/cache
└── app
└── cache
3 directories, 1 file
是否可以只使用ln
或者我必须事先删除A吗?
答案 0 :(得分:2)
ln
实用程序可能会被要求通过添加-f
选项删除目标(如果已存在)。但是,POSIX标准表示这是通过调用C库例程unlink()
和关于 函数完成的,标准说
除非进程具有适当的权限且实现支持在目录上使用
path
,否则unlink()
参数不应命名目录。
我无法访问记录unlink()
以删除目录的系统,或者记录-f
标记为ln
以删除目录的系统。
因此,你的解决方案是
$ rm -rf /path/to/A
或者,哪个会更安全,
$ mv -f /path/to/A /path/to/A.orig
在创建符号链接之前。
答案 1 :(得分:-1)
我建议总是阅读手册,它们非常方便。
-f, - force 删除现有目标文件
[http://man7.org/linux/man-pages/man1/ln.1.html]
这是一个常见的选项,你可以在许多程序中找到,如rm,cp,mv ......