零基础友好|Linux 文件管理从入门到上手
Linux 从零入门:命令行管理文件完整教程
适配:CentOS
受众:零基础 Linux 学习者,聚焦文件 / 目录全套操作,包含 FHS 规范、软硬链接、通配符匹配
一、Linux 文件系统 FHS 规范
1.1 什么是 FHS
FHS(Filesystem Hierarchy Standard)文件系统层次标准,统一 Linux 目录存放规则,保证不同发行版目录结构一致。
分为两层规范:
- 定义根目录
/下各目录存放数据类型; - 定义
/usr、/var下级子目录规范。
1.2 核心系统目录用途
| 目录 | 功能说明 |
|---|---|
/ |
系统根目录,所有文件入口 |
/boot |
系统开机启动内核、引导文件 |
/dev |
device 硬件设备文件,硬盘、网卡、光驱等 |
/etc |
全局系统、软件配置文件目录 |
/home |
普通用户家目录,/home/用户名存放个人文件 |
/root |
root 管理员专属家目录 |
/tmp |
全局临时目录,10 天未访问文件自动删除 |
/var |
variable 可变数据:日志、数据库、缓存、网站数据 |
/run |
运行时进程临时文件,重启自动重建 |
/usr |
Unix System Resource,系统软件、程序库、用户命令 |
/usr/bin |
普通用户可执行命令 |
/usr/sbin |
系统管理员管理命令 |
/usr/local |
手动编译安装的自定义软件 |
1.3 文件路径两种类型
- 绝对路径:以
/开头,完整定位文件,脚本中推荐使用 - 相对路径:不以
/开头,基于当前所在目录跳转
.代表当前目录..代表上一级父目录~代表当前用户家目录
二、目录导航基础命令 pwd /cd
2.1 pwd 打印当前工作目录
# Print Working Directory,查看当前所在路径
pwd
# 示例输出 /home/XXX
2.2 cd 切换目录全量实操
# 切换到绝对路径 /usr/bin
cd /usr/bin
pwd
# 切换到上一次访问的目录(快速往返)
cd -
# 切换到当前用户家目录,两种写法等价
cd
cd ~
# 切换到root用户家目录(普通用户无权限进入)
cd ~root
# 切换到父目录(上一级)
cd ..
# 多层相对路径跳转:../../ 往上两级
cd /usr/share/doc/xxx
cd ../../
# 多层跳转至/etc/yum
cd ../../../../etc/yum
三、目录查看命令 ls /tree/stat
3.1 ls 高频参数大全
# 基础展示,仅文件名
ls
# -1 数字1:单列分行展示文件
ls -1
# -a all:显示隐藏文件(.开头文件)
ls -a
# -l 长列表:权限、所有者、大小、修改时间
ls -l /etc/hosts
# -lh human:人性化单位KB/MB展示文件大小
ls -lh
# -r reverse:反向排序文件名
ls -rl
# -t time:按文件修改时间从新到旧排序
ls -tl
# -d 仅查看目录本身,不展开内部文件
ls -ld /etc/yum
# -R recursive:递归遍历所有子目录文件
ls -R /etc/yum
四、文件创建与时间戳修改 touch
touch 两大核心功能:文件不存在则创建空文件;文件已存在则刷新文件时间戳
# touch 两个核心作用:1.不存在则创建空文件;2.存在则刷新时间戳
touch test.txt
# -c --no-create:文件不存在也不会新建,仅更新已有文件时间
touch -c notexist.txt
# -a 仅修改访问时间atime
touch -a test.txt
# -m 仅修改内容修改时间mtime
touch -m test.txt
# -r 参考另一个文件的时间戳
touch -r /etc/hosts test.txt
五、目录创建 mkdir
# 创建单个目录
mkdir lab
# 一次性创建多个同级目录
mkdir lab1 lab2
# 无-p无法创建多级嵌套目录,会报错
mkdir dir1/dir2/dir3
# -p parent 递归创建多级目录,不存在自动新建,存在不报错
mkdir -p dir1/dir2/dir3/dir4
# 配合tree查看创建结果
tree dir1
六、文件 / 目录复制 cp
6.1 复制文件
# 复制/etc/hosts到当前目录 . 代表当前目录
cp /etc/hosts .
# 复制并重命名
cp /etc/hosts hosts-bak
# -i 覆盖前交互式询问,防止误覆盖
cp -i /etc/hosts hosts-bak
# 多个文件复制,目标必须是目录
cp /etc/passwd /etc/hosts.allow ./lab/
6.2 复制目录(必须加 -r 递归参数)
# 不加-r会直接跳过目录,报错
cp /etc/yum .
# -r 递归复制整个目录
cp -r /etc/yum ./yum-copy
# 同名目录复制:会将源目录放入目标目录内部,不会覆盖
cp -r /etc/yum ./yum-copy
七、移动 / 重命名 mv
mv 同一目录 = 重命名;跨目录 = 移动文件 / 目录
# 移动单个文件到指定目录
mv hosts-bak ../lab1
# 多个文件移动,目标必须是目录
mv passwd hosts ../lab1/
# 同目录重命名文件
mv hosts.allow hosts.allow-new
# 移动整个目录
mv etc ../lab1
# 批量移动多个目录
mv home yum yum-copy ../lab1
八、删除操作 rmdir /rm
8.1 rmdir 仅删除空目录
# 空目录可直接删除
rmdir lab2
# 目录内有文件则删除失败
rmdir etc
8.2 rm 删除文件 / 目录(高危命令,无回收站)
# 删除单个文件,有写保护文件会提示确认
rm hosts
# -f force 强制删除,不弹窗询问
rm -f hosts
# -r recursive 递归删除目录(目录删除必备)
rm -r yum
# -rf 强制递归删除目录,生产慎用
rm -rf etc
# 批量删除多个目录
rm -rf home yum-copy
# 清理实验环境
rm -fr lab lab1 lab2 dir1
⚠️ 高危禁止:rm -rf / 直接清空服务器全部数据,无法恢复
九、软硬链接 ln
9.1 软链接(符号链接 symbol link)
等价 Windows 快捷方式,存放源文件路径,源文件删除后链接失效
# ln -s 创建软链接 格式 ln -s 源文件 链接名
ln -s /var/tmp/ mytmp
# 查看软链接信息
ls -l mytmp
# 通过软链接操作会同步修改真实目录文件
touch mytmp/testfile
ls /var/tmp/testfile
9.2 硬链接 ln
多个文件名指向同一个 inode 数据块,删除任意一个链接文件,数据仍存在;不能跨分区、不能链接目录
# 创建文件
cp /etc/hosts hosts-1
# 创建硬链接
ln hosts-1 hosts-2
# -i 查看inode编号,两个文件inode完全一致
ls -i1 hosts-1 hosts-2
# 修改其中一个文件内容,另一个同步变化
echo "test content" >> hosts-1
cat hosts-2
十、Shell 通配符批量匹配文件
10.1 通配符对照表
| 符号 | 匹配规则 |
|---|---|
* |
0 个或任意多个字符,不匹配隐藏文件 |
? |
任意单个字符 |
[abc] |
匹配括号内任意一个字符 |
[^abc] |
匹配不在括号内的字符 |
~ |
当前用户家目录;~用户名 指定用户家目录 |
{a,b,1..10} |
批量扩展匹配集合、数字区间 |
[[:digit:]] |
数字 0-9 |
[[:alpha:]] |
大小写字母 |
[[:lower:]] |
小写字母 |
[[:upper:]] |
大写字母 |
10.2 * 星号匹配示例
# 匹配/etc下ho开头所有文件
ls /etc/ho*
# 批量复制ho开头文件到/tmp
cp /etc/ho* /tmp
# 批量删除/tmp下ho开头文件
rm /tmp/ho*
# 查看全部隐藏文件
ls -d .*
10.3 ? 单字符匹配
# 提前创建测试文件
touch file-1 file-2 file-a file-ab file-a1
# file-后跟1个字符
ls file-?
# file-后跟2个字符
ls file-??
10.4 [] 括号字符匹配
# 匹配1、2
ls file-[12]
# 匹配a、b
ls file-[ab]
# 匹配非1、2的字符
ls file-[^12]
# 匹配数字、大小写字母
ls file-[[:digit:]]
ls file-[[:upper:]]
ls file-[[:lower:]]
ls file-[[:alnum:]]
10.5 {} 集合与区间扩展
# 等价 ls file-a file-b file-c
ls file-{a,b,c}
# 数字区间1~5
ls file-{1..5}
10.6 ~ 用户目录匹配
# 打印当前用户家目录路径
echo ~
# 切换到家目录
cd ~
# 打印root家目录路径
echo ~root
十一、文件操作速查表
| 操作类型 | 单文件 | 多文件 / 目录 |
|---|---|---|
| 创建目录 | mkdir dir | mkdir -p a/b/c |
| 复制文件 | cp f1 f2 | cp f1 f2 dir/ |
| 复制目录 | cp -r d1 d2 | cp -r d1 d2 dir/ |
| 移动 / 重命名 | mv f1 f2 | mv f1 f2 dir/ |
| 删除文件 | rm f1 | rm f1 f2 f3 |
| 删除空目录 | rmdir dir | - |
| 删除任意目录 | rm -r dir | rm -rf d1 d2 |
| 创建软链接 | ln -s 源 链接名 | - |
| 创建硬链接 | ln 源 链接名 | - |
十二、新手避坑总结
- Linux 严格区分大小写,
File.txt和file.txt是两个独立文件; - 删除命令
rm无回收站,rm -rf谨慎使用,禁止rm -rf /; - 复制、删除目录必须携带
-r递归参数; *通配符不会匹配.开头隐藏文件,查看隐藏文件加ls -a;- 软链接源文件删除后链接失效,硬链接不支持跨分区、目录;
- 脚本路径尽量使用绝对路径,避免切换目录后执行报错;
- 操作
/etc、/root系统目录,普通用户需加sudo临时提权。
十三、完整综合实操案例
# 1. 创建多级实验目录
mkdir -p project/code project/log
# 2. 创建测试文件
touch project/code/demo.py project/log/run.log
# 3. 写入代码内容
echo "print('Linux 文件管理实操')" > project/code/demo.py
# 4. 树形查看目录结构
tree project
# 5. 复制项目备份
cp -r project project_bak
# 6. 创建软链接快速访问项目
ln -s ~/project myproj
# 7. 批量匹配查看py文件
ls project/code/*.py
# 8. 查看文件元数据
stat project/code/demo.py
# 9. 清理实验环境
rm -rf project project_bak myproj
在用户的主目录中,创建三个子目录:Music、Pictures 和 Videos。
在用户的主目录中:
一.创建六个文件,并以 songX.mp3 形式取名。
创建六个文件,并以 snapX.jpg 形式取名。
创建六个文件,并以 filmX.avi 形式取名
在每一组文件中,将 X 替换为数字 1 到 6 。
二.将 songX.mp3 所有文件移动到 Music 目录。
将 snapX.jpg 所有文件移动到 Pictures 目录。
将 filmX.avi 所有文件移动到 Videos 目录。
在用户的主目录中,创建三个子目录:friends、family 和 work。
将所有序号是1和2的文件复制到 friends 目录。
将所有序号是3和4的文件复制到 family 目录。
将所有序号是5和6的文件复制到 work 目录。
复制 family 和 friends 目录到/tmp中。
三.删除 family 和 friends 目录。
删除 work 目录中所有文件,然后在删除 work 目录。
删除以上步骤中创建的所有文件和目录。


更多推荐

所有评论(0)