例如:我有文件a.txt
和文件b.txt
。我想要一个从a.txt
到 的链接b.txt
。如果我打开/读取文件a.txt
,文件b.txt
应该打开/读取。如果我尝试类似的操作,ln -s a.txt b.txt
则会收到错误,因为文件b.txt
存在。如何创建从a.txt
到 的链接b.txt
?
答案1
您需要b.txt
先使用命令删除文件rm b.txt
,然后使用命令创建符号链接ln -s a.txt b.txt
。
您可以使用硬链接 from b.txt
to a.txt
,然后执行ln a.txt b.txt
,两者a.txt
都会b.txt
指向硬盘驱动器上的同一文件,并且删除a.txt
不会删除可以读取的文件b.txt
。使用符号链接从b.txt
删除a.txt
删除a.txt
文件和b.txt
符号链接将被破坏。有关硬链接的更多信息:https://en.wikipedia.org/wiki/Hard_link
答案2
请务必首先检查手册页以获取帮助。它会节省你很多时间。或者,如果您真的很忙,则ln --help
shell 会给出
Usage: ln [OPTION]... [-T] TARGET LINK_NAME (1st form) ....
在帮助文本的下方,我们发现
...
-s, --symbolic make symbolic links instead of hard links
-f, --force remove existing destination files
...
my_secret.file
从某种意义上说,这意味着,如果您想为名为as 的文件创建链接my_secret.link
,您将发出如下命令
ln -sf my_secret.file my_secret.link
如果你ls -l my_secret.link
在这里做一个。你会得到这样的东西
lrwxrwxrwx 1 foouser groupbar 7 Jul 13 17:17 my_secret.link -> my_secret.file
中的“l”lrwxrwxrwx
告诉我们它是一个链接。
编辑:拉胡尔先发制人。
答案3
您可以使用-f
选项,它会在创建链接之前删除现有的目标文件(如果有)。
ln -sf a.txt b.txt
在发现man ln
:
[OPTION]
-f, --force
remove existing destination files