讲解
mkdir 创建目录:mkdir 目录名。最常配合的选项是 -p(parents):mkdir -p a/b/c 可以一口气创建多层目录,中间层不存在也自动补齐;而且目录已存在时 -p 不会报错,脚本里因此几乎总是写 mkdir -p。
rmdir 删除目录,但它有一个重要限制:只能删除空目录。目录里还有任何文件或子目录时,rmdir 都会拒绝执行。这其实是种保护——rmdir 永远不会误删你的数据。要删除非空目录,得用上一节的 rm -r,威力大、风险也大,所以惯例是:空目录用 rmdir(安全),非空目录再三确认后才用 rm -r。
关于命名给几条工程建议:目录名用小写字母,单词之间用连字符(my-project)或下划线;避免空格、中文和特殊字符——不是不能用,而是它们会在脚本和路径拼接中制造无穷无尽的引号问题;目录名表达内容而不是时间,如 invoices/ 好于 new-folder-2/。
示例
# 创建单层目录
mkdir test1
# -p 一次创建多层
mkdir -p a/b/c
ls a/b
# 目录已存在时 -p 不报错,脚本里非常实用
mkdir -p test1
echo "第二次创建也没问题"
# rmdir 只能删空目录
rmdir emptydir
rmdir test1
# 非空目录会被拒绝
rmdir docs || echo "rmdir 拒绝删除非空目录,这正是它的保护机制"
常见坑
- 对非空目录用 rmdir:报错 Directory not empty。要么先清空,要么确认后用 rm -r,别图省事直接 rm -rf。
- mkdir 多级路径不加 -p:mkdir x/y/z 在 x 不存在时会报错,加 -p 一步到位。
- 目录名随手敲:New folder(带空格)、未命名文件夹这类名字会在后续每条命令里都要加引号,早规范早省心。
- 以为 mkdir -p 会覆盖已有目录:不会,已存在就直接跳过,目录里的内容原封不动。
小结
mkdir -p 创建任意层级目录且幂等,rmdir 只删空目录(这是安全特性),非空目录交给谨慎使用的 rm -r。下一节学习查看文件内容的几种姿势。