无论是Linux新手还是运维老手,目录操作都是最基础也最高频的操作。本文将系统讲解Linux下常用的目录操作命令,包括ls、cd、pwd、mkdir、rmdir、rm、cp、mv等,每个命令都配有详细选项说明和实际示例,帮助你快速上手并灵活运用。
📁 一、前言
在Linux系统中,一切皆文件,而目录(文件夹)则是组织这些文件的“容器”。熟练掌握目录操作命令,是学习Linux的第一步。本文将带你逐一攻破这些基础但强大的命令,让你在终端中如臂使指。
📂 二、目录操作核心命令
1. ls —— 列出目录内容
ls是最常用的目录查看命令,用于显示指定目录下的文件和子目录。
基本语法
bash
ls [选项] [目录名]
常用选项
| 选项 | 作用 |
|---|
-l | 以长格式显示详细信息(权限、链接数、所有者、大小、修改时间) |
-a | 显示所有文件,包括以.开头的隐藏文件 |
-h | 与-l配合,以人类可读的格式显示文件大小(如K、M、G) |
-R | 递归显示子目录的内容 |
-t | 按修改时间排序(最新的在前) |
-r | 反向排序 |
-S | 按文件大小排序 |
--color | 用颜色区分文件类型(多数发行版默认开启) |
实用示例
bash
# 列出当前目录下的所有文件(不含隐藏)
ls
# 详细列出当前目录所有文件(含隐藏)
ls -la
# 详细列出并以人类可读大小显示
ls -lh
# 递归列出所有子目录内容
ls -R /home/user
# 按修改时间列出最近修改的文件
ls -lt
2. cd —— 切换当前工作目录
cd是最基础的目录跳转命令,用于改变当前所在的工作目录。
基本语法
bash
cd [目标目录]
特殊路径
| 路径 | 含义 |
|---|
cd 或 cd ~ | 切换到当前用户的家目录 |
cd / | 切换到根目录 |
cd .. | 切换到上级目录 |
cd - | 切换到上一次所在的目录(相当于电视遥控器的“返回”) |
cd ../.. | 切换到上两级目录 |
实用示例
bash
# 切换到 /var/log 目录
cd /var/log
# 返回用户家目录
cd ~
# 回到刚才的目录
cd -
# 向上跳两级
cd ../..
💡 技巧:按Tab键可以自动补全目录名,按两次Tab会列出所有可能的匹配项。
3. pwd —— 显示当前所在路径
pwd(Print Working Directory)输出当前工作目录的绝对路径,非常实用。
基本语法
bash
pwd [选项]
常用选项
| 选项 | 作用 |
|---|
-P | 显示物理路径,不显示软链接(符号链接)的真实路径 |
-L | 显示逻辑路径,即包含软链接的路径(默认行为) |
实用示例
bash
# 显示当前绝对路径
pwd
# 输出示例:/home/username/Documents
# 进入一个软链接目录后查看物理路径
cd /tmp/link_to_var
pwd -P # 输出:/var
4. mkdir —— 创建目录
mkdir(Make Directory)用于创建新的空目录。
基本语法
bash
mkdir [选项] 目录名...
常用选项
| 选项 | 作用 |
|---|
-p | 递归创建多级目录,如果父目录不存在则自动创建 |
-m | 创建时直接设置目录权限(如chmod格式) |
-v | 显示创建过程的详细信息 |
实用示例
bash
# 创建单层目录
mkdir myfolder
# 递归创建多级目录(如 project/src/assets)
mkdir -p project/src/assets
# 创建权限为 755 的目录
mkdir -m 755 public_dir
# 创建时显示过程
mkdir -v -p a/b/c
# 输出:mkdir: created directory 'a'
# mkdir: created directory 'a/b'
# mkdir: created directory 'a/b/c'
5. rmdir —— 删除空目录
rmdir只能删除空目录,如果目录非空会报错。
基本语法
bash
rmdir [选项] 目录名...
常用选项
| 选项 | 作用 |
|---|
-p | 递归删除空目录链(如上两级都为空则一并删除) |
-v | 显示删除过程 |
实用示例
bash
# 删除空目录
rmdir empty_folder
# 递归删除 a/b/c(如果c为空则删除c,之后若b为空则删除b,以此类推)
rmdir -p a/b/c
# 尝试删除非空目录会报错(需要使用 rm -r)
rmdir non_empty # 错误:目录非空
⚠️ 注意:日常使用中更常用rm -r来删除非空目录,rmdir主要用于专门的空目录清理场景。
6. rm —— 删除目录或文件
rm(Remove)可以删除文件和目录,功能强大但危险,需谨慎使用。
基本语法
bash
rm [选项] 文件或目录...
常用选项(针对目录操作)
| 选项 | 作用 |
|---|
-r 或 -R | 递归删除目录及其内容(删除目录必需) |
-f | 强制删除,忽略不存在的文件,不提示确认 |
-i | 交互式删除,每次删除前都提示确认 |
-v | 显示删除的详细信息 |
实用示例
bash
# 递归删除目录(会提示确认,除非使用-f)
rm -r mydir
# 强制递归删除(不提示,非常危险!)
rm -rf mydir
# 交互式删除每个文件/目录
rm -ri old_data/
# 删除前确认,但跳过不存在的文件
rm -rfv temp_dir
# 安全删除:先确认再删除(别名建议)
alias rm='rm -i' # 设置为每次删除都询问
🚨 安全提醒:rm -rf /*会删除整个系统,切勿手误!删除前建议先用ls确认路径。
7. cp —— 复制目录
cp(Copy)用于复制文件或目录。复制目录时需要使用递归选项。
基本语法
bash
cp [选项] 源路径 目标路径
常用选项(针对目录操作)
| 选项 | 作用 |
|---|
-r 或 -R | 递归复制目录及其全部内容(复制目录必需) |
-a | 归档模式(等于-dR --preserve=all),保留权限、时间戳、链接等属性 |
-u | 仅在源文件比目标新或目标不存在时复制(更新操作) |
-v | 显示复制过程 |
-i | 交互模式,覆盖前提示 |
-p | 保留文件属性(模式、所有权、时间戳) |
实用示例
bash
# 复制整个目录(包括所有子文件)
cp -r docs/ docs_backup/
# 复制目录并保留所有属性
cp -a project/ project_backup/
# 复制目录,覆盖前询问
cp -ri source_dir/ dest_dir/
# 只复制更新的文件(增量备份)
cp -ru /home/user/data/ /backup/data/
# 复制时显示每个文件名
cp -rv images/ /mnt/usb/
8. mv —— 移动或重命名目录
mv(Move)用于移动目录(或文件)到另一个位置,或者重命名目录。
基本语法
bash
mv [选项] 源目录 目标目录
常用选项
| 选项 | 作用 |
|---|
-i | 交互模式,覆盖前提示 |
-u | 仅在源比目标新或目标不存在时移动 |
-v | 显示移动过程 |
-n | 不覆盖已存在的目标 |
实用示例
bash
# 重命名目录
mv old_name_dir new_name_dir
# 移动目录到另一个路径下
mv myfolder /home/user/backup/
# 移动并显示过程
mv -v work/ /tmp/
# 输出:renamed 'work/' -> '/tmp/work/'
# 移动时避免覆盖同名目录
mv -n existing_dir /backup/
# 交互式移动(覆盖前确认)
mv -i temp_dir /target/
🧠 三、常见选项组合速查表
| 命令场景 | 推荐命令 | 说明 |
|---|
| 查看当前目录详细内容 | ls -lh | 显示大小易读的详细列表 |
| 查看包括隐藏文件 | ls -la | 常用别名ll(部分系统已内置) |
| 快速返回用户主目录 | cd ~ 或 cd | 最简方式 |
| 创建多级目录 | mkdir -p a/b/c | 自动创建中间目录 |
| 删除非空目录 | rm -rf dir | ⚠️ 谨慎使用,先用ls确认 |
| 复制整个目录 | cp -r source dest | 或使用cp -a保留属性 |
| 安全复制/移动(提示覆盖) | cp -i / mv -i | 避免误覆盖 |
| 备份目录并显示进度 | cp -rv source dest/ | 可看到每个文件 |
| 查看当前路径 | pwd | 有时可结合-P查看真实路径 |
🔐 四、安全操作建议
慎用 rm -rf:执行前先用ls确认路径是否正确,也可先echo展开通配符。
善用 -i 选项:对rm、cp、mv设置-i别名(alias rm='rm -i')可防止误删。
理解绝对路径与相对路径:
使用 Tab 补全:减少输入错误,提高效率。
测试危险命令:先用echo或ls测试通配符扩展结果。
📚 五、总结与练习
掌握程度自测
答案提示
mkdir -p ~/project/src/assets
cp -a source_dir dest_dir
ls -l 目标目录 | grep "^-" | wc -l(统计文件个数,不包含子目录)
cd -
Linux目录操作命令是通往系统管理的钥匙,通过反复练习,你会发现终端操作的快捷与强大。希望本文能为你打下坚实的基础。如果你有任何问题或想探讨更多用法,欢迎在评论区留言!
下一期预告:Linux文件操作命令深度解析(touch、cat、less、head、tail等),敬请期待!
📌 本文首发于CSDN,转载需注明出处。如果你觉得有用,请点赞、收藏、关注三连支持一下~