Linux—ln(link files)命令使用方法
在 Linux 系统中工作时,需要在不同的目录中使用相同的文件时,不必在每个目录下都复制一份文件,这样不仅浪费磁盘空间,还会导致文件管理上的混乱。
ln
(link files) 便是 Linux 中用于创建链接(也称为快捷方式)的命令。 使用 ln 命令创建链接是一种高效且节省空间的方法。
ln
命令可以实现—将文件放在一个固定的目录中,然后在其他目录下创建指向该文件的链接。
链接link可以分为两种类型:硬链接(hard link)和软链接(symbolic link 或者 soft link)。
一、硬链接 (Hard Link)
定义:
- 硬链接(
hard link
)是指向同一个文件系统中的同一个 inode 的多个文件名。(注意哈:同一文件系统!!! A hardlink can only work on the same filesystem.🤣🤣🤣) - 每个文件在Linux系统中都有一个inode,包含了文件的所有信息(除了文件名和数据)。
-
每个硬链接(Hard Link)都是文件的一个独立入口点,它们共享相同的数据块。
-
创建一个硬链接时,实际上是为这个inode创建了一个新的入口点。
- Hardlink has the same inode number and permissions of original file.
- 即使原始文件被删除,只要还有一个硬链接存在,文件的数据就仍然可以访问。
- Hard Link Demo:
Hard Link 特性:
- 共享数据:所有硬链接都指向同一个文件内容,对任何一个硬链接进行修改,其他硬链接也会看到这些更改。
- 删除原文件:删除原文件不会影响其他硬链接,硬链接是平等的,没有所谓的“原文件”,只要还有一个硬链接存在,文件的数据就仍然可以访问。
- 限制:硬链接不能跨文件系统创建,也不能为目录创建硬链接。(记住哈:hard link— 必须同一文件系统 + no 目录🤣🤣🤣)
二、软链接 (Symbolic Link 或 Soft Link)
定义:
- 软链接是一个特殊的文件,其中包含指向另一个文件或目录的路径。
- 软链接本身是一个独立的文件,只是其内容是指向另一个文件或目录的路径。
- Softlink has different inode number and file permissions than original file.
- Softlink Demo:
Soft link特性:
- 独立性:软链接是一个独立的文件,即使原始文件被删除,软链接仍然存在,但会变成无效链接(称为“断链”)。
- 跨文件系统:软链接可以跨文件系统创建,也可以指向目录。
- 路径:软链接可以使用绝对路径或相对路径。
三、创建、删除link语法
3.1 硬链接
ln [选项] 目标文件 链接文件
-f
或--force
:如果目标文件已经存在,则先删除再创建链接。-i
:在删除已存在的目标文件前提示用户。-v
或--verbose
:显示详细的处理信息。
- 创建硬链接(可以相对路径 也可绝对路径哈🤣🤣🤣):
已有文件 /home/user/documents/report.txt
,在 /home/user/backup
目录下创建一个硬链接 report_link.txt
:
ln /home/user/documents/report.txt /home/user/backup/report_link.txt
-
强制创建硬链接(如果目标文件已存在则替换):
ln -f /home/user/documents/report.txt /home/user/backup/report_link.txt
-
创建硬链接并显示详细信息:
ln -v /home/user/documents/report.txt /home/user/backup/report_link.txt
重要的事情说三遍🤣🤣🤣:
- 硬链接必须在同一个文件系统内:硬链接不能跨文件系统创建。
- 硬链接不能指向目录:只能为普通文件创建硬链接。
- 硬链接是平等的:所有硬链接都指向同一个 inode,因此删除任意一个硬链接都不会影响其他硬链接或原始文件。
Tips:可以使用 ls -i
命令查看文件的 inode
号,从而确认两个文件是否为硬链接:
如果两个文件的 inode 号相同,那么它们就是硬链接。
3.2 软链接
ln -s [选项] 目标文件 链接文件
-f
或--force
:如果目标文件已经存在,则先删除再创建链接。-i
:在删除已存在的目标文件前提示用户。-v
或--verbose
:显示详细的处理信息。
- 创建软链接:
/home/user/documents/report.txt
,在 /home/user/backup
目录下创建一个软链接 report_symlink.txt
:
ln -s /home/user/documents/report.txt /home/user/backup/report_symlink.txt
-
强制创建软链接(如果目标文件已存在则替换):
ln -sf /home/user/documents/report.txt /home/user/backup/report_symlink.txt
-
创建软链接并显示详细信息:
ln -sv /home/user/documents/report.txt /home/user/backup/report_symlink.txt
重要的事情说三遍🤣🤣🤣:
- 软链接可以跨文件系统:符号链接可以指向不同文件系统中的文件或目录。
- 软链接可以指向目录:不仅可以为文件创建软链接,还可以为目录创建软链接。
- 软链接的路径:可以使用绝对路径或相对路径。相对路径是相对于软链接所在目录的路径。
Tips:可以使用 ls -l
命令查看文件的详细信息,从而确认是否为软链接及其指向的目标:
ls -l /home/user/backup/report_symlink.txt
lrwxrwxrwx 1 user user 27 Oct 25 14:30 /home/user/backup/report_symlink.txt -> /home/user/documents/report.txt
l
表示这是一个符号链接,->
后面的部分表示链接指向的目标文件。
3.3 删除link
使用 rm
命令
rm
是一个通用的删除命令,可以用来删除文件、目录和链接。对于删除链接,rm
命令是最常用的。
语法:
rm [选项] 链接路径
删除符号链接 symlink.txt
和一个硬链接 hardlink.txt
:
rm symlink.txt
rm hardlink.txt
使用 unlink
命令
unlink
命令专门用于删除链接。它的功能与 rm
命令类似,但更专注于删除单个文件或链接。
unlink 链接路径
unlink symlink.txt
unlink hardlink.txt
-
通用性:
rm
是一个更通用的命令,可以删除文件、目录和链接。unlink
专门用于删除单个文件或链接。
-
交互性:
rm
命令提供了更多的选项,例如-i
选项可以在删除前提示用户确认。unlink
命令没有这些额外的选项,它只是一个简单的删除操作。
-
安全性:
- 使用
rm
时,可以通过-i
选项增加安全性,防止误删文件。 unlink
没有这种选项,因此在使用时需要更加小心。
- 使用
- 推荐使用
rm
命令,因为它更常用,功能更丰富,尤其是在需要增加安全性的场景下。 - 如果只需要简单地删除一个链接,可以使用
unlink
命令。
tips:无论使用哪个命令,删除链接后,链接文件本身会被移除,但硬链接对应的原始文件不会受到影响(除非这是最后一个硬链接)。对于符号链接,删除后只会移除链接文件,不会影响原始文件。
Link Tips:
- 节省磁盘空间:无论是硬链接还是软链接,都不会复制原文件的内容,只占用非常少量的磁盘空间。
- 易于维护:只需要在一个地方更新文件,所有链接都会自动反映这些更改。
- 灵活性:软链接特别灵活,可以跨文件系统创建,也可以指向目录。