简介
在Linux系统中,ln命令是一个非常有用的工具,用于创建链接(link),将一个文件或目录链接到另一个位置。链接允许一个文件或目录可以同时存在于多个位置,而不会占用额外的磁盘空间。ln命令支持创建硬链接和软链接两种类型的链接。本文将详细介绍Linux中ln命令的用法、语法以及两种链接类型的区别。
基本语法
ln
命令的基本语法如下:
ln [OPTION]... <target> <link_name>
参数说明
[OPTION]
:可选参数,用于指定额外的选项。<target>
:目标文件或目录的路径。即要链接的源文件或目录。<link_name>
:链接的名称,即创建的链接的文件名或目录名。
option常用参数
-s
:建立软链接文件。如果不加 "-s" 选项,则建立硬链接文件-f
:强制。如果目标文件已经存在,则删除目标文件后再建立链接文件-i
:在创建链接之前进行交互式确认-n
:把符号链接视为普通文件-v
:显示详细的输出信息
创建硬链接
要创建一个硬链接,只需在ln
命令后面跟上目标文件或目录的路径以及链接的名称。硬链接会在文件系统中创建一个新的目录项,并与目标文件或目录共享相同的inode(文件索引节点)和数据块。
示例:
我们有一个文件fruits.txt
,我们要在当前目录下创建一个名为hard_link.txt
的硬链接:
muller@ubuntu:~/demo$ ls
awk.sh fruits.txt number.txt player.txt text.txt
muller@ubuntu:~/demo$ ln fruits.txt hard_link.txt
muller@ubuntu:~/demo$ ls
awk.sh fruits.txt hard_link.txt number.txt player.txt text.txt
muller@ubuntu:~/demo$ cat hard_link.txt
apple
APPLE
banana
BANANA
ORANGE
orange
grape
Grape
good
Good
apple
orange
orange
orange
注:硬链接不能链接目录,只能链接文件。如果尝试使用ln命令链接目录,会出现错误信息。如下图:
创建软链接
软链接是一个特殊的文件,它包含了指向另一个文件或目录的路径。创建软链接需要使用ln
命令,并加上-s
选项。
示例
- 创建文件软链接
我们有一个文件fruits.txt
,我们要在当前目录下创建一个名为soft_link.txt
的软链接:
muller@ubuntu:~/demo$ ln -s fruits.txt soft_link.txt
muller@ubuntu:~/demo$ ls
awk.sh fruits.txt hard_link.txt number.txt player.txt soft_link.txt text.txt
muller@ubuntu:~/demo$ cat soft_link.txt
apple
APPLE
banana
BANANA
ORANGE
orange
grape
Grape
good
Good
apple
orange
orange
orange
- 创建目录软链接
我们在当前目录下,创建salah
目录的软链接,名为soft_link
muller@ubuntu:~/salah$ ln -s /home/muller/salah /home/muller/soft_link
muller@ubuntu:~$ ls
demo Desktop Documents Downloads Music Pictures Public salah snap soft_link Templates Videos
muller@ubuntu:~$ ls -l
total 44
drwxrwxr-x 2 muller muller 4096 Jul 23 16:20 demo
drwxr-xr-x 2 muller muller 4096 Jul 20 16:04 Desktop
drwxr-xr-x 2 muller muller 4096 Jul 20 16:04 Documents
drwxr-xr-x 2 muller muller 4096 Jul 20 18:19 Downloads
drwxr-xr-x 2 muller muller 4096 Jul 20 16:04 Music
drwxr-xr-x 2 muller muller 4096 Jul 20 16:04 Pictures
drwxr-xr-x 2 muller muller 4096 Jul 20 16:04 Public
drwxrwxr-x 2 muller muller 4096 Jul 23 16:30 salah
drwx------ 4 muller muller 4096 Jul 20 16:59 snap
lrwxrwxrwx 1 muller muller 18 Jul 23 16:49 soft_link -> /home/muller/salah
drwxr-xr-x 2 muller muller 4096 Jul 20 16:04 Templates
drwxr-xr-x 2 muller muller 4096 Jul 20 16:04 Videos
我们也可以看到,软链接指向了/home/muller/salah
目录。
注:创建目录软链接时,源文件必须写绝对路径
软链接与硬链接的区别
软链接和硬链接是两种不同类型的链接,它们有以下区别:
- 链接类型:软链接是一个指向目标的快捷方式,而硬链接是共享相同数据块和inode的文件副本。
- 跨文件系统:软链接可以跨越文件系统进行链接,而硬链接不能。
- 链接目录:软链接可以链接目录,而硬链接不能。
- 原文件删除后:软链接在原文件被删除后会失效,成为“断链”,而硬链接仍然可以访问数据,只有当所有硬链接和原文件都被删除后,磁盘空间才会释放。
总结
ln
命令是Linux系统中用于创建硬链接和软链接的重要工具。硬链接与原文件共享相同的inode和数据块,效率高,但不能跨文件系统链接和链接目录;而软链接是一个指向目标的快捷方式,允许跨文件系统链接和链接目录,但效率较低。在使用ln
命令时,根据需求选择合适的链接类型,从而更好地管理文件和目录,并提高系统的灵活性和可维护性。