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

时间:2009-12-23 09:50:39

标签: linux symlink

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

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

这是对的吗?

18 个答案:

答案 0 :(得分:3458)

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

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

创建或更新符号链接:

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

答案 1 :(得分:279)

ln -s TARGET LINK_NAME

-s使其成为象征性的。

答案 2 :(得分:270)

ln -s EXISTING_FILE_OR_DIRECTORY SYMLINK_NAME

答案 3 :(得分:89)

ln -s target linkName

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

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

答案 4 :(得分:78)

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

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

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

Linux:

ln -s target <- linkName

Windows:

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)

答案 5 :(得分:24)

ln -s source_file target_file

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

答案 6 :(得分:18)

原来的问题:


'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。你可以通过搜索&#34; man ln&#34;来访问它。在谷歌,或只是打开一个终端窗口并键入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的例子

答案 7 :(得分:16)

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.

答案 8 :(得分:12)

在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)

示例:

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

答案 9 :(得分:11)

7891047530491120702 3451234346467537818 3145645454491172774 3866378679491223630 4628565630491229555 LOAD DATA LOCAL INFILE 'C://Users//xxxx//Desktop//filename.properties' INTO TABLE IDS_FOR_TEST;

注意:

-s 制作符号链接而非硬链接

答案 10 :(得分:10)

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

cd myfolder
ln -s target

它会在target内创建myfolder的符号链接。

一般语法

ln -s TARGET LINK_NAME

答案 11 :(得分:9)

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

以下所有代码均假定您要创建一个名为/tmp/link的符号链接,该链接指向/tmp/realfile

注意:虽然此代码会检查错误,但它不会检查/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。在其他情况下,我将失败原因打印到标准错误输出。

答案 12 :(得分:7)

我想提出一份简洁英文版的描述。

 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:”和“ - &gt;”还表示该文件是一个链接。它基本上告诉WINE Windows“Drive A:”如何与Linux中的软盘驱动器相关联。要实际创建一个符号链接SIMILAR(在当前目录中,实际上为WINE执行此操作更复杂;使用“winecfg”实用程序):

 ln -s  /mnt/floppy  a:   //will not work if file a: already exists

答案 13 :(得分:6)

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

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

e.g:

ln -s file1 link1

答案 14 :(得分:3)

有两种类型的链接:

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

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

在你的情况下符号链接:

ln -s source target

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

你可以创建太难的链接

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

ln source link

答案 15 :(得分:2)

我发现术语有点令人困惑&#34; target&#34;和&#34;目录&#34;在男人的信息。

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

这是我对创建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

OR

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

我希望这对那些(仍)轻微混淆有帮助。

答案 16 :(得分:2)

链接基本上有两种类型:

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

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

示例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手册。

谢谢

答案 17 :(得分:-1)

如何在vagrant中创建符号链接。 步骤进行:

  1. 在vagrant文​​件中创建一个同步文件夹。例如config.vm.synced_folder“F:/ Sunburst / source / sunburst / lms”,“/ source” F:/ Sunburst / source / sunburst / lms: - 源代码,/ source: - vagrant里面的目录路径
  2. Vagrant up并输入vagrant ssh并转到源目录,例如cd source
  3. 验证源目录中是否提供源代码文件夹结构。例如/ source / local
  4. 然后转到与浏览器关联的文件的来宾计算机目录。获得文件备份后。例如sudo mv local local_bk
  5. 然后创建符号链接,例如sudo ln -s / source / local local。本地平均链接名称(要链接的来宾计算机中的文件夹名称) 如果你需要删除符号链接: - 键入sudo rm local