ln命令是Linux中的一个非常重要的命令,它为一个文件在另一位置创建同步链接,有两种:符号链接和硬链接。
【ln命令详解】ln [options] source dist
常用参数:
-f : 链接时先将与 dist 同名的文件删除
-d : 允许系统管理者硬链结自己的目录
-i : 在删除与 dist 同名的文件时先进行询问
-n : 在进行软链接时,将 dist 视为一般的文件
-s : 进行软链接(symbolic link)
-v : 在连结之前显示其档名
-b : 将在链结时会被覆写或删除的档案进行备份
一.符号链接(symbolic link):
只是在某一位置上对指定文件的一个镜像,是该文件的位置信息,会保持链接的同步性,可在不同的文件系统之间进行符号链接
1.先创建一个文本文件1.txt:touch命令创建一个空文本文件
2.创建1.txt的符号链接(软链接):
3.再查看:
该目录下多了2.txt而且是粗体。
这里看2.txt和1.txt的权限,以及大小。这时1.txt是空文本,而2.txt是有内容的
4.向1.txt中随便写入内容再查看:
注:1.txt与2.txt的inode号不同,因为2.txt是1.txt的符号链接,是1.txt的引用,2.txt中保存1.txt的位置信息,所以当1.txt为空时,2.txt仍有5个字节的大小,且当1.txt中由内容时,2.txt大小并不变。
linux系统通过inode来检索标识文件
2.txt文件类型是:符号链接文件,权限为:对所有用户都有读,写和执行的权限。
二.硬链接(hard link):
1.创建到1.txt到3.txt的硬链接:
注:1.txt与3.txt的inode相同,与符号链接不同。而且1.txt与3.txt大小文件权限属性相同,说明3.txt是1.txt的另一个名称(存在)。
2.readlink查看链接的目标文件:
3.改变2.txt为3.txt的链接文件:
创建到3.txt的符号链接2.txt,若该目录下有文件2.txt则覆盖
硬链接的两个限制:
1.不能创建到目录的硬链接
2.只有在同一个文件系统的文件之间才能创建硬链接
也可以对多个文件创建链接到某一目录:
ln -[f|n] [s] file1 dir1/file2 dir;会在dir目录下创建file1,file2两个链接文件
-f:若dir中已存在文件file1或file2,则会覆盖已存在文件,替换为要创建的文件
-n:若已存在目标路径,则系统报错,不会创建链接
三.链接产生的原因或链接存在的作用:
当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在其它的目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空间。而且在任何一个目录下改变该文件,都会在同步到其他目录下。