一、文件目录结构

| 系统目录 | 目录说明 | 作用 | 特点 | 常见子目录 |
|---|---|---|---|---|
| /etc | 系统配置目录 | 存储全局配置文件(如 /etc/passwd、/etc/hostname),修改需管理员权限 |
/etc/passwdd :用户账户信息。 /etc/yum.repos.d:用于存储 YUM/DNF 软件包管理器的仓库配置文件(扩展名为 .repo),定义软件包的下载来源、验证规则等。 |
|
| /boot | 系统启动目录 | 包含启动文件(如内核 vmlinuz、引导加载程序 GRUB 配置),直接影响系统启动 |
关键文件:vmlinuz-* :Linux 内核文件。initrd.img-* :初始内存盘镜像。/boot/grub :GRUB 引导程序配置。 | |
| /sbin | 系统命令目录 | 存放系统管理命令(如 fdisk、reboot),需 root 权限执行,用于系统维护 |
1.普通用户默认无权执行(需 sudo )。 2.命令多涉及系统配置和维护。 | /sbin/service、 /sbin/ifconfig、 /sbin/reboot |
| /bin | 系统命令目录 | 存放基础命令(如 ls、cp、cat),所有用户均可使用,系统启动或单用户模式依赖这些命令 |
1.单用户模式(维护模式)下也可使用 2.命令多为系统运行必需的核心工具。 | 常见命令:/bin/ls 、/bin/cp |
| /root | 用户家目录 | 超级用户(root)的家目录。 | 1.默认只有 root 用户可访问。 2.存放 root 的配置文件(如 .bashrc )。 | |
| /home | 用户家目录 | 存放普通用户的家目录。 | 1.每个用户对应一个子目录(如 /home/student )。2.用户对其家目录有完全控制权。 | |
| /var | 动态数据目录 | 存放运行时可变数据(如日志、数据库、邮件)。 | /var/logg :系统和服务日志(如 syslog 、 nginx/access.log )。 /var/lib :应用程序数据(如 MySQL 数据库 /var/lib/mysql )。 /var/log/secure :安全认证日志(如 SSH 登录记录)。 |
|
| /tmp | 动态数据目录 | 存放临时文件(进程或用户手动创建)。 | 1.全局可读写(权限为 drwxrwxrwt )。 2.系统重启或定期清理时会自动删除文件。 | |
| /usr | 系统资源目录 | 存放系统核心程序、库和文档(类似 C:\Windows )。 | /usr/bin :用户命令(如 gcc 、 python )。 /usr/lib :库文件(如 .so 动态库)。 |
|
| /usr/local | 系统资源目录 | 存放用户手动编译安装的软件(类似 C:\Program Files )。 | 避免与系统包管理器(如 apt 、 yum )安装的软件冲突。 |
1. 系统核心目录
/bin:存放基础命令(如 ls、cp、cat),所有用户均可使用,系统启动或单用户模式依赖这些命令
/sbin:存放系统管理命令(如 fdisk、reboot),需 root 权限执行,用于系统维护
/boot:包含启动文件(如内核 vmlinuz、引导加载程序 GRUB 配置),直接影响系统启动
/etc:存储全局配置文件(如 /etc/passwd、/etc/hostname),修改需管理员权限
/etc 下的目录
**作用:**用于存储 YUM/DNF 软件包管理器的仓库配置文件(扩展名为 .repo),定义软件包的下载来源、验证规则等。
核心功能:
1.模块化管理:每个 .repo文件可独立配置一个或多个软件仓库,避免直接修改主配置文件(如 yum.conf)
2.仓库属性定义:包括 baseurl(仓库路径)、gpgcheck(签名验证)、enabled(启用状态)等,支持变量如 $releasever(系统版本)
/etc/sysconfig
作用:集中存放 系统级和服务级的配置文件,主要用于 Red Hat 系发行版(如 CentOS、RHEL)
核心功能:
1.网络配置:如 /etc/sysconfig/network-scripts/ifcfg-eth0定义网卡 IP、网关等
2.服务管理:例如 /etc/sysconfig/httpd配置 Apache 服务的启动参数
3.硬件与国际化:如 /etc/sysconfig/i18n设置系统语言环境
/etc/selinux
作用:存储 SELinux(安全增强型 Linux)的配置文件,实现强制访问控制(MAC)机制。
核心功能:
1.运行模式配置:通过 /etc/selinux/config设置模式(enforcing、permissive或 disabled)
2*.策略管理*:如 /etc/selinux/targeted/policy/存放预编译的安全策略二进制文件
3*.安全上下文*:/etc/selinux/targeted/contexts/定义文件、进程的访问权限规则
网络配置:
1
/etc/sysconfig/metwprk-scripts/ifcfg-ens192 #网卡配置文件(ens192替换为实际网卡名)
SELinux配置:
1
/etc/selinux/config #SELinux 模式(enforcing、permissive、disabled)
YUM/DNF配置:
1
/etc/yum.repos.d/CemtPS-Base.repo #软件源配置
2. 用户与数据目录
用户家目录:
/home:普通用户的主目录,每个用户拥有独立子目录(如 /home/user1),存放个人文件与配置
/root:root 用户的专属主目录,与普通用户隔离,便于紧急维护
数据目录:
/var:存放动态数据,如日志(/var/log)、网站数据(/var/www),需定期清理以防磁盘占满
/tmp:临时文件目录,重启后自动清空,适合短期存储
3. 设备与挂载目录
设备目录:
/dev:设备文件(如 /dev/sda表示硬盘),Linux 将硬件抽象为文件便于操作
挂载目录:
/mnt:手动挂载外部设备(如 U 盘、网络存储)的临时目录
/media:系统自动挂载可移动设备(如光盘、USB)的默认位置
4. 软件与库目录
/usr
用户级应用程序与资源,包含子目录:
/usr/bin:非核心命令(如 gcc)。
/usr/lib:共享库文件。
/usr/local:本地编译安装的软件
/opt:第三方软件(如 Oracle、大型工具)的安装目录,避免干扰系统文件
5. 虚拟与特殊目录
/proc:虚拟文件系统,实时反映内核与进程信息(如 /proc/cpuinfo显示 CPU 详情)
/sys:另一虚拟文件系统,提供硬件设备与内核参数的交互接口
/lost+found:文件系统修复(如 fsck)后,恢复的碎片文件存放处,需 root 访问
6. 其他重要目录
/lib与 /lib64:存放系统库文件(32 位与 64 位),支持 /bin和 /sbin中的命令
/srv:服务数据目录(如 Web 服务器的 /srv/www),集中管理服务相关文件
二、文件管理
文件管理命令
1.touch-创建空文件
用途:创建新文件或更新文件时间戳。
语法:
1 | touch 文件名 |
示例:
1 | touch file.txt # 创建空文件 |
2.mkdir-创建目录
用途:创建新目录
语法:
1 | mkdir [选项] 目录名 |
常用选项:
1 | mkdir dir1 # 创建单层目录 |
3.rm-删除文件或目录
用途:删除文件或目录(慎用!)。
语法:
1 | rm [选项] 文件或目录 |
常用选项:
1 | rm file.txt # 删除文件 |
[!WARNING]
警告: rm -rf / 会删除整个系统,切勿尝试!
4.cp - 复制文件或目录
用途:复制文件或目录到指定位置。
语法:
1 | cp [选项] 源文件 目标路径 |
常用选项:
1 | cp file.txt backup/ # 复制文件到目录 |
5.mv - 移动或重命名文件
用途:移动文件或目录,或修改名称
语法:
1 | mv 源文件 目标路径或名称 |
示例:
1 | mv old.txt new.txt # 重命名文件 |
6.ls
常用选项:
1 | ls -a 显示隐藏文件 |
7.查询命令(cat less tail grep find)
(1)cat
用途:
用于快速查看、合并或创建文件内容。适合小文件,直接将内容输出到终端,无交互功能
语法:
1 | cat filename # 查看文件内容 |
常用选项:
1 | cat -n 文件名 #显示行号(包括空行) |
(2)less
用途:
提供用户交互式地滚动浏览文件。在 less 环境下,可以使用方向键或 Page Up/Page Down 键来滚动浏览文件。按 q 键可以退出less
语法:
1 | less filename |
常用选项:
1 | less -N:显示行号 |
(3)tail
用途:
用于查看文件末尾内容,默认显示最后10行。常用于实时监控日志更新。
语法:
1 | tail filename # 显示文件最后10行 |
常用选项:
1 | tail -n 文件 #指定显示的行数 |
8.grep核心知识点
1.基础语法
1 | grep [选项] "模式" [文件...] |
2.grep常用选项
| 选项 | 说明 |
|---|---|
| -i | 忽略大小写 |
| -o | 仅输出匹配内容 |
| -w | 精确匹配 |
| -r | 递归搜索 |
| -n | 统计行号 |
| -c | 统计行数 |
| -v | 反向匹配(排除模式) |
| -A N | 显示匹配行及匹配后N行 |
| -B N | 显示匹配行及匹配前N行 |
3.正则表达式
(1)基础正则表达式
| 符号 | 说明 |
|---|---|
| . | 匹配任意单个字符 |
| ^ | 匹配行首 |
| $ | 匹配行尾 |
| [abc] | 匹配括号内任意字符 |
| [^abc] | 排除括号内字符 |
| ***** | 重复前一个字符0次或多次 |
(2)扩展正则表达式
| 符号 | 说明 |
|---|---|
| + | 前一个字符重复1次或多次 |
| ? | 前一个字符重复0次或1次 |
| {n,m} | 前一个字符重复n到m次 |
| | | 逻辑或 |
补充:
#grep常用场景速查
| 场景 | 命令示例 |
|---|---|
| 快速定位错误 | grep -n “ERROR” file |
| 统计日志关键词频率 | grep -c “pattern” file |
| 提取结构化数据 | grep -Eo “正则表达式” file |
| 日志上下文分析 | grep -C3 “Exception” file |
注意事项
转义特殊字符:如 $ 、 * 需用 \ 转义。
9.find核心知识点
1.基础语法
1 | find [搜索路径] [匹配条件] [执行动作] |
搜索路径:默认为当前目录( . ),可指定绝对或相对路径。
匹配条件:按名称、类型、大小、时间等过滤文件。
执行动作:对匹配文件执行操作(如删除、输出路径)。
2.常用匹配条件
(1)按名称或路径匹配
| 条件 | 说明 |
|---|---|
| -name | 按文件名匹配(区分大小写) |
| -iname | 按文件名匹配(不区分大小写) |
| -path | 按路径匹配 |
(2)按文件类型匹配
| 条件 | 说明 |
|---|---|
| -type f | 仅匹配普通文件 |
| -type d | 仅匹配目录 |
| -type l | 仅匹配符号链接 |
(3)按文件大小匹配
| 条件 | 说明 |
|---|---|
| -size +10M | 找到大于 10MB 的文件 |
| -size -1G | 找到小于 1GB 的文件 |
| -size 0 | 找到所有空文件 |
(4) 按时间戳匹配
| 条件 | 说明 |
|---|---|
| -mtime -7 (modify time 记录修改时间) | 7 天内修改过的文件 |
| -atime +30 | 30 天前访问过的文件 |
| -newer file | 比指定文件更新的文件 |
(5) 按权限匹配
| 条件 | 说明 |
|---|---|
| -perm 644 | 权限精确为 644 的文件 |
| -perm /u=x | 用户有执行权限的文件 |
3.逻辑操作符
[^find实验 :忽略特定目录 -o用法]:
| 操作符 | 说明 |
|---|---|
| -a | 逻辑与 |
| -o | 逻辑或 |
| ! | 逻辑非 |
4.执行动作
[^find实验:搜索并压缩文件 -exec命令]:
| 动作 | 说明 |
|---|---|
| 输出文件路径(默认动作) | |
| -delete | 删除匹配的文件 |
| -exec | 执行自定义命令 |
| -ok | 交互式执行命令(需确认) |
#常用场景速查
| 场景 | 命令示例 |
|---|---|
| 清理临时文件 | find /tmp -type f -mtime +7 -delete |
| 查找大文件 | find / -size +100M -exec ls -lh {} ; |
| 批量重命名 | find . -name “*.old” -exec mv {} {}_new ; |
| 按内容搜索 | find . -type f -exec grep “pattern” {} ; |
注意事项:
1.谨慎使用 **-**delete :建议先运行 -print 确认文件列表
2.处理特殊字符:使用 -print0 和 xargs -0 避免文件名问题:
1 | find . -name "*.txt" -print0 | xargs -0 rm |
#文件类型及标识符
| 类型(标识符) | 特点 | 示例 | 标识符 |
|---|---|---|---|
| 普通文件(-) | 存储文本、二进制数据(如脚本、图片、可执行程序) | /home/user/file.txt (在find命令类型中使用f查找普通文件) | ls -l输出首字符为 - |
| 目录文件(d) | 用于组织其他文件或子目录,本质是文件名与 inode 的映射表。 | /etc、/home |
ls -l输出首字符为 d。 |
| 符号链接(l) | 软链接(快捷方式),指向另一个文件或目录;删除链接不影响原文件。 | /usr/bin/python -> python3 | ls -l输出首字符为 l。 |
| 设备文件(b、c) | 如硬盘(/dev/sda),数据按块读写。 |
如键盘(/dev/tty),数据按字符流读写 |
ls -l输出首字符为 b或 c。 |
| 管道文件(p) | 命名管道(FIFO),用于进程间通信。 | 通过 mkfifo创建 |
ls -l输出首字符为 p。 |
| 套接字文件(s) | 用于网络或本地进程通信(如 MySQL 套接字)。 | /var/run/mysqld/mysqld.sock | ls -l输出首字符为 s。 |
#文件类型的操作命令
| 创建文件 | 删除文件 | |
|---|---|---|
| 普通文件 | touch file.txt | rm file.txt |
| 目录 | mkdir mydir | rm -r mydir (-r表示递归删除,不加-r无法删除非空目录) |
| 链接文件 | ln -s /path/to/original link_name | rm link_name |
实验:grep命令
1.基本用法
1 | grep -i "error" test # "匹配内容" test:进行匹配的文件名 |

1 | grep -ni "info" test # -n:匹配行的行号 |

1 | grep -A 3 "ERROR" test #-A 3: 匹配ERROR行的后三行 |

1 | grep -B 3 "ERROR" test #-B 3: 匹配ERROR行的前三行 |

1 | grep -C 3 "ERROR" test #-C 3: 匹配ERROR行的前后各三行 |

1 | grep -r/R "config" /etc #-r:递归查询目录下的包含config字段的文件 |

2.提取ip地址
1 | grep -Eo "([0-9]{1,3}\.){3}[0-9]{1,3}" test |


3.提取邮箱地址
1 | grep -Eio "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z]{2,}\b" practice.txt |

4.查找金额记录
1 | grep '\$' test |

实验:find命令
完成练习实验目录的创建
1 | mkdir -p ~/find-practice/{logs,data,backup} |

1.基本用法
(1)常用匹配条件
- 按文件名称搜索
1 | find ~/find-practice -name "*.log |

- 按文件类型搜索
1 | find /root/find-practice -type d #查找目录文件 |

- 组合条件(名称与大小)
要求:查找大于10k且以.jpg结尾的文件
1 | find /root/find-practice -name "jpg" -size +10k #查找大于10k且以.jpg结尾的文件 |

(2)时间与权限过滤
- 要求:查找1天内修改过的文件
1 | find ~/find-practice -mtime -1 |

