Linux 链接

首先Linux链接大体上分为2种,硬链接(Hard Link)和符号链接(Symbolic Link),后者大家更喜欢称之为软链接。

硬链接

硬连接指通过索引节点来进行连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在Linux中,多个文件名指向同一索引节点,一般这种连接就是硬连接。

一个硬连接仅仅是一个文件名。(一个文件可以有好几个文件名,只有将最后一个文件名从磁盘上删除,才能把这个文件删掉。

软链接

符号链接文件有类似于Windows的快捷方式。它实际上是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。

因此,软连接可以指向不同文件系统里的文件(比如由NFS装载的不同机器文件系统上的文件),甚至可以指向一个不一定确实存在的文件。在软连接文件被访问的时候,操作系统用该文件所包含的路径替换该文件的访问介入点,从而实现对所指文件的访问。(用命令rm和unlink可以删除连接,但不是删除该文件所指向的文件。

语法

Usage: ln [OPTION]... [-T] TARGET LINK_NAME   (1st form)
or: ln [OPTION]... TARGET (2nd form)
or: ln [OPTION]... TARGET... DIRECTORY (3rd form)
or: ln [OPTION]... -t DIRECTORY TARGET... (4th form)

解释

  • 第一行,创建一个指向目标的链接,并指定路径和名字。
  • 第二行,创建一个指向目标的链接,使用原来的名字,并存放在当前目录中。
  • 第三行,创建一个指向目标的链接,使用原来的名字,并存放到指定的目录中。
  • 第四行,创建一个指向目标的链接,使用原来的名字,并存放到指定的目录中,和上面一样,只是参数位置有变化。

参数

  • -s:symbolic的缩写,建立符号连接以替代硬连接。 在不支持符号连接的系统上,这个选项仅仅会产生一个错误提示而已。
  • -d, -F:directory的缩写,允许超级用户试图硬链接目录(注:可能会失败,由于系统的限制,即使是超级用户)
  • //TODO其它参数太多了,日后用到再补

示例

vi hello.sh
# 输入 echo hello,然后保存退出

# 创建一个硬链接和一个软连接
ln hello.sh h.sh
ln -s hello.sh s.sh

#查看当前目录

ls -li
399218 -rw-r--r-- 2 admin root 11 Jul 19 17:56 hello.sh
399218 -rw-r--r-- 2 admin root 11 Jul 19 17:56 h.sh
398236 lrwxrwxrwx 1 admin root 8 Jul 19 17:57 s.sh -> hello.sh

#从上面的结果中可以看出,
#硬连接文件h.sh与原文件hello.sh的inode节点相同,均为399218,
#然而软连接文件的inode节点不同,并输出了指向的目标。
分享到