首页 文章

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

提问于
浏览
1611

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

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

它是否正确?

18 回答

  • 10

    ln -s sourcepath linkpathname

    Note:

    -s使用符号链接而不是硬链接

  • 1

    原来的问题:


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

    这确实会从文件/目录创建一个symbolic link-s ):

    <basebuild>/IpDome-kernel/kernel
    

    到你的新链接

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

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

    首先,有man page for ln . 您可以通过在Google中搜索"man ln"来访问此内容,或者只需打开一个终端窗口并输入 man ln 即可获得相同的信息 . 该手册页明确指出:

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


    如果每次都必须搜索或阅读手册页,那么记住所有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的示例
  • 23

    我想提出一个简洁的英文版本的描述 .

    ln -s  /path-text/of-symbolic-link  /path/to/file-to-hold-that-text
    

    “ln”命令创建一个link-FILE,“ - s”指定链接的类型是符号 . 可以在WINE安装中找到符号链接文件的示例(使用“ls -la”显示目录内容的一行):

    lrwxrwxrwx 1 me power 11 Jan  1 00:01 a: -> /mnt/floppy
    

    标准文件信息内容在左边(但注意第一个字符是“l”表示“链接”);文件名是“a:”,“ - >”也表示文件是链接 . 它基本上告诉WINE Windows“Drive A:”如何与Linux中的软盘驱动器相关联 . 要实际创建一个符号链接SIMILAR(在当前目录中,实际上为WINE执行此操作)更复杂;使用“winecfg”实用程序):

    ln -s  /mnt/floppy  a:   //will not work if file a: already exists
    
  • 17
    ln -s EXISTING_FILE_OR_DIRECTORY SYMLINK_NAME
    
  • 85
    ln -s TARGET LINK_NAME
    

    -s 使其具有象征意义 .

  • 2
    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.
    
  • 5

    这是Stack Overflow,所以我假设你想要代码:

    以下所有代码均假定您要创建名为 /tmp/link 的链接到 /tmp/realfile 的符号链接 .

    CAUTION :虽然此代码检查错误,但它不会检查 /tmp/realfile 是否确实存在!这是因为死链接仍然有效,并且根据您的代码,您可能(很少)想要在真实文件之前创建链接 .


    Shell(bash,zsh,...)

    #!/bin/sh
    ln -s /tmp/realfile /tmp/link
    

    真的很简单,就像你在命令行(它是shell)上做的那样 . 所有错误处理都由shell解释器完成 . 此代码假定您在 /bin/sh 处有一个可用的shell解释器 .

    如果需要,您仍然可以使用 $? 变量实现自己的错误处理,如果链接成功创建,该变量将仅设置为0 .

    C和C.

    #include <unistd.h>
    #include <stdio.h>
    
    int main () {
      if( symlink("/tmp/realfile", "/tmp/link") != 0 )
        perror("Can't create the symlink");
    }
    

    symlink 仅在可以创建链接时返回0 . 在其他情况下,我正在使用 perror 来详细说明问题 .

    Perl

    #!/usr/bin/perl
    if( symlink("/tmp/realfile", "/tmp/link") != 1) {
      print STDERR "Can't create the symlink: $!\n"
    }
    

    此代码假定您在 /usr/bin/perl 处有一个perl 5解释器 . 如果可以创建链接,则 symlink 仅返回1 . 在其他情况下,我将失败原因打印到标准错误输出 .

  • 10
    ln -s target linkName
    

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

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

  • 259

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

    打开Bash提示符并键入以下提到的命令以创建指向您文件的符号链接:

    A) Goto the folder where you want to create a soft link and typeout the command as mentioned below

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

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

    B) Goto your new-file name path and type

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

    例:

    ls -lrt

    lrwxrwxrwx 1 user user 24 Aug 6 23:40 new-file -> /home/user/file

    Note: Where, A -> B Means, A is symbolically linked to B

  • 72

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

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

  • 6

    我发现man信息中的术语“target”和“directory”有点令人困惑 .

    目标是我们符号链接到的文件夹和实际符号链接的目录(不是你要符号化的目录),如果有人遇到同样的困惑,不要感到孤独 .

    这是我对创建Symlink(在linux中)的解释:

    ln -s /FULL/PATH/FOLDER-OR-FILE-SYMLINKING-TO NAME-OF-YOUR-SYMLINK
    

    您可以导航到要创建符号链接的文件夹并运行命令或指定符号链接的FULL PATH而不是NAME-OF-YOUR-SYMLINK .

    cd /FULL/PATH/TO/MY-SYMLINK-PARENT-FOLDER
    ln -s /FULL/PATH/FOLDER-OR-FILE-SYMLINKING-TO NAME-OF-YOUR-SYMLINK
    

    要么

    ln -s /FULL/PATH/FOLDER-OR-FILE-SYMLINKING-TO /FULL/PATH/TO/MY-SYMLINK-PARENT-FOLDER/NAME-OF-YOUR-SYMLINK
    

    我希望这对那些(仍)轻微的困惑有所帮助 .

  • -2

    有两种类型的链接:

    符号链接:请参阅指示另一个文件的抽象位置的符号路径

    硬链接:请参阅物理数据的具体位置 .

    在你的情况下符号链接:

    ln -s source target
    

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

    你可以创建太硬的链接

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

    ln source link
    
  • 11

    如何在vagrant中创建符号链接 . 脚步:

    • 在vagrant文件中创建同步文件夹 . 例如config.vm.synced_folder "F:/Sunburst/source/sunburst/lms","/source" F:/ Sunburst / source / sunburst / lms: - 其中源代码,/ source: - 流浪者里面的目录路径

    • Vagrant up并输入vagrant ssh并转到源目录,例如cd source

    • 验证源目录中是否有源代码文件夹结构 . 例如/ source / local

    • 然后转到与浏览器关联的文件的来宾计算机目录 . 获得文件备份后 . 例如sudo mv local local_bk

    • 然后创建符号链接,例如sudo ln -s / source / local local . 本地平均链接名称(您要链接的来宾计算机中的文件夹名称),如果您需要删除符号链接: - 键入sudo rm local

  • 3191

    链接基本上有两种类型:

    符号链接(软):链接到指示另一个文件的抽象位置的符号路径

    硬链接:链接到物理数据的特定位置 .

    示例1:ln / root / file1 / root / file2

    以上是硬链接的示例,您可以在其中获得物理数据的副本 .

    示例2:ln -s /path/to/file1.txt /path/to/file2.txt

    上面的命令将创建一个指向file1.txt的符号链接 .

    如果删除源文件,则在Soft中没有任何内容到目的地

    当你这样做:

    ls -lai

    您将看到符号链接有不同的inode编号 .

    有关更多详细信息,您可以在Linux操作系统上阅读ln的man .

    谢谢

  • 252

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

    cd myfolder
    ln -s target
    

    它将在 myfolder 中创建 target 的符号链接 .

    一般语法

    ln -s TARGET LINK_NAME
    
  • 15

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

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

    例如 . :

    ln -s file1 link1
    
  • 0

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

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

    要创建或更新符号链接:

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

相关问题