目录
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 | 交互式的删除目标文件与源文件之间的链接关系 |
6.mkdir命令
创建目录
语法格式
mkdir 名称