Linux命令行文件管理 Linux 命令行文件管理完全指南本文整理自 Linux 系统管理课程笔记涵盖文件系统层次结构、路径导航、文件管理命令、链接以及 Shell 通配符等内容。适合 Linux 初学者参考学习。一、文件系统层次结构FHSLinux 遵循开源协议任何人都可以根据 Linux 核心代码制作和发行自己的版本。如果每个人都按自己喜好随意在/目录下创建目录、存放文件将导致不同 Linux 系统之间无法互通。为了解决这个问题FHSFilesystem Hierarchy Standard文件系统层次结构标准应运而生。FHS 采用树形结构组织文件定义了两层规范第一层定义/下面各个目录应该存放什么文件数据。例如/etc放置配置文件/bin与/sbin放置可执行文件等。第二层针对/usr和/var的子目录进行定义。例如/var/log放置系统日志文件/usr/share放置共享数据等。小贴士USR 是 Unix System Resource 的缩写不是 user 的简写。常见目录及用途目录用途/usr系统安装的软件、共享的库。含/usr/bin用户命令、/usr/sbin系统管理命令、/usr/lib库文件、/usr/local本地自定义软件/etc系统配置文件/var可变数据在系统启动之间保持永久性如数据库、缓存、日志、网站内容/run本次系统启动以来运行中进程的运行时数据包括 PID 文件和锁文件。重启时重新创建/home普通用户存储个人数据和配置文件的位置如/home/laoma/root管理员 root 的主目录/tmp全局可写的临时文件空间10 天内未访问的文件会被自动删除/boot开机启动过程所需的文件/dev设备文件供系统用于访问硬件二、文件路径导航2.1 路径类型绝对路径以根/开头的完整路径精确指定文件位置。相对路径不以/开头相对于当前工作目录的路径。当前工作路径当前所处的位置用pwd查看。什么时候用绝对路径什么时候用相对路径一般情况怎么方便怎么来。但在变量定义文件路径时尽量使用绝对路径避免因工作目录变化导致路径失效。2.2cd— 切换目录# 查看当前工作目录[laomacentos7 ~]$pwd/home/laoma# 切换到绝对路径[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- /usr/bin# cd 或 cd ~ 返回家目录[laomacentos7 bin]$cd[laomacentos7 ~]$pwd/home/laoma# cd .. 进入上一级目录父目录[laomacentos7 ~]$cd..[laomacentos7 home]$pwd/home# . 代表当前目录[laomacentos7 ~]$file./.bash_history# 等价于 file .bash_history# 使用相对路径切换[laomacentos7 ~]$cd/usr/share/doc/at-spi2-core-2.28.0/[laomacentos7 at-spi2-core-2.28.0]$cd../../[laomacentos7 share]$pwd/usr/share# 从 /usr/share 切换到 /etc/yum[laomacentos7 share]$cd../../../../etc/yum[laomacentos7 yum]$pwd/etc/yum2.3ls— 列出目录内容# -1 单列格式展示[laomacentos7 ~]$ls-1公共 模板 视频 图片 文档 下载 音乐 桌面# -R 递归查看子目录[laomacentos7 ~]$ls-R/etc/yum# -l 长列表格式查看文件详细信息[laomacentos7 ~]$ls-l/etc/hosts -rw-r--r--.1root root19711月314:35 /etc/hosts# -r 反向排序[laomacentos7 ~]$ls-rl# -t 按修改时间排序最新的在前[laomacentos7 ~]$ls-tl# -d 只查看目录本身而非目录内容[laomacentos7 ~]$ls-ld/etc/yum drwxr-xr-x.6root root10012月1310:42 /etc/yum2.4tree— 树形查看目录结构# 安装 tree 工具[rootcentos7 ~]# yum install -y tree[laomacentos7 ~]$ tree /etc/yum /etc/yum ├── fssnap.d ├── pluginconf.d │ ├── fastestmirror.conf │ └── langpacks.conf ├── protected.d │ └── systemd.conf ├── vars │ ├── contentdir │ └── infra └── version-groups.conf4directories,6files2.5stat— 查看文件元数据[laomacentos7 ~]$stat/etc/fstab 文件/etc/fstab大小541 块8 IO 块4096 普通文件 设备fd00h/64768d Inode67160130 硬链接1 权限(0644/-rw-r--r--)Uid(0/ root)Gid(0/ root)最近访问2022-12-1411:09:49.628179033 0800 最近更改2022-12-1310:38:44.625179973 0800 最近改动2022-12-1310:53:38.563774524 0800 创建时间-2.6touch— 更新时间戳 / 创建空文件# 更新已有文件的时间戳[laomacentos7 ~]$touchzhang.txt# 文件不存在时创建空文件[laomacentos7 ~]$touchnewfile.txt# -c 文件不存在时不创建[laomacentos7 ~]$touch-cnoexist.txt# 不会创建任何文件三、命令行管理文件命令速查表操作单一来源多来源复制文件cp file1 file2cp file1 file2 file3 dir移动文件mv file1 file2mv file1 file2 file3 dir删除文件rm file1rm file1 file2 file3创建目录mkdir dirmkdir -p dir1/dir2/dir3复制目录cp -r dir1 dir2cp -r dir1 dir2 dir3 dir4移动目录mv dir1 dir2mv dir1 dir2 dir3 dir4删除目录rm -r dir1/rmdir dir1rm -rf dir1 dir2 dir33.1mkdir— 创建目录# 创建单个目录[laomacentos7 ~]$mkdirlab# 同时创建多个目录[laomacentos7 ~]$mkdirlab1 lab2# -p 递归创建多级目录[laomacentos7 ~]$mkdir-pdir1/dir2/dir3/dir4[laomacentos7 ~]$ tree dir1 dir1 └── dir2 └── dir3 └── dir43.2cp— 复制文件和目录# 复制文件到当前目录[laomacentos7 lab]$cp/etc/hosts.# 复制并重命名[laomacentos7 lab]$cp/etc/hosts ./hosts-1# -i 覆盖前询问确认[laomacentos7 lab]$cp-i/etc/hosts ./hosts-1 cp是否覆盖./hosts-1yes# 复制多个文件到目录目标必须是目录[laomacentos7 lab]$cp/etc/passwd /etc/hosts.allow.# -r 递归复制目录[laomacentos7 lab]$cp-r/etc/yum.[laomacentos7 lab]$cp-r/etc/yum ./yum-1# 注意目标存在同名目录时源目录会被放入目标目录下而非覆盖[laomacentos7 lab]$cp-r/etc/yum ./yum[laomacentos7 lab]$lsyum fssnap.d pluginconf.d protected.d vars version-groups.conf yum# 多了一个 yum 子目录3.3mv— 移动和重命名# 移动单个文件[laomacentos7 lab]$mvhosts-1../lab1# 移动多个文件目标必须是目录[laomacentos7 lab]$mvpasswdhosts /home/laoma/lab1/# 重命名文件同一目录下移动 重命名[laomacentos7 lab]$mvhosts.allow hosts.allow-new# 移动目录不需要 -r[laomacentos7 lab]$mvetc../lab1# 同时移动多个目录[laomacentos7 lab]$mvhome/ yum/ yum-1/../lab13.4rmdir和rm— 删除# rmdir 只能删除空目录[laomacentos7 lab]$rmdir../lab2[laomacentos7 lab1]$rmdiretc rmdir: 删除etc失败: 目录非空# 非空目录无法删除# rm 删除文件[laomacentos7 lab1]$rmhosts# -f 强制删除不提示[laomacentos7 lab1]$rm-fcacerts# -r 递归删除目录及其内容[laomacentos7 lab1]$rm-ryum# -rf 递归强制删除谨慎使用[laomacentos7 lab1]$rm-rfetc home/ yum-1/⚠️警告rm -rf是 Linux 中最危险的命令之一删除后无法恢复。执行前请务必确认路径正确四、链接软链接与硬链接4.1 软链接Symbolic Link软链接类似于 Windows 中的快捷方式它是一个指向目标文件或目录的特殊文件。# 查看系统中的软链接[laomacentos7 ~]$ls-dl/bin lrwxrwxrwx.1root root711月217:32 /bin -usr/bin# 创建软链接[laomacentos7 ~]$ln-s/var/tmp/ mytmp[laomacentos7 ~]$ls-lmytmp lrwxrwxrwx.1laoma laoma911月411:40 mytmp -/var/tmp/# 通过软链接访问目标内容[laomacentos7 ~]$lsmytmp# 等价于 ls /var/tmp/# 通过软链接写入实际写到了目标位置[laomacentos7 ~]$touchmytmp/myfile[laomacentos7 ~]$ls/var/tmp/myfile /var/tmp/myfile# 确认文件出现在目标目录中⚠️注意创建软链接时目标路径建议使用绝对路径否则链接可能指向错误位置。4.2 硬链接Hard Link硬链接就是给同一个数据块起多个文件名。任何一个文件名对文件内容的修改其他文件名都能看到——因为它们共享同一个 inode。# 创建硬链接[laomacentos7 lab]$lnhosts-1 hosts-2# 两个文件的 inode 号完全相同[laomacentos7 lab]$ls-i1hosts-1 hosts-233554556hosts-133554556hosts-2# 链接计数为 2[laomacentos7 lab]$ls-lhosts-1 hosts-2 -rw-r--r--.2laoma laoma15811月413:34 hosts-1 -rw-r--r--.2laoma laoma15811月413:34 hosts-2# 修改一个文件另一个同步变化[laomacentos7 lab]$echohello worldhosts-1[laomacentos7 lab]$cathosts-2# 同样能看到新增内容hello world软链接 vs 硬链接特性软链接硬链接本质指向路径的指针同一 inode 的不同文件名跨文件系统✅ 可以❌ 不可以链接目录✅ 可以❌ 不可以源文件删除后链接失效断链数据仍可访问类比Windows 快捷方式同一个文件多个名字五、Shell 扩展匹配通配符Shell 在执行命令前会对特殊字符进行扩展这是命令行高效操作的关键。通配符速查表模式匹配项*零个或多个字符组成的任意字符串不匹配隐藏文件?任意单个字符[abc…]方括号中的任意一个字符[^abc…]或[!abc…]不在括号中的任意一个字符~当前用户的主目录~username指定用户的主目录[[:alpha:]]任意字母字符[[:lower:]]任意小写字母[[:upper:]]任意大写字母[[:alnum:]]任意字母或数字[[:digit:]]或[0-9]0-9 任意单个数字[[:space:]]任意空白字符{...}匹配列表花括号扩展5.1*匹配任意字符串# 匹配 /etc 下所有 ho 开头的文件[laomacentos7 ~]$ls/etc/ho* /etc/host.conf /etc/hostname /etc/hosts /etc/hosts.allow /etc/hosts.deny# 批量复制[laomacentos7 ~]$cp/etc/ho* /tmp# 批量删除[laomacentos7 ~]$rm/tmp/ho*# * 不匹配隐藏文件匹配隐藏文件需用 .*[laomacentos7 ~]$ls-d.*5.2?匹配单个字符# 查看 file- 后跟 1 个字符的文件[laomacentos7 lab]$lsfile-? file-1 file-2 file-a file-b# 查看 file- 后跟 2 个字符的文件[laomacentos7 lab]$lsfile-?? file-a1 file-a2 file-ab5.3[]匹配字符集合# 匹配 a、b、c 中任意一个[laomacentos7 lab]$lsfile-[abc]file-a file-b# 匹配 1 或 2[laomacentos7 lab]$lsfile-[12]file-1 file-2# 取反匹配[laomacentos7 lab]$lsfile-[^12]file-a file-b# 使用字符类[laomacentos7 lab]$lsfile-[[:digit:]]# 任意数字[laomacentos7 lab]$lsfile-[[:upper:]]# 任意大写字母[laomacentos7 lab]$lsfile-[[:lower:]]# 任意小写字母[laomacentos7 lab]$lsfile-[[:alpha:]]# 任意字母[laomacentos7 lab]$lsfile-[[:alnum:]]# 任意字母或数字5.4{}花括号扩展# 匹配列表[laomacentos7 lab]$lsfile-{a,b,c}# 等价于[laomacentos7 lab]$lsfile-a file-b file-c# {1..5} 表示范围 1 到 5[laomacentos7 lab]$lsfile-{1..5}file-1 file-2# 只有 1 和 23/4/5 不存在所以报错5.5~家目录扩展[laomacentos7 lab]$echo~ /home/laoma[laomacentos7 lab]$echo~root /root六、实战练习以下练习覆盖了本文所有知识点建议在测试环境中动手实践。基础练习在用户主目录中创建三个子目录Music、Pictures和Videos分别创建songX.mp3、snapX.jpg、filmX.avi各 6 个文件X 1~6将各类文件移动到对应目录创建friends、family和work三个子目录将序号 1~2 的文件复制到friends3~4 到family5~6 到work复制family和friends目录到/tmp删除family和friends目录删除work目录中的所有文件再删除work目录在家目录下创建mytmp软链接指向/var/tmp并验证清理所有练习中创建的文件和目录参考使用 Shell 扩展完成# 创建目录和文件mkdirMusic Pictures Videostouchsong{1..6}.mp3 snap{1..6}.jpg film{1..6}.avi# 批量移动mvson* Music/mvsna* Pictures/mvfil* Videos/# 创建分类目录mkdirfriends family work# 使用 [] 按序号分组复制cpMusic/song[12].mp3 Pictures/snap[12].jpg Videos/film[12].avi friends/cpMusic/song[34].mp3 Pictures/snap[34].jpg Videos/film[34].avi family/cpMusic/song[56].mp3 Pictures/snap[56].jpg Videos/film[56].avi work/# 复制目录到 /tmpcp-rfriends/ family/ /tmp# 清理rm-rffriends/ family/rmwork/*rmdirwork# 创建软链接并验证ln-s/var/tmp mytmplsmytmp/# 最终清理rm-rfMusic Pictures Videos mytmp work总结本文覆盖了 Linux 命令行文件管理的核心知识FHS规定了 Linux 文件系统的标准目录结构路径导航使用cd、pwd配合绝对路径和相对路径文件管理命令mkdir、cp、mv、rm是日常最常用的命令软链接像快捷方式硬链接是同一数据的多个名字Shell 通配符*、?、[]、{}让批量操作效率倍增掌握这些基础命令是熟练使用 Linux 系统的第一步。建议多在真实环境中动手练习形成肌肉记忆。本文整理自 2026.07.15 Linux 系统管理课堂笔记