Linux 命令之目录管理
《Linux 命令之目录管理》深度学习版 📁🧩
🎉 在 Linux 系统中,目录(Directory)是组织文件结构的基础单位。掌握目录管理命令不仅有助于你高效地维护服务器上的文件系统结构,还能帮助你在自动化脚本、日志处理、部署任务等场景中游刃有余。
本章将带你从零开始,系统性地学习 Linux 中与目录操作相关的常用命令,并结合实际案例,助你轻松驾驭服务器上的每一个目录!
🎯 学习目标
- 掌握 Linux 中常见的目录管理命令(如
cd
,ls
,mkdir
,rmdir
,rm -r
等) - 理解绝对路径与相对路径的区别
- 能够熟练进行目录的创建、切换、查看、复制、移动、删除等操作
- 理解递归操作、权限控制、隐藏目录等高级技巧
- 避免常见误操作,提升目录管理的安全性和效率
⭐ 核心重点(知识点速览)
类别 | 命令 | 功能 |
---|---|---|
切换目录 | cd |
进入指定目录 |
查看目录内容 | ls |
列出当前目录下的文件和子目录 |
显示当前路径 | pwd |
打印当前工作目录 |
创建目录 | mkdir |
创建新目录 |
删除目录 | rmdir , rm -r |
删除空目录或非空目录 |
复制目录 | cp -r |
将整个目录及其内容复制到另一个位置 |
移动/重命名目录 | mv |
移动目录或更改目录名 |
查找目录 | find , locate |
在系统中查找目录 |
检查磁盘使用情况 | du , df |
查看目录占用空间 |
📖 详细讲解
一、基本目录操作命令 🧰
1. cd
:切换当前目录 🔄
cd /home/user # 绝对路径进入 user 目录
cd ../ # 返回上一级目录
cd ~ # 回到当前用户的家目录
cd - # 切换回上一次所在的目录
📌 注意:
- 如果路径含空格,请用双引号包裹:
cd "My Folder"
2. ls
:列出目录内容 📋
ls # 列出当前目录下非隐藏文件和目录
ls -l # 以长格式显示文件信息(包括权限、大小、修改时间等)
ls -a # 显示所有文件(包括隐藏文件)
ls -la # 同时显示隐藏文件并用长格式
ls *.txt # 显示所有 .txt 结尾的文件
📌 小贴士:
- 隐藏目录也以
.
开头(如.ssh
) - 使用
ls -lh
可读性更好(自动显示 KB/MB)
3. pwd
:显示当前路径 📍
pwd # 输出类似:/home/ubuntu
4. mkdir
:创建目录 📂
mkdir folder1 # 创建单个目录
mkdir -p a/b/c # 递归创建多级目录结构(推荐使用)
📌 注意:
- 若目录已存在,会报错;可先检查是否存在再创建(如配合
test -d
使用)
5. rmdir
:删除空目录 ❌
rmdir folder # 删除空目录
rmdir -p a/b/c # 递归删除路径中的多个空目录
📌 警告:
rmdir
只能删除空目录!如果目录中有文件,必须使用rm -r
6. rm -r
:递归删除目录及内容 🗑️
rm -r folder # 删除整个目录及其内容(递归删除)
rm -rf folder # 强力组合!慎用!
📌 警告:
rm -rf /
是“自杀命令”,绝对不能执行!
7. cp -r
:复制目录 📥
cp -r source_dir dest_dir # 将源目录及其内容复制到目标目录
📌 说明:
-r
表示递归复制,适用于目录
8. mv
:移动或重命名目录 🔄
mv old_dir new_dir # 重命名目录
mv dir /tmp/ # 移动目录到 tmp 目录
📌 说明:
mv
不仅可以移动目录,还可以用于重命名
二、高级目录管理技巧 🧠
✅ 1. 通配符(Wildcard)*
用于匹配多个目录:
通配符 | 含义 | 示例 |
---|---|---|
* |
匹配任意数量字符 | mv *.log logs/ |
? |
匹配单个字符 | dir? 匹配 dir1 , dirA |
[abc] |
匹配括号中的任意一个字符 | dir[12] 匹配 dir1 和 dir2 |
[0-9] |
匹配数字范围 | dir[0-9] |
[a-z] |
匹配字母范围 | dir[a-z] |
✅ 2. 递归操作 -r
很多命令加上 -r
参数可以递归处理目录中的内容:
rm -r folder
cp -r source/ dest/
✅ 3. 权限与属性 🛡️
使用 ls -ld
查看目录权限:
drwxr-xr-x 2 ubuntu ubuntu 4096 Jun 18 10:00 mydir
含义:
- 第一组
rwx
:所有者可读写执行 - 第二组
r-x
:所属组只读执行 - 第三组
r-x
:其他用户只读执行
📌 修改权限:
chmod 755 mydir # 设置权限为 rwxr-xr-x
📌 修改拥有者:
chown user:group mydir
三、实战案例分析 🧪
🎯 场景一:批量创建项目目录结构 🏗️
mkdir -p project/{src,bin,data,logs}
解释:
- 创建
project
文件夹,并在其下创建src
,bin
,data
,logs
四个子目录
🎯 场景二:备份并清空日志目录 📄🗑️
DATE=$(date +%Y%m%d)
tar czvf /backup/logs_$DATE.tar.gz /var/log/app_logs && rm -rf /var/log/app_logs/*
解释:
- 打包当前日志目录
- 清空原目录内容但保留目录结构
🎯 场景三:清理旧版本代码目录 🗑️
find /opt/code -type d -name "v[0-9]*" -mtime +30 -exec rm -rf {} \;
解释:
- 查找
/opt/code
下名为v数字
的目录(如v1.0
,v2.3
) - 修改时间超过 30 天的目录全部删除
🎯 场景四:查看最大占用目录 🔍
du -sh /home/* | sort -hr | head -n 20
解释:
du -sh
:统计每个用户的家目录大小sort -hr
:按人类可读方式排序head -n 20
:显示前 20 个
四、不同系统的差异与注意事项 ⚠️
项目 | Bash | Dash (Ubuntu 默认) | zsh |
---|---|---|---|
支持通配符 | ✅ | ✅ | ✅ |
支持 ~ 表示家目录 |
✅ | ✅ | ✅ |
支持 && 和 ` |
` | ✅ | |
推荐脚本开头 | #!/bin/bash |
#!/bin/sh |
#!/bin/zsh |
注意子 shell 变量作用域 | 是 | 是 | 是 |
📝 小贴士:
- Ubuntu 默认
/bin/sh
是dash
,虽然支持大多数语法,但建议统一使用bash
- 使用双引号包裹变量,防止路径含空格出错
- 对重要目录操作前建议先备份
五、常见陷阱与解决方案 ❗
问题 | 原因 | 解决方法 |
---|---|---|
No such directory |
路径拼写错误 | 使用 ls 或 test -d 检查 |
Permission denied |
权限不足 | 使用 sudo |
ambiguous redirect |
路径含有空格 | 使用双引号包裹变量 |
Argument list too long |
文件太多导致命令行超限 | 使用 find 替代 rm * |
Too many arguments |
参数过多 | 使用 xargs 或循环处理 |
Directory not empty |
删除非空目录未加 -r |
使用 rm -r |
Operation not permitted |
目录被锁定或正在运行 | 使用 lsof 查看占用情况 |
六、总结一句话 🧠
掌握了 Linux 目录管理命令,你就拥有了操作系统中最基础也是最关键的导航能力 —— 你可以随心所欲地创建、切换、查看、移动、删除任何目录。
如果你已经准备好进入下一阶段的学习(比如 Shell 编程、正则表达式、系统调优等),欢迎继续告诉我 😊