如何在 Linux 中符号链接文件?

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

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

它是否正确?

答案

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

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

要创建或更新符号链接:

ln -sf /path/to/file /path/to/symlink
ln -s TARGET LINK_NAME

-s使其具有象征意义。

ln -s EXISTING_FILE_OR_DIRECTORY SYMLINK_NAME
ln -s target linkName

您可以在此处查看手册页:

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

(因为 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)
ln -s source_file target_file

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

对于原始问题:


'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手册页 。您可以通过在 Google 中搜索 “man ln” 来访问此文件,也可以打开终端窗口并键入man ln获取相同的信息。手册页明确指出:

ln [OPTION] ... [-T] TARGET LINK_NAME(第一种形式)


如果不适合每次都需要搜索或阅读手册页,也许您会更容易记住所有的nix 命令以相同的方式工作

cp /file/that/exists /location/for/new/file
mv /file/that/exists /location/its/moving/to
ln /file/that/exists /the/new/link

cp将当前存在的文件(第一个参数)复制到新文件(第二个参数)。
mv将当前存在的文件(第一个参数)移动到新位置(第二个参数)

同样, ln将当前存在的文件(第一个参数)链接到新链接(第二个参数) *


我想建议的最后一个选择是,您可以创建自己的手册页,这些手册页易于阅读并且易于(对您)查找 / 记住。只需编写一个简单的 shell 脚本即可为您提供所需的提示。例如

在您的. bash_aliases 文件中,您可以放置以下内容:

commandsfx() {
    echo "Symlink:  ln -s /path/to/file /path/to/symlink"
    echo "Copy:     cp /file/to/copy /destination/to/send/copy"
}

alias 'cmds'=commandsfx

然后,在需要时,从命令行中键入cmds ,您将以一种可以快速阅读和理解它的方式获得正确的语法。您可以根据需要使这些功能先进,以获取所需的信息。您甚至可以使它们具有交互性,因此您只需要按照提示进行操作即可。

makesymlink() {
    echo "Symlink name:"
    read sym
    echo "File to link to:"
    read fil
    ln -s $fil $sym
}

alias 'symlink'=makesymlink

*- 很明显,它们都可以采用不同的参数并做不同的事情,并且可以在文件和目录上工作... 但是前提是相同的
♦- 使用 bash shell 的示例

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.

在 Linux 上创建符号链接或软链接:

打开 Bash 提示符,然后键入下面提到的命令以建立指向文件的符号链接:

A)转到您要在其中创建软链接的文件夹,然后按如下所示键入命令

$ ln -s (path-to-file) (symbolic-link-to-file)

$ ln -s /home/user/file new-file

B)转到您的新文件名路径并输入

$ ls -lrt (To see if the new-file is linked to the file or not)

例:

user@user-DT:[~/Desktop/soft]# ln -s /home/user/Desktop/soft/File_B /home/user/Desktop/soft/File_C
user@user-DT:[~/Desktop/soft]# ls -lrt
total 0
-rw-rw-r-- 1 user user  0 Dec 27 16:51 File_B
-rw-rw-r-- 1 user user  0 Dec 27 16:51 File_A
lrwxrwxrwx 1 user user 31 Dec 27 16:53 File_C -> /home/user/Desktop/soft/File_B


Note: Where, File_C -> /home/user/Desktop/soft/File_B  Means, File_C is symbolically linked to File_B

ln -s sourcepath linkpathname

注意:

-s进行符号链接而不是硬链接