如何使用ln命令在Linux中创建符号链接
符号链接通常称为软链接或者符号链接,这是一种引用另一个文件或者目录的特殊类型。
在本教程中,我们将学习如何使用LN命令在Linux中创建符号链接来在文件之间进行链接。
链接类型
在Linux中,我们有2种类型的链接:软链接和硬链接。
硬链接:硬链接是原始文件的副本。
它可以访问目标文件中的数据。
用户无法为文件创建目录的硬链接。
此外,硬链接文件具有常见的inode号码。
删除或者删除原始文件时,硬链接将继续工作,并将包含删除文件的内容。
值得注意的是,硬链接不会跨越不同的文件系统。
软链接:与硬链接不同,软链接仅是指向文件名的指针,不包含另一个文件的内容或者正在引用的目标文件。
如果删除或者删除目标文件,则软链接不再存在。
软链接的良好方面是它们可用于链接到文件或者目录,它们可以跨越不同的文件系统。
如何使用ln命令
LN命令用于在文件之间进行链接。
默认情况下,命令创建硬链接。
要创建软链接,只需添加-s选项(--symbolic)。
语法:
ln [OPTION] TARGET LINK_NAME
为避免混淆,在创建符号链接时使用源和目标文件的绝对路径(相对路径)。
如何创建到文件的符号链接
要创建文件的符号链接,请运行以下命令:
$ln -s { OPTIONS } file symlink
当文件和Symlink都定义时,LN命令从文件中创建一个链接,该链接是第二个参数符号链接中定义的文件的第一个参数。
例如,要创建文件的符号链接,请使用语法,
$ln -s original_file symlink
注意:LN返回成功的输出。
在命令中,将原始文件替换为我们想要创建符号链接的符号链接和符号链接的现有文件。
让我们有一个真实的例子:
$ln -s file1.txt sample_link.txt
上面的命令创建一个名为"sample_link.txt"的符号链接到当前目录中的现有文件'file1.txt'。
要验证链接的创建,只需使用LS命令,如图所示:
$ls -l sample_link.txt
输出应该类似于我以下的内容:
lrwxrwxrwx 1 winnie winnie 9 May 12 23:43 sample_link.txt -> file1.txt
在权限中,l
标志表示这是一个符号链接,并且字符>
表示symlink指向文件file1.txt
。
有时符号链接由于路径问题而不起作用,建议使用完整路径:
# absolute (full path) ln -s /path/to/originals/originalfile1.txt backup/copy.txt # relative cd backup ln -s ../originals/originalfile1.txt copy.txt
如何创建指向目录的符号链接
创建到目录的符号链接与创建一个文件一样简单。
语法仍然很大程度上是相同的。
第一个参数采用目录的名称,同时将符号链接指定为第二个参数。
以下语法是我们如何实现的例子:
$ln -s /path/to/directory ~/directory
例如,要从目录/下载/music/to~/my_music运行命令的符号链接:
$ln -s /Downloads/music ~/my_music
如何覆盖符号链接
通过简单地调用LN命令,覆盖符号链接而没有任何其他参数,将始终为我们提供错误,如下所示:
例如,如果我们尝试再次运行以下命令:
$ln -s file1.txt sample_link.txt
我们将显示显示错误:
ln: failed to create symbolic link 'sample_link.txt': File exists
此问题的解决方法是介绍另一个选项-f或者--force以覆盖Symlink的目标路径,如图所示:
$ln -sf file1.txt sample_link.txt
这次,覆盖软链接不会产生任何错误。
如何删除符号链接
要摆脱Linux或者Symlinks的符号链接,可以使用RM命令或者Unlink命令。
而且很容易。
有关Unlink命令,请使用下面的语法删除Symlinks:
$unlink symlink_to_be_removed
使用RM命令删除软链接与删除或者删除常规文件时的软链接相同:
$rm symlink_to_be_removed
符号链接很重要吗?
如果要实现以下任何一项,则创建对文件的符号链接通常是一个好主意:
- 可以从多个位置访问文件,而无需创建重复的副本,该副本必须占用大量磁盘空间。
- 如果要保留文件的原始版本并确保链接指向最新版本的文件。这是作用,因为即使在使用具有相同文件名的不同文件替换文件后,Symlink仍然仍然是活动的。
Linux程序使用符号链接作为别名,以便用户不必知道所使用的代码版本。
# which python /usr/bin/python # ls -l /usr/bin/python lrwxrwxrwx. 1 root root 7 Nov 21 13:38 /usr/bin/python -> python2