7.1 KiB
7.1 KiB
1、文件管理概览
Linux 文件管理主要围绕以下几个方面展开:
- 目录结构与路径
- 文件类型与 inode
- 常见目录和文件操作命令
- 文件状态与时间戳
- 通配符与链接文件
这些内容是后续学习权限、查找、文本处理、磁盘管理的基础。
补充一点: 每打开一个文件,进程通常都会占用一个文件描述符(fd)。
2、Linux 目录结构
Linux 文件系统采用单根倒置树状结构,一切都从根目录 / 开始。
- 单个文件名通常最长 255 字节
- 整个路径通常最长 4096 字节左右(不同系统实现可能略有差异)
2.1 绝对路径与相对路径
绝对路径
从根目录 / 开始写起的完整路径,例如:
/etc/passwd
相对路径
相对于当前工作目录的位置,例如:
../logs/app.log
2.2 常见目录说明
/:根目录/boot:引导文件、内核、引导加载器相关文件/bin:基本用户命令/sbin:基本系统管理命令/lib:基础共享库和内核模块/lib64:64 位系统库文件目录/etc:系统配置文件/home/USERNAME:普通用户家目录/root:root 用户家目录/media:可移动设备挂载点/mnt:临时挂载点/dev:设备文件目录/opt:第三方软件安装目录/srv:服务相关数据/tmp:临时文件目录/usr:共享只读程序和数据/usr/bin:大量用户命令/usr/lib:库文件/usr/include:C 头文件/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 是什么
inode(index node)可以理解为文件的“元数据记录”。
它通常保存的信息包括:
- inode 编号
- 文件类型
- 权限
- UID
- GID
- 链接数
- 文件大小
- 时间戳
- 指向数据块的指针
目录本质上也是特殊文件,它记录了“文件名”和“inode 编号”的对应关系。
4.3 cp 和 rm 与 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 文件系统从根目录
/开始组织 - 绝对路径和相对路径是最基础的路径概念
pwd、cd、ls、mkdir、rm、cp、mv是最常用的文件操作命令- inode 记录的是文件元数据,不等于文件名本身
stat可用于查看文件详细状态和时间戳- 硬链接和软链接的差异是高频面试和实战知识点