Linux命令行文件管理
2026/7/17 4:30:56 网站建设 项目流程

Linux 命令行文件管理完全指南

本文整理自 Linux 系统管理课程笔记,涵盖文件系统层次结构、路径导航、文件管理命令、链接以及 Shell 通配符等内容。适合 Linux 初学者参考学习。


一、文件系统层次结构(FHS)

Linux 遵循开源协议,任何人都可以根据 Linux 核心代码制作和发行自己的版本。如果每个人都按自己喜好随意在/目录下创建目录、存放文件,将导致不同 Linux 系统之间无法互通。为了解决这个问题,FHS(Filesystem Hierarchy Standard,文件系统层次结构标准)应运而生。

FHS 采用树形结构组织文件,定义了两层规范:

  1. 第一层:定义/下面各个目录应该存放什么文件数据。例如/etc放置配置文件,/bin/sbin放置可执行文件等。
  2. 第二层:针对/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— 切换目录

# 查看当前工作目录[laoma@centos7 ~]$pwd/home/laoma# 切换到绝对路径[laoma@centos7 ~]$cd/usr/bin[laoma@centos7 bin]$pwd/usr/bin# 切换到另一个目录[laoma@centos7 bin]$cd/usr/share/doc[laoma@centos7 doc]$pwd/usr/share/doc# cd - 返回上一次所在目录[laoma@centos7 doc]$cd- /usr/bin# cd 或 cd ~ 返回家目录[laoma@centos7 bin]$cd[laoma@centos7 ~]$pwd/home/laoma# cd .. 进入上一级目录(父目录)[laoma@centos7 ~]$cd..[laoma@centos7 home]$pwd/home# . 代表当前目录[laoma@centos7 ~]$file./.bash_history# 等价于 file .bash_history# 使用相对路径切换[laoma@centos7 ~]$cd/usr/share/doc/at-spi2-core-2.28.0/[laoma@centos7 at-spi2-core-2.28.0]$cd../../[laoma@centos7 share]$pwd/usr/share# 从 /usr/share 切换到 /etc/yum[laoma@centos7 share]$cd../../../../etc/yum[laoma@centos7 yum]$pwd/etc/yum

2.3ls— 列出目录内容

# -1 单列格式展示[laoma@centos7 ~]$ls-1公共 模板 视频 图片 文档 下载 音乐 桌面# -R 递归查看子目录[laoma@centos7 ~]$ls-R/etc/yum# -l 长列表格式,查看文件详细信息[laoma@centos7 ~]$ls-l/etc/hosts -rw-r--r--.1root root19711314:35 /etc/hosts# -r 反向排序[laoma@centos7 ~]$ls-rl# -t 按修改时间排序(最新的在前)[laoma@centos7 ~]$ls-tl# -d 只查看目录本身,而非目录内容[laoma@centos7 ~]$ls-ld/etc/yum drwxr-xr-x.6root root100121310:42 /etc/yum

2.4tree— 树形查看目录结构

# 安装 tree 工具[root@centos7 ~]# yum install -y tree[laoma@centos7 ~]$ tree /etc/yum /etc/yum ├── fssnap.d ├── pluginconf.d │ ├── fastestmirror.conf │ └── langpacks.conf ├── protected.d │ └── systemd.conf ├── vars │ ├── contentdir │ └── infra └── version-groups.conf4directories,6files

2.5stat— 查看文件元数据

[laoma@centos7 ~]$stat/etc/fstab 文件:"/etc/fstab"大小:541 块:8 IO 块:4096 普通文件 设备:fd00h/64768d Inode:67160130 硬链接: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— 更新时间戳 / 创建空文件

# 更新已有文件的时间戳[laoma@centos7 ~]$touchzhang.txt# 文件不存在时,创建空文件[laoma@centos7 ~]$touchnewfile.txt# -c 文件不存在时不创建[laoma@centos7 ~]$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 dir3

