ln 指令 link file

ln 指令 link file

Linux ln(英文全拼:link files)命令是一个非常重要命令,它的功能是为某一个文件在另外一个位置建立一个同步的链接。

当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在其它的目录下用 ln 命令链接(link)它就可以,不必重复的占用磁盘空间。一个比较实际的场景就是 /lib/ 目录下的动态链接文件,别的地方经常通过软链接使用这些动态链接文件。不过要注意:不管是软链接和硬链接,都是源文件的链接,对链接的操作都是对源文件的操作。

在 Unix 世界里有两个 'link'(链接)概念,一般称之为硬链接和软链接(也叫符号链接)。

简单归纳:

软链接:

  1. 软链接,以路径的形式存在。类似于 Windows 操作系统中的快捷方式

  2. 软链接可以跨文件系统,硬链接不可以

  3. 软链接可以对一个不存在的文件名进行链接

  4. 软链接可以对目录进行链接

硬链接:

  1. 不允许给目录创建硬链接

  2. 硬链接只有在同一个文件系统中才能创建


ln [options] source [dest]
ln [options] source...directory

创建硬链接:

ln ccc.txt ccc-ln.txt:可以看到两个文件类型都是普通文件

创建软链接:

ln -s bbb.txt bbb-s-ln.txt:可以看到链接的文件类型是 l,也就是链接文件,跟 find-type 参数吻合,跟 ll 的输出结果的第一列也吻合

注意,在 ls -l 的查询结果中:

一般 ls -l 结果中 find-type 参数中的链接文件类型,指的都只是软链接,而不是硬链接,硬链接就是普通文件


注意:不能创建目录的硬链接

可以创建目录的软链接

软链接其实就是文件,删除直接用 rm 即可,注意,不管链接指向文件还是目录,链接都是文件,rm 直接删除即可,不需要带 -r


如果仅仅只给出一个文件名,报错;

如果最后一个参数是一个已存在的目录名,ln 将在那个目录里给每一个源文件(源文件可以有多个)用以与源文件相同的文件名产生链接,

如果只给出两个文件名,ln 将产生源文件的链接;

如果最后一个参数不是一个目录名或多于两个文件名,则报错。


硬链接和软链接的不同的更深层次的理解: