Linux 命令初识第 2 课:文件增删改查
目标:能在 Linux 里创建、复制、移动、删除文件和目录,会查看文件内容、实时盯日志,会用 vim 改一个配置文件。 用时:约 40 分钟。全部在 Ubuntu 里敲。
0. 先建一个练习场
本课会删文件,只在练习目录里操作:
mkdir -p ~/practice
cd ~/practice
为什么放在
~而不是/mnt/d:Linux 自己的目录速度快,而且练坏了也不影响 Windows 的文件。
1. 增:创建

| 命令 | 作用 | 例子 |
|---|---|---|
mkdir 目录 | 创建目录 | mkdir src |
mkdir -p a/b/c | 一次创建多层,已存在也不报错(parents) | mkdir -p myapp/src/handler |
touch 文件 | 创建空文件;文件已存在则只更新修改时间 | touch main.go |
花括号展开:一次建一批
mkdir -p myapp/{src,config,logs}
# 等价于 mkdir -p myapp/src myapp/config myapp/logs
touch myapp/src/{main,router,handler}.go
# 等价于 touch myapp/src/main.go myapp/src/router.go myapp/src/handler.go
注意:花括号里逗号前后不能有空格,写成
{src, config}就不对了。
2. 查:查看文件内容

| 命令 | 作用 | 什么时候用 |
|---|---|---|
cat 文件 | 一次性输出全部内容 | 短文件、配置文件 |
less 文件 | 分页浏览 | 长文件、大日志 |
head -n 10 文件 | 看前 10 行(默认就是 10) | 看文件开头格式 |
tail -n 10 文件 | 看最后 10 行 | 看最新的日志 |
tail -f 文件 | 实时追踪,文件有新内容就自动打印 | 盯着服务日志排查问题 ← 后端天天用 |
file 文件 | 判断文件类型 | 不知道一个文件是文本还是二进制时 |
less 的按键
| 按键 | 作用 |
|---|---|
空格 / b | 下一页 / 上一页 |
↑ ↓ | 一行一行滚 |
g / G | 跳到开头 / 结尾 |
/关键词 回车 | 向下搜索,n 下一个匹配,N 上一个 |
q | 退出 |
tail -f 怎么退出
按 Ctrl + C。tail -f 会一直等新内容,不会自己结束。
3. 改:复制、移动、重命名、编辑

cp —— 复制
| 写法 | 作用 |
|---|---|
cp a.txt b.txt | 复制文件,b.txt 已存在会被直接覆盖 |
cp a.txt dir/ | 复制到目录里,文件名不变 |
cp -r dir1 dir2 | 复制目录必须加 -r(recursive,递归) |
cp -i a.txt b.txt | 覆盖前先问你(interactive) |
mv —— 移动 / 重命名
Linux 没有单独的重命名命令,重命名就是在同一个目录里移动:
mv old.txt new.txt # 重命名
mv new.txt src/ # 移动到 src 目录
mv src/new.txt ./a.txt # 移回来并改名
mv 移动目录不需要 -r。
vim —— 在终端里改文件(最低限度)
在服务器上没有 VS Code,改配置只能用终端编辑器。vim 只需要会这几步:
vim app.yml 打开(文件不存在会新建)
i 进入「插入模式」,左下角显示 -- INSERT --,现在可以打字
Esc 退出插入模式,回到「普通模式」
:wq 回车 保存并退出(write + quit)
:q! 回车 不保存,强制退出(改乱了就用它)
最常见的坑:打开 vim 后直接打字,结果字母被当成命令,界面乱了。先按
Esc,再输入:q!回车,一切重来。
4. 删:删除

| 命令 | 作用 |
|---|---|
rm 文件 | 删除文件 |
rm -i 文件 | 删除前逐个确认 |
rm -r 目录 | 删除目录及里面所有内容 |
rm -f 文件 | 强制删除,不提示、文件不存在也不报错 |
rmdir 目录 | 只能删空目录(安全,删不掉说明里面还有东西) |
⚠️ rm 的三条铁律
- Linux 没有回收站,
rm删了就是没了。 rm -rf之前,先pwd确认自己在哪,再ls确认要删的是什么。- 路径里有变量或通配符时格外小心:
rm -rf /和rm -rf ./只差一个点。
5. 通配符:一次操作一批文件
| 通配符 | 匹配 | 例子 |
|---|---|---|
* | 任意多个字符(包括 0 个) | ls *.go 所有 go 文件 |
? | 恰好一个字符 | ls app?.log 匹配 app1.log,不匹配 app10.log |
[abc] | 括号里的任意一个字符 | ls app[12].log |
rm logs/*.log # 删掉 logs 下所有 .log 文件
cp src/*.go /tmp/ # 复制所有 go 文件
不确定通配符会匹配到什么时,先用
ls代替rm跑一遍,看看列出来的是不是你想删的。
6. 跟着敲一遍
cd ~/practice
mkdir -p demo/{a,b}
ls demo
touch demo/a/{1,2,3}.txt
ls demo/a
cp demo/a/1.txt demo/b/
ls demo/b
mv demo/b/1.txt demo/b/one.txt
ls demo/b
cp demo/a demo/c # 猜一猜:会成功吗?
cp -r demo/a demo/c
ls demo/c
rmdir demo/c # 猜一猜:会成功吗?
rm demo/c/*.txt
rmdir demo/c
cat /etc/os-release
head -n 3 /etc/os-release
rm -r demo
ls
每敲一条,先猜结果,再看输出对不对。
7. 练习题
题目在本文件夹的 题目解答.md 里,把每题的命令、输出和回答写在 解答: 下面,做完告诉我,我来批改。
8. 课后
- 提交:
01-环境准备-01-linux命令初识-第2课文件增删改查