我想在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 source target

你可以参考http://man7.org/linux/man-pages/man7/symlink.7.html

你可以创建太硬的链接

文件的硬链接与原始目录条目无法区分;对文件的任何更改实际上都与用于引用文件的名称无关。硬链接通常不指目录,也可能不跨越文件系统。

ln source link
ln -s EXISTING_FILE_OR_DIRECTORY SYMLINK_NAME

要创建符号链接/软链接,请使用:

ln -s {source-filename} {symbolic-filename}

例如。:

ln -s file1 link1

对于原问题:


'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[选项]。。。[-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

*-很明显,它们都可以采用不同的参数,做不同的事情,可以处理文件和目录。。。但前提是一样的♦ - 使用bashshell的示例

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

cd myfolder
ln -s target

它将在myfolder中创建目标的符号链接。

常规语法

ln -s TARGET LINK_NAME