基本命令学习 -(4)链接文件:ln命令
关注「开源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命令的更多相关文章
- Linux的链接文件-ln命令
Linux的链接文件 使用ln命令来创建链接文件(link) Linux链接分两种:硬链接(Hard Link),符号链接(Symbolic Link) 默认情况下,ln命令产生硬链接. [root@ ...
- Linux链接文件——管理链接文件的命令
Linux链接文件——管理链接文件的命令 摘要:本文主要学习了在Linux系统中创建链接文件的命令. ln命令 ln命令用于给文件创建链接,是Link的缩写. 基本语法 ln [选项] 源文件 目标文 ...
- linux下添加链接与删除链接(ln命令的用法)
添加链接使用ln命令用法:#ln --help用法:ln [选项]... 目标 [链接名]或:ln [选项]... 目标... 目录或:ln [选项]... --target-directory=目录 ...
- Linux编程 4 (创建文件touch,复制文件cp,tab补全,链接文件ln)
一.创建文件 使用touch 可以创建空文件,例如opt目录下创建test2.txt文件.这种一般是有些程序必须要先创建文件,才能使用. 二. 复制文件 2.1 使用cp命令来复制文件,需要两个参数- ...
- Linux链接文件ln
链接命令:ln 生成链接文件 ln [源文件] [目标目录] : 创建硬链接 -s:创建软链接 硬链接特征:(ln )1.拥有相同的i节点和存储block快,可以看做是同一个文件2.可通过i ...
- shell 命令 链接文件 ln
1. 创建软链接文件 [ ln -s 源文件 链接文件] 类似于windows下的快捷方式 [ ln -s expr.sh expr ] 此时创建的链接文件路径是相对于现在所在的路径 ...
- Linux学习之常用文件处理命令(一)
(一)文件命名规则 (二)常用文件处理命令 1.ls命令 2.cd命令 3.pwd命令 4.mkdir命令 5.touch命令 6.cp命令 7.mv命令 8.rm命令 9.cat命令 10.more ...
- linux学习之vi文件编辑命令
如果文件为只读则无法使用普通用户编辑,需要切换到root用户,具体名称可参考: https://www.cnblogs.com/huangwei1992/p/9493443.html vi文件编辑命令 ...
- linux学习笔记-3.文件相关命令
1.进入到用户根目录 cd ~ 或者 cdcd ~hadoop回到原来路径cd - 2.查看文件详情 stat a.txt 3.移动 mv a.txt /ect/改名mv b.txt a.txt移动并 ...
- Linux:ln命令详解(软连接,硬链接)
ln ln命令用来为文件创件连接,连接类型分为硬连接和软连接(符号连接)两种,默认的连接类型是硬连接.如果要创建软连接必须使用"-s"选项. 硬链接 建立硬链接时,在另外的目录或本 ...
随机推荐
- Zookeeper 对于 Kafka 的作用是什么?
Zookeeper 是一个开放源码的.高性能的协调服务,它用于 Kafka 的分布式应用. Zookeeper 主要用于在集群中不同节点之间进行通信 在 Kafka 中,它被用于提交偏移量,因此如果节 ...
- @Qualifier 注解?
当有多个相同类型的bean却只有一个需要自动装配时,将@Qualifier 注解和@Autowire 注解结合使用以消除这种混淆,指定需要装配的确切的bean. Spring数据访问
- maven下载出现unknown文件夹
问题场景 maven下载配置完成后,发现如上图代码包下载失败,本地maven库中出现unknown文件夹,也就是说,maven无法定位下载到上面的代码包. 解决过程 仔细观察发现,所有下载失败的代码包 ...
- SSM-learning
架构流程图: 第一步:建立spring框架: 包括:建立所需要的dao层,sevice层和controller层和实体类,建立spring配置文件,配置自动扫描bean AccountDao: @Re ...
- 你将如何使用 thread dump?你将如何分析 Thread dump?
新建状态(New) 用 new 语句创建的线程处于新建状态,此时它和其他 Java 对象一样,仅仅在堆区 中被分配了内存. 就绪状态(Runnable) 当一个线程对象创建后,其他线程调用它的 sta ...
- 在java web工程中实现登入和安全验证
登入页面的话我们之前做过直接可以拿来用翻一翻之前的博客就可以找到 在这个基础上添加验证功能 代码如下: 1 package security; 2 /** 3 * @author 鐜嬭儨鍗? 4 */ ...
- 本地存储和cookies之间的区别是什么?
cookies本地存储客户端/服务器端既可以从客户端也可以从服务器端访问数据.每个请求都会发送cookie数据到服务器.只能在本地浏览器端访问数据.服务器无法访问本地存储,除非特意通过POST或GET ...
- Netty + Spring + ZooKeeper搭建轻量级RPC框架
本文参考 本篇文章主要参考自OSCHINA上的一篇"轻量级分布式 RPC 框架",因为原文对代码的注释和讲解较少,所以我打算对这篇文章的部分关键代码做出一些详细的解释 在本篇文章中 ...
- '\ddd'转义字符与八进制转换
所有的ASCII码都可以用"\"加数字(一般是8进制数字)来表示.而C中定义了一些字母前加"\"来表示常见的那些不能显示的ASCII字符,如\0,\t,\n等, ...
- java中为什么把Checked Exception翻译成受检的异常?
6.Checked Exception(受检的异常) 马克-to-win:为什么我大胆的把Checked Exception翻译成受检的异常?因为这类异常,编译器检查发现到它后会强令你catch它或t ...