Linux中使用ln命令在文件之间建立连接的用法讲解ln文件链接命令




Linux中使用ln命令在文件之间建立连接的用法讲解ln文件链接命令

2022-07-20 20:24:52 网络知识 官方管理员

在Unix世界里有两个'link'(连接)概念,一般称之为硬连接和软连接。一个硬连接仅仅是一个文件名。(一个文件可以有好几个文件名,只有将最后一个文件名从磁盘上删除,才能把这个文件删掉。文件名的个数是由ls(1)来确定的。所有的文件名都处于同一个状态,也就没有什么lq源名字rq之说。通常文件系统里的一个文件的所有名字包含着一样的数据信息,不过这样也不是必需的。)一个软连接(或符号连接)是完全不同的:它是一个包含了路径信息的小小的指定文件。因此,软连接可以指向不同文件系统里的文件(比如由NFS装载的不同机器文件系统上的文件),甚至可以指向一个不一定确实存在的文件。在软连接文件被访问(系统调用open(2)或stat(2))的时候,操作系统用该文件所包含的路径替换该文件的访问介入点,从而实现对所指文件的访问。(用命令rm(1)和unlink(2)可以删除连接,但不是删除该文件所指向的文件。系统指定调用lstat(2)和readlink(2)来读取连接文件与其所指文件的状态。到底是对软连接文件操作,还是对被指向文件操作,由于不同操作系统件存在不同的系统调用,而存在着差异。)

ln在文件间产生连接。缺省时,产生硬连接,有-s选项,则产生符号(软)连接。

如果仅仅只给出一个文件名,那么ln将在当前目录里产生这个文件的连接,也就是说,以该文件(的最后一个)名称等同的名字在当前目录里产生一个连接(GNU范围内);如果最后一个参数是一个已存在的目录名,ln将在那个目录里给每一个源文件用以与源文件相同的文件名产生连接,(不同情况见以下--no-dereference的描述);如果只给出两个文件名,ln将产生源文件的连接;如果最后一个参数不是一个目录名或多于两个文件名,则报错。

缺省时,ln不删除已存在的文件或符号连接。(因此,它可以被用来锁定目标文件,即当dest已经不存在时)但选项-f可以强制执行。

在已存在的实现中,只有超级用户才能建立目录的硬连接。POSIX禁止系统调用link(2)和ln建立目录的硬连接(但是允许在不同的文件系统间建立硬连接)。

使用方式:ln[options]sourcedist,其中option的格式为:
[-bdfinsvF][-Sbackup-suffix][-V{numbered,existing,simple}][--help][--version][--]

说明:Linux/Unix档案系统中,有所谓的连结(link),我们可以将其视为档案的别名,而连结又可分为两种:硬连结(hardlink)与软连结(symboliclink),硬连结的意思是一个档案可以有多个名称,而软连结的方式则是产生一个特殊的档案,该档案的内容是指向另一个档案的位置。硬连结是存在同一个档案系统中,而软连结却可以跨越不同的档案系统。
lnsourcedist是产生一个连结(dist)到source,至于使用硬连结或软链结则由参数决定。
不论是硬连结或软链结都不会将原本的档案复制一份,只会占用非常少量的磁碟空间。

-f:链结时先将与dist同档名的档案删除
-d:允许系统管理者硬链结自己的目录
-i:在删除与dist同档名的档案时先进行询问
-n:在进行软连结时,将dist视为一般的档案
-s:进行软链结(symboliclink)
-v:在连结之前显示其档名
-b:将在链结时会被覆写或删除的档案进行备份
-SSUFFIX:将备份的档案都加上SUFFIX的字尾
-VMETHOD:指定备份的方式
--help:显示辅助说明
--version:显示版本

注意:
如果不使用-s标志,就不能在文件系统之间链接文件。
如果TargetDirectory已经是链接到目录上的一个符号链接,那么ln命令将现有的目标视为文件。这意味着,类似于ln-fssomepath/lnamesymdir的命令不会遵循现有的symdir符号链接,作为代替,它会创建一个从somepath/lname到symdir的新的符号链接。

退出状态
此命令返回以下的退出值:
0所有指定的文件都成功链接上了。
>0出现一次错误。

例:

复制代码

发表评论:

最近发表
网站分类
标签列表