Linux(CentOS)系统管理入门笔记(第三期)——文件系统(上篇):目录结构与路径导航——FHS 与 cdpwdls

发布时间:2026/7/8 5:07:41
Linux(CentOS)系统管理入门笔记(第三期)——文件系统(上篇):目录结构与路径导航——FHS 与 cdpwdls LinuxCentOS系统管理入门笔记第三期——文件系统上篇目录结构与路径导航——FHS 与 cd/pwd/lsLinux系统管理入门系列其他文章欢迎访问Linux入门——系统管理1我的主页AOwhisky这里有更多运维系统性知识整理和其他有趣内容欢迎与我一起探讨学习~引言文件系统Linux 世界的“城市地图”想象你刚搬到一座陌生的城市。这座城市规划得井井有条住宅区、商业区、工业区、政府办公区、临时活动区各归其位。你不需要记住每一栋楼的精确坐标只要知道“商业区在城东”“政府大院在市中心”就能快速找到银行、邮局或派出所。Linux 的文件系统就是这座“城市”。它的目录结构由 FHS文件系统层次结构标准统一规划确保了无论在哪个发行版上配置文件都在/etc日志文件都在/var/log用户数据都在/home。这套规范让 Linux 管理员可以“跨发行版迁徙”而不会迷路。但仅有“地图”还不够你还需要学会“导航”——当前在哪个位置怎么去另一个目录有哪些文件它们是什么时候创建的本期我们将从根目录/出发走遍 Linux 的“主要街区”同时掌握pwd、cd、ls、tree、stat、touch六位“导航神器”。读完这一期你将拥有在 Linux 文件王国中精准定位、自由穿行的能力。— Compiled and Authored by Whisky — July 7 th, 2026目录FHSLinux 目录世界的“宪法”根目录下的“十大地标”路径导航基石pwd 与 cd目录内容查看ls 的十八般武艺目录可视化tree 命令文件元数据stat 与 touch总结与速查手册1. FHSLinux 目录世界的“宪法”1.1 为什么需要 FHSLinux 是开源的任何人都可以下载内核源码制作自己的发行版。如果没有统一规范A 发行版把配置文件放在/cfgB 发行版放在/configsC 发行版放在/etc——那系统管理员每次换发行版都要重新学习软件包在安装时也无法预知配置路径整个生态将陷入混乱。为了解决这个问题FHSFilesystem Hierarchy Standard文件系统层次结构标准应运而生。它采用树形结构组织文件明确定义了根目录/下各个一级目录的用途例如/etc必须放配置文件/bin和/sbin必须放可执行文件/usr和/var两个关键目录的子目录规范例如/var/log放日志/usr/share放共享数据白话理解FHS 就像是城市规划局颁布的“土地使用规范”——市中心/周围哪块地建住宅、哪块地建工厂、哪块地做公园都有明确规定。任何开发商发行版制作者都必须遵守。1.2 FHS 的两层规范规范层级适用范围典型示例第一层/下的一级目录/etc配置、/bin命令、/home用户数据第二层/usr和/var的子目录/usr/bin用户命令、/var/log日志FHS 并非一成不变它会随着 Linux 生态演进定期更新。但近二十年来其核心框架已非常稳定成为所有主流发行版Red Hat、Debian、Ubuntu、SUSE共同遵守的规范。2. 根目录下的“十大地标”让我们从根目录/出发逐个了解最重要的系统目录。你可以用以下命令亲自查看# 查看根目录下的一级目录ls-l/2.1 一级目录详解目录用途关键特征比喻/usr系统软件与库的安装位置只读理论可被多台机器共享城市的“商业区”——所有商店、图书馆都在这/etc系统配置文件永久、静态、本地特定城市的“政府大院”——规章制度都存于此/var可变数据日志、缓存、数据库永久存储但内容会增长/变化城市的“档案馆物流中心”——不断有新增记录/run运行时数据PID 文件、锁文件非永久重启即清空城市的“临时指挥所”——只在当次开机有效/home普通用户的主目录每个用户一个子目录如/home/laoma城市的“住宅小区”——每个住户一个门牌号/rootroot 管理员的主目录不在/home下独立存放城市“市长官邸”——独立于普通住宅区/tmp全局临时文件空间全局可写10 天自动清理城市的“临时堆场”——用完即走/var/tmp长期临时文件30 天自动清理城市的“中转仓库”——比临时堆场保留更久/boot启动引导文件内核、GRUB系统启动必需通常单独分区城市的“地铁总控室”——启动整个交通系统的关键/dev设备文件硬盘、终端、随机数特殊文件供系统访问硬件城市的“各种管道接口”——通往硬件设备的通道2.2 深入解读几个容易混淆的目录/usr— 不只是“用户”目录很多新手以为/usr是“user”的缩写存放用户数据。这是错的。/usr是Unix System Resources的缩写存放的是系统级的软件、库和文档是所有用户共享的只读数据。# /usr 的子目录结构/usr/bin/# 用户命令普通用户可执行/usr/sbin/# 系统管理命令通常需要 root 权限/usr/lib/# 32 位库文件/usr/lib64/# 64 位库文件CentOS 7 默认/usr/local/# 本地编译安装的软件默认路径 /usr/local/bin/usr/share/# 架构无关的共享数据文档、图标、时区等/usr/src/# 源码存放位置/etc— 配置中心/etc存放几乎所有的系统级配置文件。无论是什么软件网络、安全、服务它的全局配置通常都在这里# 几个关键配置文件/etc/hosts# 主机名与 IP 映射手动 DNS 解析/etc/hostname# 系统主机名/etc/fstab# 文件系统挂载表开机自动挂载/etc/passwd# 用户账户信息/etc/shadow# 用户密码信息加密/etc/sudoers# sudo 权限配置/etc/yum.repos.d/# yum 软件源配置目录/var— 动态数据的“大本营”/var存放的是运行时会发生变化的永久数据——它会增长、被修改、被轮转但重启后数据依然存在。/var/log/# 系统日志messages、secure、cron 等/var/cache/# 应用程序缓存/var/spool/# 打印队列、邮件队列/var/lib/# 数据库文件MySQL、PostgreSQL 等/var/tmp/# 长期临时文件30 天清理/tmpvs/var/tmpvs/run— 三大临时区目录清理策略用途重启后/tmp10 天未访问/未修改则自动删除短期临时文件如编译器临时输出清空/var/tmp30 天未访问/未修改则自动删除长期临时文件如编辑器备份文件保留/run不清理但重启即消失进程运行时数据PID 文件、socket清空⚠️常见误区有些新手会直接往/tmp里放重要的长期数据结果 10 天后发现文件“不翼而飞”——这不是系统故障是 FHS 的清理策略在正常工作。重要的东西请放/home或/var。2.3 静态 vs 动态 vs 运行时 对比维度/usr/etc/var/run内容特征静态、只读静态、可配置动态、增长瞬时、临时跨机器共享✅ 可以NFS 挂载❌ 不建议本地特定❌ 不建议❌ 不可以重启后完整保留完整保留完整保留清空重建典型内容二进制程序、库文件配置文件日志、数据库、缓存PID 文件、锁文件3. 路径导航基石pwd 与 cd有了“城市地图”现在我们来学“导航”。三个最基础的命令构成了路径操作的核心。3.1 绝对路径与相对路径在开始命令之前先厘清一个核心概念路径类型定义示例识别方法绝对路径以根目录/开头从根开始描述位置/home/laoma/file.txt第一个字符是/相对路径不以/开头相对于当前工作目录./file.txt、../etc/hosts第一个字符不是/相对路径的两个特殊符号符号含义示例.当前目录cd .原地不动..上一级目录父目录cd ..回到上一级最佳实践在命令行交互中相对路径更方便省去大量输入在脚本和配置文件中优先使用绝对路径避免因脚本在未知位置执行而找不到目标文件。3.2 pwd — 我在哪pwdPrint Working Directory显示当前所在目录的绝对路径是你时刻需要的“定位仪”。[laomacentos7 ~]$pwd/home/laoma[laomacentos7 ~]$cd/usr/share/doc/[laomacentos7 doc]$pwd/usr/share/doc3.3 cd — 我要去哪cdChange Directory是切换目录的唯一命令。基础用法# 切换到绝对路径[laomacentos7 ~]$cd/usr/bin[laomacentos7 bin]$pwd/usr/bin# 切换回上一个目录超级实用[laomacentos7 bin]$cd- /usr/share/doc[laomacentos7 doc]$pwd/usr/share/doc# 直接 cd不带参数→ 回到用户家目录[laomacentos7 doc]$cd[laomacentos7 ~]$pwd/home/laoma# cd ~ 同样回到家目录[laomacentos7 ~]$cd/etc[laomacentos7 etc]$cd~[laomacentos7 ~]$pwd/home/laoma利用..向上导航# 从深层目录逐级向上[laomacentos7 ~]$cd/usr/share/doc/at-spi2-core-2.28.0/[laomacentos7 at-spi2-core-2.28.0]$pwd/usr/share/doc/at-spi2-core-2.28.0# 返回上一级到 /usr/share/doc[laomacentos7 at-spi2-core-2.28.0]$cd..[laomacentos7 doc]$pwd/usr/share/doc# 连续向上两级到 /usr/share[laomacentos7 doc]$cd../../[laomacentos7 share]$pwd/usr/share# 从深层目录直接跳到 /etc/yum利用多个 ..[laomacentos7 ~]$cd/usr/share/doc/at-spi2-core-2.28.0/[laomacentos7 at-spi2-core-2.28.0]$cd../../../../etc/yum[laomacentos7 yum]$pwd/etc/yum3.4 何时用绝对路径何时用相对路径场景推荐原因交互式操作手敲命令相对路径输入少、效率高Shell 脚本绝对路径脚本可能在不同目录被调用相对路径会错位配置文件引用如 fstab绝对路径系统启动时工作目录未定义必须用绝对路径深度嵌套目录绝对路径从根写起避免一串../../../../让人眼花缭乱4. 目录内容查看ls 的十八般武艺ls是 Linux 中最常用的命令之一。它的核心功能是列出目录内容但通过不同选项的组合它可以展示文件权限、大小、时间、排序等丰富信息。4.1 基础用法# 列出当前目录所有非隐藏文件ls# 列出指定目录内容ls/etc/yum# 列出所有文件包括 . 开头的隐藏文件ls-a# 单列输出每个文件占一行ls-1# 输出# 公共# 模板# 视频# 图片# 文档# 下载# 音乐# 桌面4.2 长列表模式-l—— 信息密度之王[laomacentos7 ~]$ls-l/etc/hosts -rw-r--r--.1root root19711月314:35 /etc/hosts逐个字段解读字段示例值含义第1位-文件类型-普通文件、d目录、l软链接第2-4位rw-文件所有者root的权限读写第5-7位r--文件所属组root的权限只读第8-10位r--其他人other的权限只读第2字段1硬链接数第3字段root文件所有者user owner第4字段root文件所属组group owner第5字段197文件大小字节第6-8字段11月 3 14:35最近修改时间第9字段/etc/hosts文件名4.3 排序与筛选选项ls默认按文件名字母顺序正向排序。以下几个选项在日常运维中极高频# 按时间排序最新在前—— 找最近改过的文件ls-lt# 按时间反向排序最旧在前ls-ltr# 只查看目录本身的信息不列出目录内容ls-ld/etc/yum# 输出drwxr-xr-x. 6 root root 100 12月 13 10:42 /etc/yum# 按大小排序配合 -h 人类可读ls-lSh# 递归查看子目录内容ls-R/etc/yum4.4 ls 常用选项速查表选项作用示例场景-l长格式显示权限、大小、时间查看文件详细信息-a显示所有文件含隐藏文件.开头查看配置文件、环境变量文件-A显示所有文件不含.和..同上但更干净-h人类可读的大小K/M/G查看大文件时配合-lh-R递归列出子目录内容查看完整的目录树结构-d只显示目录本身不展开内容查看目录自身的权限和属性-t按修改时间排序最新优先定位最近修改的文件-r反向排序配合-t看最旧文件-S按文件大小排序找占用空间最大的文件-1单列输出适合脚本处理或在终端中清晰展示5. 目录可视化tree 命令ls -R虽然能递归显示目录内容但输出格式不够直观。tree命令以树形结构展示目录层级一目了然。5.1 安装 treeCentOS 7 默认不安装tree需要手动安装[rootcentos7 ~]# yum install -y tree5.2 基本用法[laomacentos7 ~]$ tree /etc/yum /etc/yum ├── fssnap.d ├── pluginconf.d │ ├── fastestmirror.conf │ └── langpacks.conf ├── protected.d │ └── systemd.conf ├── vars │ ├── contentdir │ └── infra └── version-groups.conf4directories,6files5.3 常用选项# 限制显示层级只看两层tree-L2/etc/yum# 只显示目录不显示文件tree-d/etc/yum# 显示完整路径tree-f/etc/yum实用场景当你想快速了解一个陌生目录的结构时tree -L 2是最佳选择——它不会像ls -R那样输出成百上千行而是给你一个“概览图”。6. 文件元数据stat 与 touch6.1 stat —— 查看文件的“身份证”stat命令显示文件的元数据metadata——即“关于文件的数据”而非文件内容本身。[laomacentos7 ~]$stat/etc/fstab 文件/etc/fstab大小541 块8 IO 块4096 普通文件 设备fd00h/64768d Inode67160130 硬链接1 权限(0644/-rw-r--r--)Uid(0/ root)Gid(0/ root)环境system_u:object_r:etc_t:s0 最近访问2022-12-1411:09:49.628179033 0800 最近更改2022-12-1310:38:44.625179973 0800 最近改动2022-12-1310:53:38.563774524 0800 创建时间-三种时间戳的区别核心知识时间戳英文术语更新时机查看选项ls访问时间Access Time (atime)读取文件内容时更新如cat、lessls -lu修改时间Modify Time (mtime)修改文件内容时更新如echo 、vim保存ls -l默认状态改变时间Change Time (ctime)修改文件元数据时更新如chmod、chown、mvls -lc⚠️常见误区很多初学者把“修改时间”和“状态改变时间”混为一谈。记住——mtime变的是内容ctime变的是属性。mv命令不改变文件内容但会改变父目录的元数据所以文件本身的ctime会更新但mtime不变。6.2 touch —— 创建文件与更新时间戳touch有两个核心功能文件不存在时→ 创建一个空文件文件存在时→ 将其atime和mtime更新为当前时间创建空文件# 创建单个文件[laomacentos7 ~]$touchfile1.txt[laomacentos7 ~]$ls-lfile1.txt -rw-rw-r--.1laoma laoma07月715:30 file1.txt# 批量创建多个文件[laomacentos7 ~]$touchfile-{1..5}.txt[laomacentos7 ~]$lsfile-1.txt file-2.txt file-3.txt file-4.txt file-5.txt更新时间戳# 将文件时间戳更新为当前时间[laomacentos7 ~]$statfile1.txt|grep最近 最近访问2026-07-0715:30:00.000000000 0800 最近更改2026-07-0715:30:00.000000000 0800# 等待几秒后执行 touch[laomacentos7 ~]$touchfile1.txt[laomacentos7 ~]$statfile1.txt|grep最近 最近访问2026-07-0715:32:15.000000000 0800 最近更改2026-07-0715:32:15.000000000 0800高级用法参考时间戳# 使用 -r 选项将文件 A 的时间戳复制给文件 B[laomacentos7 ~]$touch-rfile1.txt file2.txt# 使用 -t 选项手动指定时间戳 [[CC]YY]MMDDhhmm[.ss][laomacentos7 ~]$touch-t202401011200.00oldfile.txt[laomacentos7 ~]$ls-loldfile.txt -rw-rw-r--.1laoma laoma01月12024oldfile.txt-c选项仅更新时间戳不创建文件# 文件不存在时不创建[laomacentos7 ~]$touch-cnon-existent-file.txt[laomacentos7 ~]$lsnon-existent-file.txt ls: 无法访问non-existent-file.txt: 没有那个文件或目录实用场景用touch *.log批量更新日志文件时间戳。用touch -r将配置文件的时间戳标准化便于版本对比。用touch -t创建具有特定时间戳的文件用于测试脚本的时间逻辑。7. 总结与速查手册7.1 核心知识点一览主题关键点FHS文件系统层次结构标准统一了 Linux 目录布局一级目录/usr软件、/etc配置、/var动态数据、/home用户、/tmp临时绝对路径以/开头从根开始描述位置相对路径不以/开头相对于当前目录.和..是核心符号pwd显示当前工作目录的绝对路径cd切换目录cd -返回上一目录cd ~回家ls-l长格式、-a显示隐藏、-t时间排序、-R递归tree树形结构展示目录需安装stat显示文件的三个时间戳atime/mtime/ctimetouch创建空文件或更新时间戳-r参考模式、-t指定时间7.2 一级目录速查卡目录一句话作用关键特性/usr系统软件与库只读、可共享/etc系统配置文件永久、本地特定/var动态数据日志/缓存/数据库永久、可增长/run运行时数据PID/锁文件重启即清空/home普通用户家目录每个用户独立子目录/rootroot 用户家目录独立于/home/tmp全局临时文件10 天自动清理、全局可写/var/tmp长期临时文件30 天自动清理/boot启动文件通常独立分区/dev设备文件特殊文件、访问硬件接口7.3 本章命令速查表命令最常用法作用pwdpwd显示当前绝对路径cdcd /etc、cd -、cd ~切换目录lsls -la、ls -lt、ls -R列出目录内容treetree -L 2 /etc树形展示目录结构statstat /etc/hosts查看文件元数据与时间戳touchtouch file、touch -r ref.txt target.txt创建文件或更新时间戳7.4 常见错误排查指南错误信息原因解决方案-bash: cd: /xxx: No such file or directory目标目录不存在先用ls确认路径拼写注意大小写敏感Permission denied无权限进入该目录或查看文件使用ls -ld查看权限联系管理员command not found命令不存在或路径不在PATH中使用which 命令名检查或用绝对路径执行ls: cannot access xxx: Permission denied对父目录没有执行权限x检查父目录权限用chmod x修复需授权文件“突然消失”文件放在/tmp超过 10 天被自动清理重要文件放/home或/varcd ..无法回到预期的目录当前目录是软链接cd ..回到链接所在的父目录而非目标父目录使用cd -P ..或先cd -P解析软链接7.5 思考与拓展原课后作业转化为什么 Linux 不像 Windows 那样有 C:、D: 盘符→ Linux 采用单一根目录树所有存储设备都挂载mount到树中的某个目录如/mnt/data下。这种设计更统一、更灵活且与“一切皆文件”哲学一致。/usr/bin和/usr/local/bin有什么区别→/usr/bin由系统包管理器如 yum/dnf管理更新软件包时会覆盖/usr/local/bin供用户手动编译安装的软件使用不会被系统包管理器覆盖。按 FHS 标准本地编译的软件应当放在/usr/local下。什么时候cd命令后不加任何参数→ 不加参数时cd会切换到用户的家目录$HOME等价于cd ~。如果当前已在根目录cd不会有任何变化。如何在不进入目录的情况下查看某个目录自身的详细信息而非其内容→ 使用ls -ld 目录名。-d选项是关键否则ls会展开目录内容。stat中的三个时间戳哪些会被touch命令更新→ 默认情况下touch更新atime访问时间和mtime修改时间而ctime状态改变时间会被系统自动更新为当前时间因为文件元数据本身发生了变化。7.6 生产环境最佳实践场景建议日常导航多用cd -在“当前目录”和“上一个目录”之间快速切换脚本编写文件路径一律使用绝对路径避免因脚本执行位置变化而出错查找最近修改的文件ls -lt理解系统目录定期用tree -L 2 /熟悉根目录结构做到“脑中有图”临时文件管理永远不要把重要数据放在/tmp或/var/tmp它们会被自动清理文件时间戳调试用touch -t创建指定时间的测试文件验证脚本的时间逻辑下期预告掌握了文件系统的“地图”和“导航”下一期我们将进入文件的增删改查实操——用cp复制、mv移动/重命名、mkdir创建目录、rm删除文件/目录以及软链接和硬链接的区别与实战。同时我们还会学习Shell 通配符\*、?、[]、{}的批量匹配技巧——让你的文件操作效率提升一个数量级。敬请期待第四期— Compiled and Authored by Whisky — July 7 th, 2026