Linux文件类型和根目录结构
1.文件类型
字符 | 文件类型 | 说明 |
---|---|---|
~ | 普通文件 | 类似于Windows的记事本 |
d | 目录文件 | 类似于windows文件夹 |
c | 字符设备文件 | 串行端口设备,顺序读写,键盘 |
b | 块设备文件 | 可供存储的接口设备,随机读写,硬盘 |
p | 管道文件 | 用于进程间的通信 |
s | 套接字文件 | 通常用于网络上的通信。可以启动一个程序来监听客户端的要求,客户端可以通过套接字来进行数据通信 |
l | 符号链接又叫软链接,和原来文件不是同一个文件 | 例如windows的快捷方式 |
硬链接 | 只能引用同一文件系统中的文件。它引用的是文件在文件系统中的物理索引(也叫inode) |
Linux系统中软链接与硬链接的区别
1.定义与原理
- 硬链接
- 硬链接是多个文件名指向同一个 inode(索引节点)。可以理解为同一个文件有多个不同的文件名,它们都直接指向文件的存储位置。
- 当创建硬链接时,实际上是为文件增加了一个新的文件名,而不是创建一个新的文件副本。
- 例如,文件
/home/user/original.txt
有一个硬链接/home/user/link1.txt
,这两个文件名指向同一个存储位置和 inode。
- 软链接(符号链接)
- 软链接是一个独立的文件,它包含了指向另一个文件或目录的路径。可以看作是 Windows 中的快捷方式。
- 当访问软链接时,系统会自动重定向到它所指向的目标文件或目录进行操作。
- 例如,创建一个软链接
/home/user/soft_link.txt
指向/home/user/original.txt
,访问软链接时实际上是在访问目标文件。
2.文件属性
-
inode 编号
:
- 硬链接与原文件具有相同的 inode 编号,这表明它们在文件系统中是同一个文件的不同名称。
- 软链接有自己独立的 inode 编号,与目标文件不同。
-
文件大小
:
- 硬链接的文件大小与原文件相同,因为它们指向同一个存储位置。
- 软链接的文件大小通常较小,它只包含指向目标文件的路径信息。
3.创建方式
- 硬链接:使用
ln
命令创建,语法为ln 源文件 硬链接文件
。例如:ln /home/user/original.txt /home/user/link1.txt
。 - 软链接:使用
ln -s
命令创建,语法为ln -s 源文件 软链接文件
。例如:ln -s /home/user/original.txt /home/user/soft_link.txt
。
4.对源文件的依赖
- 硬链接
- 相对独立于源文件。即使源文件名被删除,只要还有一个硬链接存在,文件的数据仍然可以访问。
- 例如,删除
/home/user/original.txt
,但/home/user/link1.txt
仍然可以访问文件内容。
- 软链接
- 依赖于目标文件。如果目标文件被删除或移动,软链接将变为无效。
- 例如,如果删除
/home/user/original.txt
,/home/user/soft_link.txt
将无法访问到文件内容,会出现错误提示。
5.跨文件系统
- 硬链接:不能跨文件系统创建硬链接。因为不同的文件系统有不同的 inode 编号分配方式,无法在不同文件系统中为同一个文件创建多个名称。
- 软链接:可以跨文件系统创建软链接,因为软链接只是包含了一个指向目标文件的路径,与文件系统的 inode 结构无关。
2.Linux系统的目录结构
2.1 FHS层级结构标准
- 定义:
Filesystem Hierarchy Standard(FHS,文件系统层次结构标准)定义了 Linux 操作系统中文件和目录的组织方式。其主要目的是为了让不同的 Linux 发行版在文件系统布局上有一个统一的标准,以便提高软件的可移植性和用户在不同系统之间的操作便利性。
-
Linux目录结构的特点
-
使用树形目录结构来组织和管理文件。
-
整个系统只有一个根目录(树根),Linux的根目录用“/”表示
-
其他所有分区以及外部设备(如硬盘、光驱等)都是以根目录为起点,挂接在目录树的某个目录中的,通过访问挂载点目录,即可实现对这些分区的访问。
-
-
主要目录及其用途:
目录 | 用途 |
---|---|
/ | Linux文件系统的最上层根目录,其他所有目录均是该目录的子目录 |
/boot | 存放系统启动时所需的文件,这些文件若损坏常会导致系统无法启动,一般不要改动 |
/bin | 存放基本的二进制可执行文件,这些文件对于系统的基本运行和恢复是至关重要的。 |
/sbin | 包含系统管理相关的二进制可执行文件。 |
/lib | 是库(library)英文缩写,存放系统的各种库文件 |
/lib64 | 存放系统本身需要用到64位程序的共享函数库(library) |
/usr | 一般用户程序安装所在的目录,用于安装各种应用程序 |
/opt | 该目录通常提供给较大型的第三方应用程序使用,例如Sun Staroffice、CorelWordPerfect,这可避免将文件分散至整个文件系统。 |
/user | 包含用户相关的程序和文件,是一个非常重要的目录。 |
/etc | 存放系统配置文件。 |
/var | 存放可变数据,如日志文件、邮件队列、打印队列等。 |
/run | 保存自系统启动以来描述系统信息的文件 |
/home | 每个用户在这个目录下都有一个自己的主目录,用于存放用户的个人文件和设置。 |
/root | 管理员用户(root)的主目录。 |
/mnt和/media | 以临时将别的文件系统挂在这个目录下,即为其他的文件系统提供安装点 |
/tmp | 用来存放不同程序执行时产生的临时文件 |
/srv | srv 是服务(server)的简写,服务启动之后需要访问的数据目录 |
/sys | 本目录是将内核的一些信息映射文件,以供应用程序所用 |
/dev | 存放设备文件,代表系统中的硬件设备。 |
/proc | 这是一个虚拟文件系统,提供了关于系统运行状态和进程信息的接口。可以在这个目录下获取系统信息,详解网址:https://mp.weixin.qq.com/s/4WUJ |
-
注意:
-
系统自带的目录不要随意删除
-
目录的名称是区分大小写的
-
FHS标准并不是一种强制约束标准,但是一种经验的总结,应灵活使用
-
2.2 路径
路径是用于指定文件或目录在文件系统中的位置的一种表示方式
-
路径的组成部分
-
目录名称:
-
路径中的每个部分都是一个目录名称,用斜杠(/)分隔。
-
例如,在路径 /home/user/documents 中,home、user 和 documents 都是目录名称。
-
-
文件名:
-
在路径的最后部分可以是一个文件名,表示具体的文件。
-
例如,在路径 /home/user/documents/file.txt 中,file.txt 是文件名。
-
-
-
路径的类型
- 绝对路径:
- 绝对路径从根目录(/)开始,完整地描述了文件或目录在文件系统中的位置。
- 例如,/home/user/documents/file.txt 是一个绝对路径,它明确指出了文件 file.txt 位于根目录下的 home 目录中的 user 目录下的 documents 目录中。
- 无论当前工作目录在哪里,绝对路径都能准确地定位到目标文件或目录。
- 相对路径:
- 相对路径是相对于当前工作目录的位置来指定文件或目录的路径。
- 例如,如果当前工作目录是 /home/user,那么相对路径 documents/file.txt 实际上指的是 /home/user/documents/file.txt。
- 相对路径更加简洁,特别是当在与当前工作目录相关的位置进行操作时。
- 绝对路径:
2.3 工作目录
- 用户当前所处的位置,使用 pwd 命令查看
- 更改当前的工作目录,即切换目录: cd 路径
[root@localhost ~]# pwd
/root
[root@localhost ~]# cd /
[root@localhost /]# pwd
/
# 回到当前用户的家(主)目录
[root@localhost /]# cd ~
[root@localhost ~]# pwd
/root
# 回到当前目录的上一级目录
[root@localhost ~]# cd ..
# 切换到之前的目录
[root@localhost /]# cd -
/root
# 回到当前目录
[root@localhost ~]# cd .