关注「开源Linux」,选择“设为星标”

回复「学习」,有我为您特别筛选的学习资料~

前言

在Windows系统中,快捷方式是指向原始文件的一个链接文件,原文件一旦被删除或剪切到其他地方,会导致链接文件失效。

而Linux中的链接文件是不同于Windows的快捷方式,Linux的链接文件分为软链接与硬链接。

硬链接

可以把硬链接理解为“指向原始文件inode的指针”,系统不为它分配独立的inode和文件。硬链接文件与原文件其实是同一个文件,只是名称不同。

下面我们举个例子:

[root@qll ~]# ll -i /etc/passwd
67544416 -rw-r--r--. 1 root root 882 2月   5 11:50 /etc/passwd

使用ln命令在当前目录下创建/etc/passwd文件的硬链接,然后观察其文件属性:


[root@qll ~]# ln /etc/passwd passwd_test
[root@qll ~]# ll -i /etc/passwd passwd_test
67544416 -rw-r--r--. 2 root root 882 2月   5 11:50 /etc/passwd
67544416 -rw-r--r--. 2 root root 882 2月   5 11:50 passwd_test

可以看出,这两个文件名关联的inode号完全相同,都是67544416,所以它们指向的是同一个文件。

观察上面输出的第二个字段中的第一位,它们都是“-”,说明文件类型为普通文件,链接类型为硬链接。

观察第三个字段,由1变成了2。这个字段叫作“链接数”,它说明有多少个文件名链接到同一个文件的inode。

硬链接的特点及局限性

  • 几乎不额外占用空间

    硬链接只是在目录中添加一条包含文件名和对应inode的记录,所以它几乎不会额外占用磁盘容量

  • 只要还有一个文件名引用着文件,文件就不会被真正删除

  • 由于技术局限性,不能跨文件系统创建硬链接

  • 不能链接目录

软链接

仅仅包含所链接文件的路径名,因此能链接目录,也可以跨越文件系统进行链接。但是,当原始文档被删除后,链接文件也将失效,从这一点上来说与Windows系统中的“快捷方式”具有一样的性质。

还拿 /etc/passwd 文件举例子,这次创建一个软链接并查看其文件属性:

[root@qll ~]# ln -s /etc/passwd passwd_soft
[root@qll ~]# ll -i /etc/passwd passwd_soft
 67544416 -rw-r--r--. 1 root root 882 2月   5 11:50 /etc/passwd
100663362 lrwxrwxrwx. 1 root root  11 2月  19 17:51 passwd_soft -> /etc/passwd
  • 第一列可以出来,两个文件名对应的inode不同,说明这是两个文件。

  • 第二列显示的文件权限也不一样,这一点和硬链接完全不同。注意文件类型被标记为“l”,说明这是一个软链接文件。

  • 第三列,观察两个文件的链接数量,都是1。说明创建软链接并不增加原文件的链接数。

  • 第六列是文件大小,注意新建的软链接文件大小为11Bytes,也就是字符串“/etc/passwd”的长度。

  • 最后一列显示软链接文件指向的源文件。

ln 命令

1. 硬链接

[root@qll tmp]# ln /tmp/data.txt data2.txt #创建硬链接
[root@qll tmp]# rm -rf /tmp/data.txt       #删除源文件
[root@qll tmp]# cat data2.txt              #删除源文件后,链接文件仍可以正常使用

2. 软链接

[root@qll tmp]# ln -s /tmp/te.txt /tmp/te2.txt #创建文件软链接
[root@qll tmp]# ln -s /bin testbin             #创建目录软链接
[root@qll tmp]# rm -rf /tmp/te.txt             #删除源文件
[root@qll tmp]# cat /tmp/te2.txt               #删除源后,软链接无法使用
cat: te2.txt: 没有那个文件或目录

关注「开源Linux」加星标,提升IT技能