3.1mkdir— 创建目录

# 创建单个目录[laoma@centos7 ~]$mkdirlab# 同时创建多个目录[laoma@centos7 ~]$mkdirlab1 lab2# -p 递归创建多级目录[laoma@centos7 ~]$mkdir-pdir1/dir2/dir3/dir4[laoma@centos7 ~]$ tree dir1 dir1 └── dir2 └── dir3 └── dir4

3.2cp— 复制文件和目录

# 复制文件到当前目录[laoma@centos7 lab]$cp/etc/hosts.# 复制并重命名[laoma@centos7 lab]$cp/etc/hosts ./hosts-1# -i 覆盖前询问确认[laoma@centos7 lab]$cp-i/etc/hosts ./hosts-1 cp:是否覆盖"./hosts-1"yes# 复制多个文件到目录(目标必须是目录)[laoma@centos7 lab]$cp/etc/passwd /etc/hosts.allow.# -r 递归复制目录[laoma@centos7 lab]$cp-r/etc/yum.[laoma@centos7 lab]$cp-r/etc/yum ./yum-1# 注意:目标存在同名目录时,源目录会被放入目标目录下,而非覆盖[laoma@centos7 lab]$cp-r/etc/yum ./yum[laoma@centos7 lab]$lsyum fssnap.d pluginconf.d protected.d vars version-groups.conf yum# 多了一个 yum 子目录

3.3mv— 移动和重命名

# 移动单个文件[laoma@centos7 lab]$mvhosts-1../lab1# 移动多个文件(目标必须是目录)[laoma@centos7 lab]$mvpasswdhosts /home/laoma/lab1/# 重命名文件(同一目录下移动 = 重命名)[laoma@centos7 lab]$mvhosts.allow hosts.allow-new# 移动目录(不需要 -r)[laoma@centos7 lab]$mvetc../lab1# 同时移动多个目录[laoma@centos7 lab]$mvhome/ yum/ yum-1/../lab1

3.4rmdirrm— 删除

# rmdir 只能删除空目录[laoma@centos7 lab]$rmdir../lab2[laoma@centos7 lab1]$rmdiretc rmdir: 删除"etc"失败: 目录非空# 非空目录无法删除!# rm 删除文件[laoma@centos7 lab1]$rmhosts# -f 强制删除,不提示[laoma@centos7 lab1]$rm-fcacerts# -r 递归删除目录及其内容[laoma@centos7 lab1]$rm-ryum# -rf 递归强制删除(谨慎使用!)[laoma@centos7 lab1]$rm-rfetc home/ yum-1/

⚠️警告rm -rf是 Linux 中最危险的命令之一,删除后无法恢复。执行前请务必确认路径正确!


四、链接:软链接与硬链接

4.1 软链接(Symbolic Link)

软链接类似于 Windows 中的快捷方式,它是一个指向目标文件或目录的特殊文件。

# 查看系统中的软链接[laoma@centos7 ~]$ls-dl/bin lrwxrwxrwx.1root root711217:32 /bin ->usr/bin# 创建软链接[laoma@centos7 ~]$ln-s/var/tmp/ mytmp[laoma@centos7 ~]$ls-lmytmp lrwxrwxrwx.1laoma laoma911411:40 mytmp ->/var/tmp/# 通过软链接访问目标内容[laoma@centos7 ~]$lsmytmp# 等价于 ls /var/tmp/# 通过软链接写入,实际写到了目标位置[laoma@centos7 ~]$touchmytmp/myfile[laoma@centos7 ~]$ls/var/tmp/myfile /var/tmp/myfile# 确认文件出现在目标目录中

⚠️注意:创建软链接时,目标路径建议使用绝对路径,否则链接可能指向错误位置。

4.2 硬链接(Hard Link)

硬链接就是给同一个数据块起多个文件名。任何一个文件名对文件内容的修改,其他文件名都能看到——因为它们共享同一个 inode。

