linuxran命令 linux 命令详解( 二 )


在Unix世界里有两个’link’(连接)概念 , 一般称之为硬连接和软连接 。一个硬
连接仅仅是一个文件名 。(一个文件可以有好几个文件名,只有将 最后一个文件
名从磁盘上删除,才能把这个文件删掉 。文件名的个数是由 ls(1)来确定的 。所
有的文件名都处于同一个状态,也就没有什么源名字 之说 。通常文件系统里的一
个文件的所有名字包含着一样的数据信息,不 过这样也不是必需的 。)一个软连
接(或符号连接)是完全不同的:它是 一个包含了路径信息的小小的指定文件 。
因此,软连接可以指向不同文件 系统里的文件(比如由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建立目录的硬连接(但是允许在不同的文件系统间建立硬连接) 。
POSIX 选项
-f删除已存在的目的文件 。
GNU 选项
-d, -F, --directory
允许超级用户建立目录硬连接 。
-f, --force
删除已存在的目的文件 。
-i, --interactive
提示是否删除已存在的目的文件 。
-n, --no-dereference
当所给出的目的文件名是一个目录的符号连接时,将其视为一般文件处理

当目的目录名是一个确实存在的目录(不是一个符号连接)时,不进行模
糊处理 , 而在那个目录里建立连接 。但是当所指定的目的目录名是一个符
号连接时,有两种方式来对待用户的要求 。ln 会视目的为一个普通目录
,并且在里面建立连接 。或者如同符号连接本身一样地视其为一个非目录
。这种情况下 , ln 将在建立新连接之前删除或备份这个符号连接 。缺省
地,把符号连接视为普通目录来对待 。
-s, --symbolic
建立符号连接以替代硬连接 。在不支持符号连接的系统上 , 这个选项仅仅
会产生一个错误提示而已 。
-v, --verbose
在建立连接前显示所操作的文件名 。
GNU 备份选项
对 于 想备份那些有可能被覆盖、改写或者被破坏的文件,GNU提供了比如:cp,

推荐阅读