wiki/运维/Linux/笔记/8.文件管理.md
2026-04-08 19:40:00 +08:00

7.1 KiB
Raw Blame History

1、文件管理概览

Linux 文件管理主要围绕以下几个方面展开:

  • 目录结构与路径
  • 文件类型与 inode
  • 常见目录和文件操作命令
  • 文件状态与时间戳
  • 通配符与链接文件

这些内容是后续学习权限、查找、文本处理、磁盘管理的基础。

补充一点: 每打开一个文件进程通常都会占用一个文件描述符fd

2、Linux 目录结构

Linux 文件系统采用单根倒置树状结构,一切都从根目录 / 开始。

  • 单个文件名通常最长 255 字节
  • 整个路径通常最长 4096 字节左右(不同系统实现可能略有差异)

2.1 绝对路径与相对路径

绝对路径

从根目录 / 开始写起的完整路径,例如:

/etc/passwd

相对路径

相对于当前工作目录的位置,例如:

../logs/app.log

2.2 常见目录说明

  • /:根目录
  • /boot:引导文件、内核、引导加载器相关文件
  • /bin:基本用户命令
  • /sbin:基本系统管理命令
  • /lib:基础共享库和内核模块
  • /lib6464 位系统库文件目录
  • /etc:系统配置文件
  • /home/USERNAME:普通用户家目录
  • /rootroot 用户家目录
  • /media:可移动设备挂载点
  • /mnt:临时挂载点
  • /dev:设备文件目录
  • /opt:第三方软件安装目录
  • /srv:服务相关数据
  • /tmp:临时文件目录
  • /usr:共享只读程序和数据
  • /usr/bin:大量用户命令
  • /usr/lib:库文件
  • /usr/includeC 头文件
  • /usr/share:共享数据
  • /usr/local:本地手工安装软件目录
  • /var:经常变化的数据
  • /var/cache:缓存数据
  • /var/lib:应用状态数据
  • /var/log:日志文件
  • /var/run/run:运行时数据,如 PID 文件
  • /var/spool:队列和缓冲池数据
  • /var/tmp:重启后可能保留的临时文件
  • /proc:内核和进程信息的伪文件系统
  • /sys:内核设备和驱动信息

3、目录常用操作命令

3.1 pwd

pwd

示例:

root@lzc:~# pwd
/root
  • pwd 用于显示当前工作目录
  • 常和环境变量 PWD 对应

3.2 cd

用于切换目录。

常见用法:

  • cd -:回到上一次所在目录
  • cd ..:进入父目录
  • cd .:当前目录
  • cd ~:当前用户家目录
  • cd -P:按物理路径切换,避免符号链接影响

3.3 ls

用于列出目录内容。

常见选项:

  • -a:显示隐藏文件
  • -l:显示详细信息
  • -R:递归显示
  • -X:按扩展名排序
  • -S:按文件大小排序
  • -h:配合 -l 以易读单位显示大小

3.4 tree

用于以树状结构显示目录。

常见选项:

  • -d:只显示目录
  • -L:限制显示层级

3.5 mkdir

用于创建目录。

常见选项:

  • -p:递归创建
  • -m:创建时直接指定权限

3.6 rmdir

用于删除空目录。

常见选项:

  • -p:递归删除空目录

4、Linux 文件基础

4.1 文件类型

ls -l 输出中,第一列第一个字符表示文件类型:

  • -:普通文件
  • d:目录
  • l:符号链接
  • b:块设备文件
  • c:字符设备文件
  • p:管道文件
  • s:套接字文件

4.2 inode 是什么

inodeindex node可以理解为文件的“元数据记录”。

它通常保存的信息包括:

  • inode 编号
  • 文件类型
  • 权限
  • UID
  • GID
  • 链接数
  • 文件大小
  • 时间戳
  • 指向数据块的指针

目录本质上也是特殊文件它记录了“文件名”和“inode 编号”的对应关系。

4.3 cprm 与 inode 的关系

执行 cp

通常会发生:

  • 分配新的 inode
  • 创建新的目录项
  • 复制数据块内容

因此复制后的文件通常拥有不同 inode

执行 rm

通常会发生:

  • 删除目录项
  • 减少链接计数
  • 当链接数归零时释放 inode 和数据块

5、文件状态与时间戳

5.1 stat

stat 1.txt

示例:

root@lzc:~# stat 1.txt
  File: 1.txt
  Size: 210             Blocks: 8          IO Block: 4096   regular file
Device: fc02h/64514d    Inode: 556125      Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2023-12-05 23:55:07.813678618 +0800
Modify: 2023-12-05 23:55:07.005686767 +0800
Change: 2023-12-05 23:55:07.005686767 +0800
 Birth: 2023-12-04 23:44:39.861025975 +0800

5.2 三个常见时间

  • atime:访问时间,读取文件内容时更新
  • mtime:修改时间,文件内容变化时更新
  • ctime:变更时间,元数据变化时更新,例如权限、属主、链接数变化

6、文件名通配符

通配符常用于批量匹配文件名:

  • *:匹配 0 个或多个字符,不包含隐藏文件开头的 .
  • ?:匹配任意单个字符
  • ~:当前用户家目录
  • ~-:上一个工作目录
  • [0-9]:匹配一个数字
  • [a-z]:匹配一个小写字母
  • [A-Z]:匹配一个大写字母
  • [abc]:匹配列表中的任一字符
  • [^abc]:匹配不在列表中的任一字符
  • [:digit:]:数字字符类
  • [:lower:]:小写字母字符类
  • [:upper:]:大写字母字符类

7、常见文件操作命令

7.1 touch

用于创建空文件或更新时间戳。

  • -a:仅修改访问时间
  • -m:仅修改修改时间

7.2 cp

用于复制文件和目录。

常见选项:

  • -i:覆盖前提示
  • -n:不覆盖已有文件
  • -r-R:递归复制目录
  • -a:尽量保留原属性进行归档复制
  • -b:覆盖前创建备份文件

7.3 mv

用于移动文件或重命名。

  • -b:覆盖前先备份

7.4 rename

用于批量重命名。

示例:

rename 'old' 'new' *

不同发行版的 rename 实现可能略有差异,实际使用前最好先看帮助文档。

7.5 rm

用于删除文件或目录。

常见选项:

  • -i:交互确认
  • -f:强制删除
  • -r:递归删除

8、链接文件 ln

8.1 硬链接

硬链接本质上是让多个文件名指向同一个 inode。

特点:

  • inode 相同
  • 删除其中一个名字,不代表数据立刻消失
  • 不能对目录创建硬链接(通常如此)
  • 一般不能跨文件系统

8.2 软链接

软链接类似快捷方式。

创建方式:

ln -s 源文件 软链接名

特点:

  • inode 不同
  • 保存的是目标路径
  • 可以跨文件系统
  • 原文件删除后,软链接会失效

8.3 删除软链接的注意点

rm -rf /data

如果 /data 是软链接,这样通常只会删除软链接本身。

rm -rf /data/

如果路径末尾带 /,可能会把链接目标目录中的内容删掉,操作时一定要格外小心。

9、小结

  • Linux 文件系统从根目录 / 开始组织
  • 绝对路径和相对路径是最基础的路径概念
  • pwdcdlsmkdirrmcpmv 是最常用的文件操作命令
  • inode 记录的是文件元数据,不等于文件名本身
  • stat 可用于查看文件详细状态和时间戳
  • 硬链接和软链接的差异是高频面试和实战知识点