ln命令是linux系统中的一个很重要的命令,使用ln命令可以方便我们对于文件的管理备份。这个命令的功能是为某一个文件在另外一个位置上建立一个不同的链接。ln链接分为两种,一种是硬连接,一种是软连接。
硬连接
硬连接的功能就是为同一件文件建立多个访问路径 。linux磁盘上的所有文件都有一个索引节点号(Innode index),在linux上可以使用硬连接将多个访问路径绑定到一个文件上,也就是这些路径访问相同的索引节点表示的文件,这样可以防止误删除重要的文件。既然多个路径都是可以访问该文件,那么删除一个文件路径会不会删除该文件呢?答案是不会!只用所有链接到该文件的链接都删除之后才会真正的删除该文件。
软连接
软连接相比较硬连接只是构建的时候多了一个参数 -s 。软连接类似于windows中快捷方式,当打开该文件的时候会链接到原来的文件上去。
语法
synatax:
- ln [OPITION] ... [-T] originSourceFile newLinkFile
- ln [OPITION] ... originSourceFile ...DIRECTORY
- ln [OPITION] ... -t DIRECTORY originalSourceFIle...
1.第一种表示给originSourceFile建立一个新的链接文件newLinkFile
2.第二种表示给originSourceFIle建立一个新的链接到目录DIRECTORY
3.第三种和第二种类似,只是参数的位置变反了。
【opition】参数说明:
-f ,--force 强制删除已有的目标文件
-i,--interactive 提示用户是否需要删除目标文件
-s , --symbolic 创建软连接
-b 在链接时被删除或者覆盖的文件进行备份
-t 指定链接文件将要被放置的目录位置
-T 指定newLinkFile是一个普通文件
-v 显示所有连接文件的名字
实例
- 分别新建一个文件的软连接和硬连接
root@iZuf64dhkm7u584izpppz6Z:~# vi hello.c
root@iZuf64dhkm7u584izpppz6Z:~# ln -s hello.c hello.soft
root@iZuf64dhkm7u584izpppz6Z:~# ln hello.c hello.hard
root@iZuf64dhkm7u584izpppz6Z:~# ls -ali hello*
显示结果:
2234290 -rw-r--r-- 2 root root 46 Feb 28 17:33 hello.c
2234290 -rw-r--r-- 2 root root 46 Feb 28 17:33 hello.hard
2234286 lrwxrwxrwx 1 root root 7 Feb 28 18:46 hello.soft -> hello.c
hello.c源文件和hello.hard硬连接的innode index相同,而hello.soft使用 ->表示连接到hello.c源文件上
2.删除源文件
root@iZuf64dhkm7u584izpppz6Z:~# rm -rf hello.c
分别查看硬连接和软连接:
root@iZuf64dhkm7u584izpppz6Z:~# cat hello.hard
#include <stdio.h>
int main(){
printf();
}
root@iZuf64dhkm7u584izpppz6Z:~# cat hello.soft
cat: hello.soft: No such file or directory
删除源文件之后,硬连接依然可以连接到原文件指向的文件。但是软连接已经失效了,无法连接到之前的文件了。
参考文档