题 如何在Linux中对文件进行符号链接?


我想在Linux中建立一个符号链接。我写了这个bash命令,其中第一个路径是我想要链接到的文件夹,第二个路径是已编译的源。

ln -s '+basebuild+'/IpDome-kernel/kernel /home/build/sandbox/gen2/basebuild/IpDome-kernel/kernal 

它是否正确?


1474
2017-12-23 09:50


起源




答案:


要创建新的符号链接(如果已存在符号链接,则会失败):

ln -s /path/to/file /path/to/symlink

要创建或更新符号链接:

ln -sf /path/to/file /path/to/symlink

2962
2017-12-23 09:52



@micapam ln 语法类似于 cp 语法,例如 资源  目的地。 - Andrey
这是你的助记符:l(i)n(k)-s(ymbolic)<target> <可选名称>(最后一个参数是可选的这一事实可以帮助你弄清楚它不是目标)(顺便说一句符号链接的路径在当前目录中创建一个与目标相同的基本名称的链接) - UncleZeiv
@micapam就像 cp 是 CoPy, ln 是 LiNk。第一和第三个字母。 - Cole Johnson
我花了几分钟试图弄清楚为什么这对我不起作用。它创建了一个自循环链接。似乎/ path / to / file应该是绝对的,而不是相对于“当前文件夹”。或许在答案中指出这一点? - Abhishek Anand
@AbhishekAnand已经有几年了,但我只想留下它的说明 不 与相对路径一起工作;它只需要相对于生成的符号链接的目录而不是当前目录。你写的第一个路径参数实际上是逐字的,这个文本将在符号链接中;这就是为什么,当它是相对的时,它必须是相对于链接的。 - JoL


ln -s TARGET LINK_NAME

在哪里 -s 使它具有象征意义。


244
2017-12-23 09:53



TARGET&LINKNAME 是更好的记忆方式。顺便说一下删除符号链接使用: unlink LINK_NAME - Silvan
我喜欢这样说: ln -s where-the-symlink-should-point where-to-place-the-symlink-itself。 - totymedli


ln -s EXISTING_FILE_OR_DIRECTORY SYMLINK_NAME

232
2017-12-23 09:58



比接受的答案更好,并且具有明确的简洁性。 - Josh Habdas


ln -s target linkName

您可以在这里查看手册页:

http://linux.die.net/man/1/ln


78
2017-12-23 09:52



很高兴提到“目标”而不仅仅是“文件” - Alyas


(因为ASCII图片胜过千字符。)

箭头可能是一个有用的助记符,特别是因为它几乎就是它在Emacs的直接看起来的样子。

大局,所以你不要把它与Windows版本混淆

Linux的:

ln -s target <- linkName

视窗:

mklink linkName -> target

您也可以将其视为

ln -s "to-here" <- "from-here"
mklink "from-here" -> "to-here"

from-here 不应该存在,它是被创造出来的 to-here 应该已经存在(IIRC)。

(我总是对各种命令和参数是否应该包含一个预先存在的位置,或者是否需要一个位置感到困惑。)

编辑:对我来说,它仍然在缓慢下沉;我有另一种方式写在笔记中。

ln -s (target exists) (link is made)
mklink (link is made) (target exists)

65
2018-05-05 18:09



在Emacs' dired,这很简单,当你把光标放在目标上时,按 S,并键入您希望创建链接的目录。缩短想象所需结果与打字之间的差距。看到 gnu.org/software/emacs/manual/html_node/emacs/...。 - Brady Trainor
我的助记符是ON:ln -s Original Newfile(symlink) - robstarbuck
这对我有用 - Haider Ali


ln -s source_file target_file

http://unixhelp.ed.ac.uk/CGI/man-cgi?ln


21
2017-10-14 04:13



与“目标”相比,这是相反的定义 man ln,它称之为 ln -s TARGET LINK_NAME - wisbucky


原来的问题:


'ln -s '+basebuild+'/IpDome-kernel/kernel /home/build/sandbox/gen2/basebuild/IpDome-kernel/kernal'

这确实会创造一个 象征性的联系 (-s)从文件/目录:

<basebuild>/IpDome-kernel/kernel

到你的新链接

/home/build/sandbox/gen2/basebuild/IpDome-kernel/kernal

以下是帮助您记住的几种方法:

首先,有 手册页 ln。您可以通过在谷歌搜索“man ln”来访问它,或者只需打开一个终端窗口并输入 man ln 你会得到相同的信息。该手册页明确指出:

ln [OPTION] ... [-T] TARGET LINK_NAME(第1表格)


如果每次都不适合你搜索或阅读手册页,也许你会更容易记住这一切 nix命令的工作方式相同


17
2017-08-06 13:42





ln [-Ffhinsv] source_file [target_file]

    link, ln -- make links

        -s    Create a symbolic link.

    A symbolic link contains the name of the file to which it is linked. 

    An ln command appeared in Version 1 AT&T UNIX.

14
2017-12-23 09:56





如果您位于要创建符号链接的目录中,则忽略第二个路径。

cd myfolder
ln -s target

它将创建符号链接 target 内 myfolder

一般语法

ln -s TARGET LINK_NAME

10
2018-04-16 10:56