![Linux:我可以通过软链接链接多个目的地吗?](https://linux22.com/image/1240687/Linux%EF%BC%9A%E6%88%91%E5%8F%AF%E4%BB%A5%E9%80%9A%E8%BF%87%E8%BD%AF%E9%93%BE%E6%8E%A5%E9%93%BE%E6%8E%A5%E5%A4%9A%E4%B8%AA%E7%9B%AE%E7%9A%84%E5%9C%B0%E5%90%97%EF%BC%9F.png)
尝试得到与此类似的结果:
$ ls -l
lrwxrwxrwx 1 user group 4 Jun 28 2010 foo -> /home/bar
lrwxrwxrwx 1 user group 4 Jun 29 2010 foo -> /etc/bar
目前的目的是能够将文件移动到 foo 并使其进入两个目标目录。目标是在确认将文件移动到 /etc/bar 没有问题后最终取消 /home/bar 链接。我受到限制,因为我无法更改或添加移动文件的过程。
答案1
不,一个链接只能解析一个文件/文件夹。更具体地说,一个文件夹不能包含多个同名项目,并且直接工作需要有两个名为“foo”的文件才能像您描述的那样进行。
答案2
一个链接只能指向一个文件,因此您不能foo
同时引用/home/bar
和/etc/bar
。根据您要执行的操作的性质,您可以通过先设置foo -> /etc/bar
和然后设置来实现您的目标/home/bar -> /etc/bar
。
答案3
您可以使用命名管道和连续运行的进程,tee
将输出传输到多个文件。
$ mkfifo foo
$ while :; do tee -a /home/bar /etc/bar < foo > /dev/null 2>&1; done &
$ echo hello > foo
$ cat /home/bar
hello
$ cat /etc/bar
hello
答案4
最好的办法可能是在 上添加某种特殊的点foo
。我怀疑仅使用内核提供的机制是否能做到这一点( union 不能完全覆盖它...),但使用 fuse 应该相对容易。