# 创建硬链接[laoma@centos7 lab]$lnhosts-1 hosts-2# 两个文件的 inode 号完全相同[laoma@centos7 lab]$ls-i1hosts-1 hosts-233554556hosts-133554556hosts-2# 链接计数为 2[laoma@centos7 lab]$ls-lhosts-1 hosts-2 -rw-r--r--.2laoma laoma15811413:34 hosts-1 -rw-r--r--.2laoma laoma15811413:34 hosts-2# 修改一个文件,另一个同步变化[laoma@centos7 lab]$echohello world>>hosts-1[laoma@centos7 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 开头的文件[laoma@centos7 ~]$ls/etc/ho* /etc/host.conf /etc/hostname /etc/hosts /etc/hosts.allow /etc/hosts.deny# 批量复制[laoma@centos7 ~]$cp/etc/ho* /tmp# 批量删除[laoma@centos7 ~]$rm/tmp/ho*# * 不匹配隐藏文件,匹配隐藏文件需用 .*[laoma@centos7 ~]$ls-d.*

5.2?匹配单个字符

# 查看 file- 后跟 1 个字符的文件[laoma@centos7 lab]$lsfile-? file-1 file-2 file-a file-b# 查看 file- 后跟 2 个字符的文件[laoma@centos7 lab]$lsfile-?? file-a1 file-a2 file-ab

5.3[]匹配字符集合

# 匹配 a、b、c 中任意一个[laoma@centos7 lab]$lsfile-[abc]file-a file-b# 匹配 1 或 2[laoma@centos7 lab]$lsfile-[12]file-1 file-2# 取反匹配[laoma@centos7 lab]$lsfile-[^12]file-a file-b# 使用字符类[laoma@centos7 lab]$lsfile-[[:digit:]]# 任意数字[laoma@centos7 lab]$lsfile-[[:upper:]]# 任意大写字母[laoma@centos7 lab]$lsfile-[[:lower:]]# 任意小写字母[laoma@centos7 lab]$lsfile-[[:alpha:]]# 任意字母[laoma@centos7 lab]$lsfile-[[:alnum:]]# 任意字母或数字

5.4{}花括号扩展

# 匹配列表[laoma@centos7 lab]$lsfile-{a,b,c}# 等价于[laoma@centos7 lab]$lsfile-a file-b file-c# {1..5} 表示范围 1 到 5[laoma@centos7 lab]$lsfile-{1..5}file-1 file-2# 只有 1 和 2,3/4/5 不存在所以报错

5.5~家目录扩展

[laoma@centos7 lab]$echo~ /home/laoma[laoma@centos7 lab]$echo~root /root

六、实战练习

以下练习覆盖了本文所有知识点,建议在测试环境中动手实践。

基础练习

  1. 在用户主目录中创建三个子目录:MusicPicturesVideos
  2. 分别创建songX.mp3snapX.jpgfilmX.avi各 6 个文件(X = 1~6)
  3. 将各类文件移动到对应目录
  4. 创建friendsfamilywork三个子目录
  5. 将序号 1~2 的文件复制到friends,3~4 到family,5~6 到work
  6. 复制familyfriends目录到/tmp
  7. 删除familyfriends目录
  8. 删除work目录中的所有文件,再删除work目录
  9. 在家目录下创建mytmp软链接指向/var/tmp,并验证
  10. 清理所有练习中创建的文件和目录

参考:使用 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 文件系统的标准目录结构
  • 路径导航使用cdpwd,配合绝对路径和相对路径
  • 文件管理命令mkdircpmvrm是日常最常用的命令
  • 软链接像快捷方式,硬链接是同一数据的多个名字
  • Shell 通配符*?[]{}让批量操作效率倍增

掌握这些基础命令,是熟练使用 Linux 系统的第一步。建议多在真实环境中动手练习,形成肌肉记忆。


本文整理自 2026.07.15 Linux 系统管理课堂笔记

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询