目录
Linux文件类型说明
软链接
软链接特点
软链接工作过程
正常原文件a工作流程
文件a的软链接工作流程
硬链接
硬链接的特点
文件a的硬链接工作流程
软链接与硬链接的比较
测试软链接以及硬链接
1.进入根目录
2.创建test目录
3.进入test目录中,并创建a文件
4.创建硬链接
5.创建软链接
6.向文件中添加内容,并查询
7.删除源文件a
8.重新创建源文件a
文件操作命令
1.touch命令
语法格式
示例
特点
参数以及功能
2.stat命令
示例
3.mv命令
语法格式
示例
4.rm命令
语法格式
参数及功能
5.ln命令
语法格式
参数及功能
Linux文件类型说明
使用‘ls-l’命令查看到的第一个字符 | 文件类型 | 说明 |
---|---|---|
- | 普通文件 | 类似Windows的记事本 |
d | 目录文件 | 类似于Windows的文件夹 |
c | 字符设备文件 | 可供存储的接口设备,随机读写,硬盘 |
b | 块设备文件 | 可存储的接口设备,随机读写,硬盘 |
p | 管道文件 | 用于进程间的通信 |
S | 套接字文件 | 通常用于网络上的通信。可以启动一个程序来监听客户端的要求,客户端可以通过套接字来进行数据通信 |
I | 符合链接,又称为软连接,和原文件不是一个文件 | 例如Windows的快捷方式,如果原文件被删除,所有指向它的符号链接也就都被破坏了。软连接有自己的node,是Linux特殊文件的一种,作为一个文件,它的数据是它所连接的文件的路径。符合链接可以跨越文件系统,也可以为目录建立 |
软链接
软链接特点
有点类似Windows上的桌面快捷方式
-
和文件不是一个文件
-
查看软链接的时候,内容和源文件一模一样,内容修改保持一致
-
只要原文件在,则可以无限创建
-
原文件删除,则软链接还在,但是看不到内容
-
保存的是原文件的路径
软链接工作过程
正常原文件a工作流程
通过原文件a的Inode节点号--->在indoe table中去找节点号 -->在block寻找对应的块 -->将内容读取到屏幕
文件a的软链接工作流程
注意:
如果删除当前原文件a,然后新建一个原文件a(与源文件a路径相同)
软链接工作流程
原因 --- 软链接中保存的是原文件的路径
硬链接
硬链接的特点
-
和源文件有相同的inode,存放内容的块也是一样的
-
查看硬链接的时候,内容和源文件一模一样,内容修改保持一致
-
源文件被删除,硬链接还在,可以看到内容
文件a的硬链接工作流程
a.hard(源文件a的硬链接)--> 寻找源文件a在inode table中的节点号 --> 通过节点号访问block中对应的块 --> 读取内容到屏幕上
注意:
如果删除源文件a,则此时硬链接a.hard还可以访问内容
注意 --- 当硬链接和源文件同时删除时,整个文件都被删除
软链接与硬链接的比较
比
较
|
硬链接
| 符号链接(软链接) |
不同点
| 使用不带选项-s的ln命令创建 | 使用带选项-s的ln命令创建 |
只能在与源文件相同的文件系统、分区和挂载设备上创建 | 可跨越不同的文件系统、分区和挂载设备创建 | |
只能针对文件创建硬链接,不能针对目录 | 针对文件和目录均可建立软链接 | |
具有硬链接关系的两个文件名指向的是硬盘上的同一块存储空间 | 一个文件(或目录)指向另外一个文件(或目录)的文件名(或目录名),类似于Windows系统中的快捷方式 | |
删除硬链接的任何一方文件后,另一方文件仍然有效 | 删除源文件或目录后,软链接文件或目录无效 | |
相同点 | 对任何一方的内容进行修改都会影响到另一方 | |
链接文件都不会将源文件复制一份,只会 占用非常少量的用于存储链接信息的存储空 |
测试软链接以及硬链接
1.进入根目录
[root@localhost ~]# cd /
2.创建test目录
[root@localhost /]# mkdir test
测试
[root@localhost /]# ls
注意 :
创建前需要先检查是否含有test,因为Linux中不能自动补全 .XXX,所以不能同名
3.进入test目录中,并创建a文件
[root@localhost /]# cd /test
[root@localhost test]# touch a
测试
4.创建硬链接
[root@localhost test]# ln /test/a a.hard
测试
5.创建软链接
[root@localhost test]# ln -s /test/a a.soft
测试
6.向文件中添加内容,并查询
向文件a中添加
[root@localhost test]# echo 123 > a
查询
[root@localhost test]# cat a a.hard a.soft
向硬链接中添加
[root@localhost test]# echo 23 >a.hard
查询
向软链接中添加
[root@localhost test]# echo 33 > a.soft
查询
[root@localhost test]# stat a a.hard a.soft
LInks 为2的原因:
因为硬链接与源文件的路径相同,所以此时的连接数目为2
Size --- 大小 --- 当前文件所占字节数
7.删除源文件a
[root@localhost test]# rm a
测试
[root@localhost test]# ll
[root@localhost test]# cat a a.hard a.soft
No such file or directory --- 没有这样的文件或目录
8.重新创建源文件a
[root@localhost test]# echo 123 > a
测试
[root@localhost test]# ll
[root@localhost test]# cat a a.hard a.soft
a.hard不一样,原因
当原文件删除时,硬链接还可以访问原文件,所以当原文件重新创建时因为对应的节点号与之前不同
[root@localhost test]# stat a a.hard a.soft
文件操作命令
1.touch命令
修改空文件或更新已有文件或目录的修改日期
语法格式
touch 文件或目录名列表
示例
[root@localhost test]# touch b
特点
若指定文件或目录已存在,则将文件或目录的日期和时间修改为当前系统的时间和日期
若文件不存在,则以指定的文件名创建空文件
参数以及功能
参数 | 功能 |
-d yyyymmmdd | 把文件的存取或修改时间,改为yyyy年mm月dd日 |
-a | 只把文件的存取时间改为当前时间 |
-m | 只把文件的修改时间改为当前时间 |
2.stat命令
stat(display file or file system status )--- 查看文件详细信息的命令,而且看到文件的最近访问时间,最近更改时间,最近改动时间
执行权限 --- 所有用户
所在路径 --- /usr/bin/stat
示例
[root@localhost ~]# stat anaconda-ks.cfg
文件: "anaconda-ks.cfg"
大小: 1453 块: 8 IO 块: 4096 普通文件
设备: 803h/2051dInode: 33574991 硬链接: 1
权限: (0600/-rw-------) Uid: ( 0/ root) Gid: ( 0/ root)
环境: system_u:object_r:admin_home_t:s0
最近访问: 2018-11-06 23:22:23.409038121 +0800
最近更改: 2018-10-24 00:53:08.760018638 +0800 #数据修改时间
最近改动: 2018-10-24 00:53:08.760018638 +0800 #状态修改时间
创建时间: -
注意:
类似于Windows中的属性中的常规
3.mv命令
用于剪切或重复名文件
语法格式
mv 原文件名称 目标文件名称
注意:剪切操作不同于复制操作,因为它会 把源文件删除掉 ,只 保留剪切后的文件 。如果在同一个目录中将某个文件剪切后还 粘贴到当前目录 下,其实本质就是 对文件 进行了 重命名操作
示例
[root@localhost test]# mv b test1
4.rm命令
删除文件或目录,可包含一个或多个文件名(各文件间用空格分隔)或用通配符表达,已实现删除多个文件或目录。
语法格式
rm 文件或目录名以及路径
参数及功能
参数 | 功能 |
-f | 在覆盖已经存在的目标文件时不提示 |
-i | 在覆盖目标文件之前将给出提示要求用户确认。回答y时目标文件被覆盖,是交互式拷贝 |
-r | 递归删除整个目录树 |
5.ln命令
为文件或目录建立连接
语法格式
ln 被链接的源文件或目录 链接文件或目标目录
参数及功能
参数 | 功能 |
-s | 建立符号链接(软链接) |
-f | 删除已存在目录文件与源文件之间的连接关系 |
-i | 交互式的删除目标文件与源文件之间的链接关系 |