项目二 管理Linux文件和目录
2.1项目知识准备
文件
是存储在计算机上的数据集合
。在Windows系统中,我们理解的文件可以是文本文档、图片、程序、音乐、视频等。在Linux中,一切皆文件
,也就是除了Windows中所理解的文件,目录、字符设备、光驱、硬盘、打印机、进程、线程、管道等都是文件。
2.1.1 目录
Linux系统中的文件都有存放路径,就是指该文件存放的位置。
Linux中的目录
如同Windows中的文件夹
,是用来协助管理计算机文件、具有路径标识的一块存储空间。
根目录是目录的最高层,其他所有目录和文件都在根目录下面,生成一个树状结构,使用这种树状、具有层次的文件结构,主要目的是方便文件系统的管理和维护,如文字图:
在Linux系统中,文件和目录的组织形式是一个倒置的树状结构,根目录用正斜杠(/
)表示。下面是Linux文件系统的一个基本的树状结构图:
/
|-- bin/ # 存放二进制可执行文件
|-- boot/ # 包含Linux内核和引导程序文件
|-- dev/ # 包含设备文件
|-- etc/ # 系统和应用程序的配置文件
| |-- apt/ # Debian系的包管理配置
| |-- init.d/ # 系统服务脚本
| |-- network/ # 网络配置文件
| |-- passwd # 用户账户信息
| `-- sudoers # sudo权限配置文件
|-- home/ # 用户的主目录
|-- lib/ # 系统库文件
|-- media/ # 挂载的媒体设备
|-- mnt/ # 临时挂载点
|-- opt/ # 第三方应用程序
|-- proc/ # 系统进程信息
|-- root/ # root用户的主目录
|-- run/ # 系统运行时数据
|-- sbin/ # 系统二进制可执行文件
|-- srv/ # 服务数据文件
|-- sys/ # 系统硬件设备接口
|-- tmp/ # 临时文件
|-- usr/ # 用户相关的应用程序和文件
| |-- bin/ # 用户二进制可执行文件
| |-- include/ # 头文件
| |-- lib/ # 用户库文件
| |-- local/ # 本地数据和可执行文件
| `-- share/ # 共享数据
|-- var/ # 可变数据文件
|-- cache/ # 缓存数据
|-- lib/ # 状态数据
|-- log/ # 日志文件
`-- run/ # 运行时数据
|-- lost+found/ # 文件系统损坏后的恢复文件
`-- etc...
请注意,这个树状图只是一个简化的版本,实际的Linux文件系统可能包含更多的目录和子目录,具体取决于Linux的发行版和配置。一些目录如/var
、/usr
等,可能还有更多的子目录来满足不同的系统需求。
Linux系统根目录及其下各个常用目录的用途说明表:
下面是Linux系统根目录下各个常用目录及其用途的说明表:
目录 | 用途描述 |
---|---|
/ |
根目录,所有其他目录和文件的上级目录。 |
/bin |
存放基本的二进制可执行文件,如ls 、cat 、mkdir 等,它们对所有用户都可用。 |
/boot |
包含Linux内核和引导加载程序所需的文件,如内核映像和初始内存盘。 |
/dev |
包含设备文件,这些文件作为系统硬件设备的接口。 |
/etc |
包含系统和应用程序的配置文件,如网络配置、用户认证信息等。 |
/home |
用户的主目录,存放普通用户的个人文件。 |
/lib |
存放系统库文件,这些库文件为系统提供必要的功能支持。 |
/media |
用于挂载临时存储设备,如USB闪存驱动器、CD-ROM等。 |
/mnt |
用于临时挂载文件系统,通常由系统管理员或用户手动挂载。 |
/opt |
存放可选或第三方应用程序。 |
/proc |
虚拟文件系统,提供系统进程和内核参数的信息。 |
/root |
root用户的主目录,具有系统最高权限的用户。 |
/run |
存放系统运行时的数据,如运行中的进程信息。 |
/sb |
存放系统级的二进制可执行文件,通常只有root用户才能访问。 |
/srv |
存放服务的数据文件,如WWW服务器的数据。 |
/sys |
虚拟文件系统,提供对系统硬件和内核子系统的状态和控制的接口。 |
/tmp |
存放临时文件,系统重启时这些文件会被清除。 |
/usr |
存放用户相关的应用程序和文件,包括bin 、sbin 、include 、lib 和share 等子目录。 |
/var |
存放可变数据文件,如日志文件、数据库文件、缓存等。 |
/lost+found |
用于存放文件系统检查工具如fsck 发现的损坏文件。 |
请注意,这个表列出的是大多数Linux发行版中常见的目录及其用途,但具体的目录结构和用途可能会根据不同的发行版和系统配置有所不同。
【注意】
:用pwd命令可以查看用户当前所在的工作目录位置。
[root@localhost bx]# pwd
/home/bx
[root@localhost bx]#
- 在Linux系统中,路径是用来指定文件或目录位置的方法,主要有两种类型:绝对路径和相对路径。
-
绝对路径 (Absolute Path)
- 绝对路径是从根目录
/
开始的完整路径。 - 它指定了从根目录到目标文件或目录的完整路径。
- 绝对路径提供了确切的位置,无论当前工作目录在哪里。
例如:
/home/user/documents
:表示从根目录开始,进入home
目录,然后是user
目录,最后是documents
目录。
- 绝对路径是从根目录
-
相对路径 (Relative Path)
- 相对路径是相对于当前工作目录的路径。
- 它不从根目录开始,而是从当前所在目录开始计算。
- 相对路径可以包含特殊字符来表示当前目录或父目录。
例如:
./documents
:表示当前目录下的documents
目录。../documents
:表示当前目录的父目录下的documents
目录。../../documents
:表示当前目录的上一级目录的上一级目录下的documents
目录。
特殊路径符号:
.
:表示当前目录。..
:表示当前目录的父目录。~
:表示当前用户的主目录(例如,/home/username
)。
使用场景:
- 当你需要从一个脚本或命令行中明确指定文件或目录的位置时,使用绝对路径。
- 当你需要编写可移植的脚本或命令时,使用相对路径,这样无论当前工作目录在哪里,脚本或命令都能正确执行。
示例:
假设当前工作目录是/home/user
,以下是一些示例命令:
-
使用绝对路径列出
documents
目录的内容:ls /home/user/documents
-
使用相对路径列出
documents
目录的内容:ls documents
-
如果当前目录是
/home/user/projects
,使用相对路径回到user
目录并列出documents
目录的内容:cd .. && ls documents
在编写脚本或命令时,选择使用绝对路径还是相对路径取决于你的需求和上下文环境。
2.1.2 Linux文件(目录)的命名规则
Linux文件(和目录)的命名遵循一些基本规则和惯例,尽管它相对宽松,但了解这些规则有助于避免潜在的问题和混淆。以下是Linux文件和目录命名的一些规则和建议:
-
长度限制:文件名的最大长度通常是有限制的,但这个限制可能因文件系统而异。在大多数现代文件系统中,最大长度可以达到2