如何在 Linux 中符号链接文件?[关闭]
- 2024-09-30 15:23:00
- admin 原创
- 85
问题描述:
我想在 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 <- 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)
解决方案 6:
ln -s source_file target_file
http://unixhelp.ed.ac.uk/CGI/man-cgi?ln
解决方案 7:
对于最初的问题:
'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 [选项]...[-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 "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 的示例
解决方案 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&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 <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: $!
"
}
此代码假设您有一个 perl 5 解释器/usr/bin/perl
。symlink
仅当可以创建链接时才返回 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 中创建符号链接。步骤:
在 vagrant 文件中创建一个同步文件夹。例如 config.vm.synced_folder "F:/Sunburst/source/sunburst/lms", "/source" F:/Sunburst/source/sunburst/lms :- 源代码所在位置,/source :- vagrant 内的目录路径
Vagrant up 并输入 vagrant ssh 并转到源目录,例如 cd source
验证源代码文件夹结构是否在源目录中可用。例如 /source/local
然后进入与浏览器关联的文件所在的客户机目录。获取文件备份后。例如 sudo mv local local_bk
然后创建符号链接,例如 sudo ln -s /source/local local。local 表示链接名称(客户机中您要链接的文件夹名称),如果您需要删除符号链接:- 输入 sudo rm local
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理必备:盘点2024年13款好用的项目管理软件