如何在 Linux 中符号链接文件?[关闭]

2024-09-30 15:23:00
admin
原创
86
摘要:问题描述:我想在 Linux 中创建一个符号链接。我写了这个 Bash 命令,其中第一个路径是我想要链接的文件夹,第二个路径是编译后的源。ln -s '+basebuild+'/IpDome-kernel/kernel /home/build/sandbox/gen2/ba...

问题描述:

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

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

这是正确的吗?


解决方案 1:

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

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

要创建或更新符号链接:

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

解决方案 2:

ln -s EXISTING_FILE_OR_DIRECTORY SYMLINK_NAME

解决方案 3:

ln -s TARGET LINK_NAME

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

解决方案 4:

ln -s target linkName

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

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

解决方案 5:

(因为一张 ASCII 图片值一千个字符。)

箭头可能是一种有用的助记符,特别是因为它几乎与 Emacs 的 dired 中的样子完全一样。

大图显示,这样你就不会与 Windows 版本混淆

Linux:

ln -s target &lt;- linkName

视窗:

mklink linkName -> target

你也可以把它们看作

ln -s &quot;to-here&quot; &lt;- &quot;from-here&quot;
mklink &quot;from-here&quot; -> &quot;to-here&quot;

不应该from-here存在,它将被创建,而to-here应该已经存在(IIRC)。

(我总是混淆各种命令和参数是否应该涉及预先存在的位置,或者是否应该涉及要创建的位置。)

编辑:我仍在慢慢理解;我在笔记中写了另一种方法。

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

解决方案 6:

ln -s source_file target_file

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

解决方案 7:

对于最初的问题:


&#039;ln -s &#039;+basebuild+&#039;/IpDome-kernel/kernel /home/build/sandbox/gen2/basebuild/IpDome-kernel/kernal&#039;

这确实会从文件/目录创建一个符号链接( ):-s

&lt;basebuild>/IpDome-kernel/kernel

到您的新链接

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

这里有一些方法可以帮助你记忆:

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

ln [选项]...[-T] 目标链接名称(第一种形式)


如果你不喜欢每次都搜索或阅读手册页,那么也许你会更容易记住所有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 &quot;Symlink:  ln -s /path/to/file /path/to/symlink&quot;
    echo &quot;Copy:     cp /file/to/copy /destination/to/send/copy&quot;
}

alias &#039;cmds&#039;=commandsfx

然后,当您需要它时,只需从命令行输入cmds,您就会以可以快速阅读和理解的方式获得正确的语法。您可以根据自己的需要使这些功能尽可能先进,以获得所需的信息,这取决于您。您甚至可以使它们具有交互性,这样您只需按照提示操作即可。例如:

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

alias &#039;symlink&#039;=makesymlink
    • 显然它们都可以采用不同的参数,执行不同的操作,并且可以处理文件和目录......但前提是相同的

♦ - 使用 bash shell 的示例

解决方案 8:

在 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

解决方案 9:

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&amp;T UNIX.

解决方案 10:

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

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

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


Shell(bash、zsh 等)

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

非常简单,就像在命令行(即 shell)上执行的操作一样。所有错误处理均由 shell 解释器完成。此代码假设您有一个可正常工作的 shell 解释器/bin/sh

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

C 和 C++

#include &lt;unistd.h>
#include &lt;stdio.h>

int main () {
  if( symlink(&quot;/tmp/realfile&quot;, &quot;/tmp/link&quot;) != 0 )
    perror(&quot;Can&#039;t create the symlink&quot;);
}

symlink仅当可以创建链接时才返回 0。在其他情况下,我使用它perror来详细讲述问题。

Perl

#!/usr/bin/perl
if( symlink(&quot;/tmp/realfile&quot;, &quot;/tmp/link&quot;) != 1) {
  print STDERR &quot;Can&#039;t create the symlink: $!
&quot;
}

此代码假设您有一个 perl 5 解释器/usr/bin/perlsymlink仅当可以创建链接时才返回 1。在其他情况下,我会将失败原因打印到标准错误输出。

解决方案 11:

ln -s sourcepath linkpathname

笔记:

-s创建符号链接而不是硬链接

解决方案 12:

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

cd myfolder
ln -s target

它将在target内部创建符号链接myfolder

常规语法

ln -s TARGET LINK_NAME

解决方案 13:

我想提供一个更为通俗易懂的英语版本来描述已经提出的描述。

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

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

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

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

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

解决方案 14:

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

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

例如:

ln -s file1 link1

解决方案 15:

链接基本上有两种类型:

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

硬链接:链接到物理数据的具体位置。

示例 1:

ln /root/file1 /root/file2

以上是硬链接的一个例子,您可以在其中获得物理数据的副本。

示例 2:

ln -s /path/to/file1.txt /path/to/file2.txt

上述命令将创建到 file1.txt 的符号链接。

如果您删除源文件,那么软件中的目标文件将没有任何内容。

当你这样做时:

ls -lai

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

有关更多详细信息,您可以阅读 Linux 操作系统上的 ln 手册页。

解决方案 16:

有两种类型的链接:

符号链接:指向另一个文件的抽象位置的符号路径

硬链接:指物理数据的具体位置。

在您的情况下,符号链接:

ln -s source target

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

你可以创建太硬的链接

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

ln source link

解决方案 17:

我发现手册信息中的术语“目标”和“目录”有点令人困惑。

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

这是我对创建符号链接(在 Linux 中)的解释:

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

您可以导航到想要创建符号链接的文件夹并运行命令,或者为符号链接指定完整路径,而不是名称 - 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

我希望这对那些(仍然)有点困惑的人有所帮助。

解决方案 18:

如何在 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。local 表示链接名称(客户机中您要链接的文件夹名称),如果您需要删除符号链接:- 输入 sudo rm local

相关推荐
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   601  
  华为IPD与传统研发模式的8大差异在快速变化的商业环境中,产品研发模式的选择直接决定了企业的市场响应速度和竞争力。华为作为全球领先的通信技术解决方案供应商,其成功在很大程度上得益于对产品研发模式的持续创新。华为引入并深度定制的集成产品开发(IPD)体系,相较于传统的研发模式,展现出了显著的差异和优势。本文将详细探讨华为...
IPD流程是谁发明的   7  
  如何通过IPD流程缩短产品上市时间?在快速变化的市场环境中,产品上市时间成为企业竞争力的关键因素之一。集成产品开发(IPD, Integrated Product Development)作为一种先进的产品研发管理方法,通过其结构化的流程设计和跨部门协作机制,显著缩短了产品上市时间,提高了市场响应速度。本文将深入探讨如...
华为IPD流程   9  
  在项目管理领域,IPD(Integrated Product Development,集成产品开发)流程图是连接创意、设计与市场成功的桥梁。它不仅是一个视觉工具,更是一种战略思维方式的体现,帮助团队高效协同,确保产品按时、按质、按量推向市场。尽管IPD流程图可能初看之下显得错综复杂,但只需掌握几个关键点,你便能轻松驾驭...
IPD开发流程管理   8  
  在项目管理领域,集成产品开发(IPD)流程被视为提升产品上市速度、增强团队协作与创新能力的重要工具。然而,尽管IPD流程拥有诸多优势,其实施过程中仍可能遭遇多种挑战,导致项目失败。本文旨在深入探讨八个常见的IPD流程失败原因,并提出相应的解决方法,以帮助项目管理者规避风险,确保项目成功。缺乏明确的项目目标与战略对齐IP...
IPD流程图   8  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用