- 排除特定权限文件
要求:查找权限不是 644 的文件
rwx
421
1 | find ~/find-practice ! -perm 644 |

(3)执行动作
- 删除所有空文件
1 | find ~/find-practice -size 0 -delete #删除操作尽量不要做 |
- 修改权限
要求:.sh结尾的文件权限修改为755
1 | #{}:提权的文件 \;转义为(;)结束命令 |
- 搜索并压缩文件
要求:搜索.log文件,打包为logs.tar.gz
1 | find ~/find-practice/ -name "*.log" -exec tar logs.tar.gz {} \; |
(4)高级技巧
- 忽略特定目录
要求:查找所有txt文件,跳过backup目录
理论上是先跳过 再查找 因此跳过写在前面
1 | find ~/find-practice/ ! -path "*/backup" -prune -o -name "*.txt" -print |
注意:-prune必须与 -path和 -o配合使用,且顺序不可调换
- 结合xargs处理文件
要求:移动所有 .csv 文件到 data 目录
1 | find ~/find-practice -name "*.csv" | xargs -I {} mv {} ~/find-practice/data/ |
-exec可以直接传递参数并处理文件,适合安全性要求高或操作复杂的场景,而 xargs更适合批量处理大量文件以提升性能。两者可根据需求灵活选择,甚至组合使用(如 find -exec sh -c嵌套 xargs)
xargs:

exec:
