Answers:
要创建新的符号链接(如果符号链接已存在,将失败):
ln -s /path/to/file /path/to/symlink
要创建或更新符号链接:
ln -sf /path/to/file /path/to/symlink
ln
语法类似于cp
语法,例如source destination。
cp
是CoPy
,ln
是LiNk
。第一个和第三个字母。
ln -s TARGET LINK_NAME
哪里-s
使它具有象征意义。
unlink LINK_NAME
ln -s where-the-symlink-should-point where-to-place-the-symlink-itself
。
rm
,但大多数人不知道删除尾随的符号/
。
ln -s EXISTING_FILE_OR_DIRECTORY SYMLINK_NAME
(因为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)
dired
,将光标放在目标上,按S
,然后键入要在其中创建链接的目录,这非常容易。缩短了想像的结果与打字之间的距离。参见gnu.org/software/emacs/manual/html_node/emacs/…。
对于原始问题:
'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 [OPTION] ... [-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
*-很明显,它们都可以采用不同的参数并做不同的事情,并且可以在文件和目录上工作...但是前提是相同的
-使用bash shell的示例
打开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
ln -s sourcepath linkpathname
注意:
-s进行符号链接而不是硬链接
这是堆栈溢出,所以我假设您需要代码:
以下所有代码均假定您要创建一个符号链接/tmp/link
,该符号链接指向/tmp/realfile
。
注意:尽管此代码检查错误,但不检查是否/tmp/realfile
实际存在!这是因为无效链接仍然有效,并且根据您的代码,您可能(很少)要在真实文件之前创建链接。
#!/bin/sh
ln -s /tmp/realfile /tmp/link
真的很简单,就像您在命令行(这是外壳程序)上一样。所有错误处理均由外壳解释器完成。此代码假定您在以下位置具有有效的Shell解释器/bin/sh
。
如果需要,您仍然可以使用来实现自己的错误处理 $?
变量来只有成功创建链接后,变量才会设置为0。
#include <unistd.h>
#include <stdio.h>
int main () {
if( symlink("/tmp/realfile", "/tmp/link") != 0 )
perror("Can't create the symlink");
}
symlink
可以创建链接时仅返回0。在其他情况下,我正在使用perror
会讲更多有关该问题的信息。
#!/usr/bin/perl
if( symlink("/tmp/realfile", "/tmp/link") != 1) {
print STDERR "Can't create the symlink: $!\n"
}
此代码假定您在处有一个perl 5解释器/usr/bin/perl
。symlink
如果可以创建链接,则仅返回1。在其他情况下,我会将失败原因打印到标准错误输出。
我想介绍一下已经描述过的普通英语版本。
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
标准文件信息的内容位于左侧(尽管请注意,第一个字符是“ link”的“ l”);文件名是“ a:”,“->”也表示文件是链接。它基本上告诉WINE Windows如何将Linux“驱动器A:”与软盘驱动器关联。实际创建一个与此类似的符号链接(在当前目录中,并且为WINE实际执行此操作更复杂;请使用“ winecfg”实用程序):
ln -s /mnt/floppy a: //will not work if file a: already exists
链接有两种类型:
符号链接:引用符号路径,该路径指示另一个文件的抽象位置
硬链接:是指物理数据的特定位置。
就您而言,符号链接:
ln -s source target
您可以参考http://man7.org/linux/man-pages/man7/symlink.7.html
您可以创建太硬的链接
与文件的硬链接与原始目录条目没有区别。对文件的任何更改实际上都独立于用于引用文件的名称。硬链接通常可能不指向目录,并且可能不会跨越文件系统。
ln source link
链接基本上有两种类型:
符号链接(软):指向符号路径的链接,该路径指示另一个文件的抽象位置
硬链接:链接到物理数据的特定位置。
范例1:
ln /root/file1 /root/file2
上面是硬链接的示例,您可以在其中拥有物理数据的副本。
范例2:
ln -s /path/to/file1.txt /path/to/file2.txt
上面的命令将创建一个指向file1.txt的符号链接。
如果删除源文件,则目标软件中将没有任何内容。
当您这样做时:
ls -lai
您会看到符号链接有一个不同的inode编号。
有关更多详细信息,请阅读Linux操作系统上ln的手册页。
hard link where you can have a copy of your physical data
-我认为我们不会创建物理数据的副本。相同物理数据的另一个名称。
我发现手册信息中的“目标”和“目录”术语有些混乱。
目标是我们符号链接到的文件夹以及实际符号链接的目录(而不是您将要符号链接的目录),如果有人遇到相同的困惑,请不要感到孤独。
这是我对创建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
我希望这有助于那些(仍然)有些困惑的人。
如何在无业游民中创建符号链接。脚步: