Linux常用命令学习(十六)ln命令

分类栏目:服务器

137

ln是Linux中一个重要的命令,用来生成链接文件,常用参数为-s用来创建软链接。在Linux中软链接是使用的比较多的,就像Windows中为什么要使用快捷方式一样,而硬链接则使用的相对较少。

ln命令是Linux中一个重要的命令,功能为为一个文件在不同的地方创建一个链接文件,链接文件分为硬链接(Hard Link)和符号链接(Symbolic Link)。符号链接也叫软链接,想当于Windows中的快捷方式。

【硬连接】
硬连接指通过索引节点来进行连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在Linux中,多个文件名指向同一索引节点是存在的。一般这种连接就是硬连接。硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。其原因如上所述,因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除。

硬连接的2个限制:

l)不允许给目录创建硬链接

2)只有在同一文件系统中的文件之间才能创建链接。 即不同硬盘分区上的两个文件之间不能够建立硬链接。这是因为硬链接是通过结点指向原始文件的,而文件的i-结点在不同的文件系统中可能会不同。

【软连接】
另外一种连接称之为符号连接(Symbolic Link),也叫软连接。软链接文件有类似于Windows的快捷方式。它实际上是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。

1)这就允许符号链接(经常简写为symlinks)指向位于其他分区、甚至是其他网络硬盘上的某个文件

命令名称

ln

命令原意

link

所在路径

/bin/ln

执行权限

所有用户

命令语法

ln [选项]... [-T] 目标 链接名(第一种格式)
或:ln [选项]... 目标(第二种格式)
或:ln [选项]... 目标... 目录(第三种格式)
或:ln [选项]... -t 目录 目标...(第四种格式)
在第一种格式中,创建指定名称且指向指定目标链接。
在第二种格式中,在当前目录创建指向目标位置的链接。
在第三、四种格式中,在指定目录中创建指向指定目标的链接。
默认创建硬链接,当使用--symbolic 时创建符号链接。
当创建硬链接时每个指定的目标都必须存在。符号链接可以指向任意的位置,
当链接解析正常时,将其解析为一个与其父目录关联的链接。

命令选项

长选项必须使用的参数对于短选项时也是必需使用的。
--backup[=CONTROL]:为每个已存在的目标文件创建备份文件
-b:类似--backup,但不接受任何参数
-d, -F, --directory:创建指向目录的硬链接(只适用于超级用户)
-f, --force:强行删除任何已存在的目标文件
-i, --interactive:删除文件前进行确认
-L, --logical:将硬链接创建为符号链接引用
-n, --no-dereference:如果目的地是一个链接至某目录的符号链接,会将该符号链接当作普通文件处理,先将该已存在的链接备份或删除
-s, --symbolic:创建符号链接而非硬链接
-S, --suffix=后缀:自行指定备份文件的后缀
-t, --target-directory=目录:在指定目录中创建链接
-T, --no-target-directory:将链接名称当作普通文件
-v, --verbose:链接前先列出每个文件的名称
--help:显示此帮助信息并退出
--version:显示版本信息并退出

功能描述

生成链接文件

命令实例

1、ln /etc/issue /tmp/issue.hard,创建硬链接

Linux常用命令学习(十六)ln命令

通过对比原文件和硬链接文件发现,所有的权限、时间信息、文件大小都一模一样。

不管是修改硬链接还是源文件,都会同步更新。硬链接功能相当于【cp -p + 同步更新功能】。如果删除源文件,硬链接文件照样可以访问,同理删除硬链接不会删除源文件。

不能在不同分区之间创建硬链接,会报错。如下:

Linux常用命令学习(十六)ln命令

2、ln -s /etc/issue /tmp/issue.soft,创建软链接

软链接

看上图中,第一字段以l开头,表明它是一个软链接文件,并且它的所有权限都是rwx,它的大小永远只有几个字节,并且用->指向了源文件。

如果删除源文件,访问软链接则会报没有文件或目录这个提示。

怎么区分是硬链接还是软链接

1软链接很好区分,例用ls -l命令,看它第一个字段第一位,l表示是一个链接文件,并且发现->指向了源文件,则表明它是一个软链接文件。

2、区分硬链接可以使用i节点来区分。硬链接的i节点和源文件的i节点是一样的。

注意:硬链接不能对目录使用。