linux命令之 ln


ln命令的功能是为某一个文件在另一个位置建立一个同步的链接.链接类型分为硬链接和符号链接(软链接),默认是硬链接,如果要创建符号链接就必须使用-s选项

符号链接文件是一个独立的文件,但是它的许多属性依赖于源文件,所以给你符号链接文件设置权限是没有意义的

当我们在不同的目录用到相同的文件时,不需要在每一个目录放置一个文件,我们只需要在一个固定的目录放上该文件,然后在其他目录用ln命令创建链接就可以了

语法

ln [选项] 参数

选项

  • -s 创建符号链接(软链接)
  • -f,--force 强制建立文件或者目录的链接,不论文件或目录是否存在
  • -v,--verbose 显示命令的处理过程
常用的就这几个,具体的可以查看帮助 ln --help或者 man ln

参数

  • 源文件:指定链接的的源文件,如果使用-s创建软链接,则源文件可以是目录或文件;创建硬链接的时,则源文件参数只能是文件
  • 目标文件:指定源文件链接的目标文件

实例

  1. 将在/usr/python/bin/python3 执行文件软链接到 /usr/bin/python3文件上

    ln -s /usr/python/bin/python3 /usr/bin/python3

    使用该方法,可以在系统中安装多个python版本

  2. 将目录/usr/mengqc/mub1下的文件m2.c链接到目录/usr/liu下的文件a2.c

    ln /usr/mengqc/mub1/m2.c /usr/liu/a2.c

    在执行ln命令之前,目录/usr/liu中不存在a2.c文件。执行ln之后,在/usr/liu目录中才有a2.c这一项,表明m2.ca2.c链接起来(注意,二者在物理上是同一文件,指向硬盘的同一位置),利用ls -l命令可以看到链接数的变化

  3. 在目录/usr/liu下建立一个符号链接文件abc,使它指向目录/usr/mengqc/mub1

    ln -s /usr/mengqc/mub1 /usr/liu/abc

    执行该命令后,/usr/mengqc/mub1代表的路径将存放在名为/usr/liu/abc的文件中

硬链接和软链接的区别

  • 硬链接

    创建硬链接后,己经存在的文件的I节点号(Inode)会被多个目录文件项使用。一个文件的硬链接数可以在目录的长列表格式(ls -l)的第二列中看到,无额外链接的文件的链接数为1

    在默认情况下,ln命令创建硬链接。ln命令会增加链接数,rm命令会减少链接数.一个文件除非链接数为0,否则不会从文件系统中被物理地删除

    限制:

    1. 不能对目录做硬链接
    2. 只有在同一个文件系统中才能创建
    
  • 软链接

    软链接,是将一个路径名链接到一个文件.这些文件是一种特别类型的文件。事实上,它只是一个文本文件,其中包含它提供链接的另一个文件的路径名,另一个文件是实际包含所有数据的文件.所有读、写文件内容的命令被用于符号链接时,将沿着链接方向前进来访问实际的文件

    与硬链接不同的是,软链接确实是一个新文件,当然它具有不同的I节点号;而硬链接并没有建立新文件

    软链接没有硬链接的限制,可以对目录文件做符号链接,也可以在不同文件系统之间做软链接

    特点:

    1. 删除源文件或目录,只删除了数据,不会删除链接。一旦以同样文件名创建了源文件,链接将继续指向该文件的新数据
    2. 在目录长列表(`ls -l`)中,符号链接作为一种特殊的文件类型显示出来,其第一个字母是`l`
    3. 符号链接的大小是其链接文件的路径名中的字节数   
    

图片描述

图片描述

扫描关注,查看更多文章,提高编程能力


一步
1.7k 声望407 粉丝