基本命令学习 -(4)链接文件:ln命令的更多相关文章

  1. Linux的链接文件-ln命令

    Linux的链接文件 使用ln命令来创建链接文件(link) Linux链接分两种:硬链接(Hard Link),符号链接(Symbolic Link) 默认情况下,ln命令产生硬链接. [root@ ...

  2. Linux链接文件——管理链接文件的命令

    Linux链接文件——管理链接文件的命令 摘要:本文主要学习了在Linux系统中创建链接文件的命令. ln命令 ln命令用于给文件创建链接,是Link的缩写. 基本语法 ln [选项] 源文件 目标文 ...

  3. linux下添加链接与删除链接(ln命令的用法)

    添加链接使用ln命令用法:#ln --help用法:ln [选项]... 目标 [链接名]或:ln [选项]... 目标... 目录或:ln [选项]... --target-directory=目录 ...

  4. Linux编程 4 (创建文件touch,复制文件cp,tab补全,链接文件ln)

    一.创建文件 使用touch 可以创建空文件,例如opt目录下创建test2.txt文件.这种一般是有些程序必须要先创建文件,才能使用. 二. 复制文件 2.1 使用cp命令来复制文件,需要两个参数- ...

  5. Linux链接文件ln

    链接命令:ln 生成链接文件   ln [源文件] [目标目录] : 创建硬链接 -s:创建软链接    硬链接特征:(ln )1.拥有相同的i节点和存储block快,可以看做是同一个文件2.可通过i ...

  6. shell 命令 链接文件 ln

    1. 创建软链接文件   [  ln -s 源文件   链接文件]     类似于windows下的快捷方式 [ ln -s expr.sh expr ] 此时创建的链接文件路径是相对于现在所在的路径 ...

  7. Linux学习之常用文件处理命令(一)

    (一)文件命名规则 (二)常用文件处理命令 1.ls命令 2.cd命令 3.pwd命令 4.mkdir命令 5.touch命令 6.cp命令 7.mv命令 8.rm命令 9.cat命令 10.more ...

  8. linux学习之vi文件编辑命令

    如果文件为只读则无法使用普通用户编辑,需要切换到root用户,具体名称可参考: https://www.cnblogs.com/huangwei1992/p/9493443.html vi文件编辑命令 ...

  9. linux学习笔记-3.文件相关命令

    1.进入到用户根目录 cd ~ 或者 cdcd ~hadoop回到原来路径cd - 2.查看文件详情 stat a.txt 3.移动 mv a.txt /ect/改名mv b.txt a.txt移动并 ...

  10. Linux:ln命令详解(软连接,硬链接)

    ln ln命令用来为文件创件连接,连接类型分为硬连接和软连接(符号连接)两种,默认的连接类型是硬连接.如果要创建软连接必须使用"-s"选项. 硬链接 建立硬链接时,在另外的目录或本 ...

随机推荐

  1. Java 中怎么打印数组?

    你可以使用 Arrays.toString() 和 Arrays.deepToString() 方法来打印数组.由 于数组没有实现 toString() 方法,所以如果将数组传递给 System.ou ...

  2. 面试题目:手写一个LRU算法实现

    一.常见的内存淘汰算法 FIFO  先进先出 在这种淘汰算法中,先进⼊缓存的会先被淘汰 命中率很低 LRU Least recently used,最近最少使⽤get 根据数据的历史访问记录来进⾏淘汰 ...

  3. MATLAB设计模糊控制器并用simulink仿真

    一.设计模糊控制器1.1 创建项目文件夹在此路径如图 1.2 打开MATLAB打开MATLAB R2012a切换当前目录为上一步路径,如图 1.3 设计模糊控制器打开模糊控制器设计对话框 根据模糊控制 ...

  4. 媒体查询@media的使用

    媒体查询 参考:https://developer.mozilla.org...一个媒体查询由一个可选的媒体类型和零个或多个使用媒体功能的限制了样式表范围的表达式组成,例如宽度.高度和颜色.媒体查询, ...

  5. 干货,看微信小程序后台用户数据如何演变和递增

    这几天发现附近小程序又多了好几家,其中有普通小程序和门店小程序,把它们做一个对比,门店小程序更多的像一张名片,只有基本的企业名称.地址.营业时间.电话和门店照片,和普通小程序相比显得逊色许多.楼下的水 ...

  6. 如何使用Flannel搭建跨主机互联的容器网络

    当您将多台服务器节点组成一个Docker集群时,需要对集群网络进行设置,否则默认情况下,无法跨主机容器互联,接下来我们首先分析一下原因. 跨主机容器互联 下图描述了一个简单的集群网络,在该集群内,有两 ...

  7. MapReduce在集群执行任务时报错:Initialization of all the collectors failed. Error in last collector was:java.lang.ClassCastException

    报错信息详细: Error: java.io.IOException: Initialization of all the collectors failed. Error in last colle ...

  8. java语言和jdk、jre基础

    Java语言平台 * J2SE(Java 2 Platform Standard Edition)标准版  * 是为开发普通桌面和商务应用程序提供的解决方案,该技术体系是其他两者的基础,可以完成一些桌 ...

  9. 一. 为什么要用SpringMVC框架

    以前是怎么做项目的.CoreServlet,起到一个中心处理器作用.所有的请求到服务器,服务器给CoreServlet,在里面处理所有表的增删改查,跳转也在里面做.以前做部门就是 DepServlet ...

  10. 火狐浏览器Hackbar安装破解

    1 下载 https://pan.baidu.com/s/18cKoJAam9by7AB168Im57g 64mt 下载后解压到一个固定文件夹下 2 安装 选择xpi进行安装 3 关闭插件更新 点击插 ...