兄弟们,上两篇我们学会了在Linux里"认路"(pwd、cd、ls)和"折腾文件夹"(mkdir、rm、cp、mv)。今天直接上硬菜------文件怎么创建、怎么查看、怎么搜索、怎么编辑、怎么打包。OK,那么我们就一起冲吧💪
一、文件基础命令:增删改查一条龙
1. 新建文件 ------ touch(摸一下)
作用:创建一个空文件,或者更新已有文件的时间戳。
bash
touch a.txt b c.txt

注意:Linux里文件扩展名只是摆设 ,a.txt 和 b 都是普通文件,不像Windows非得 .exe 才能运行。你可以把 a.txt 改成 a.avi 里面照样是文本。
😂 栗子:
touch就像你用手指戳一下空气,一个文件就凭空出现了。戳几下就出现几个。
2. 删除文件 ------ rm -rf(老熟人了)
删除文件和删文件夹一样,都是 rm -rf 文件名。区别是删单个文件不用 -r,但习惯性加上也没事。
bash
rm -rf a.txt # 删文件 a.txt

bash
rm -rf *.log # 删所有以 .log 结尾的文件
⚠️ 再次提醒:
rm -rf /是自杀式袭击,千万别冲动哦😂。
3. 复制文件 ------ cp(copy)
复制文件比复制文件夹简单:不需要 -r。
bash
cp a.txt b.txt # 把 a.txt 复制成 b.txt

bash
cp a.txt /tmp/ # 把 a.txt 复制到 /tmp 目录下(名字不变)

4. 重命名/剪切 ------ mv(move)
对文件来说,mv 的规则和文件夹一样,但没有特例 (因为文件不可能是目录,所以不会出现"移动到已存在目录里"那种混淆)。简单记:改名字用 mv 旧 新,挪位置用 mv 文件 目标目录。
bash
mv a.txt d.txt # 重命名

bash
mv a.txt /tmp/ # 剪切到 /tmp
5. 搜索文件 ------ find(地毯式搜查)
作用:在整个硬盘里翻箱倒柜找文件。
bash
find / -name "*jdk*"

/:从根目录开始找(你可以换成/home缩小范围)-name:按文件名匹配*vmware*:*是通配符,代表"0个或多个任意字符"。这个命令会找到所有名字里包含jdk的文件,比如java_sdk_17_openjdk、java_sdk_1.8.0_openjdk。
通配符详解(超级实用):
| 通配符 | 含义 | 例子 |
|---|---|---|
* |
0个或多个字符 | *.txt 表示所有以 .txt 结尾的文件 |
? |
1个字符 | ?? 表示名字正好两个字符的文件(比如 ab、12,但不包括 a 或 abc) |
实战演示:
bash
# 复制当前目录下所有文件到 /mnt(不包括子文件夹里的)
cp ./* /mnt
# 复制当前目录下所有文件和文件夹(递归)到 /mnt
cp -r ./* /mnt
# 复制所有 .txt 结尾的文件到 /mnt
cp ./*.txt /mnt
# 复制名字只有两个字符的文件到 /mnt
cp ./?? /mnt
# 复制名字只有两个字符的【文件或文件夹】到 /mnt(-r 递归)
cp -r ./?? /mnt
💡 小技巧:
*和?就像去超市买东西,*是"随便拿多少",?是"只拿一个,但必须有一个"。
6. 重定向和管道(Linux的灵魂)
> 输出重定向(覆盖写)
首先history这个命令是得到什么输过的所有历史命令,如下👇:

把历史命令写进文件 ,而不是显示在屏幕上。如果文件已存在,就覆盖(文件如果没有,那么就会先创建文件 然后将内容写进去)。
bash
history > history.txt # 把历史命令记录写到 history.txt 里(原来内容没了)

>> 追加写入
和 > 类似,但是追加 到文件末尾,不会覆盖原有内容。
我们先看history.txt的最后几行:

首先echo这个命令是输出的意思 如下👇:

然后我们将输出的world追加到history.txt的末尾
bash
echo "World" >> history.txt # 在 history.txt 末尾加一行 "World"

(echo 就是打印字符串,像 Python 的 print)
< 输入重定向
首先wc -l 是 统计一个文件的行数,如下👇
bash
wc -l < history.txt

wc -l 是统计行数。这行命令的意思是:把 history.txt 的内容喂给 wc -l,然后输出行数。效果等同于 wc -l history.txt,但 < 强调"输入来自文件"。
| 管道符(超级好用)
左边命令的输出,直接变成右边命令的输入,像水管接在一起。
bash
ll | grep txt

ll 列出当前目录详情,然后管道传给 grep txt,grep 只显示包含 txt 的行。相当于从一堆结果里过滤出你想要的东西。
🧠 记忆法:
|长得像一根管子,左边倒进去,右边流出来。
7. 其他常用特殊符号(混个脸熟)
| 符号 | 含义 | 大白话 |
|---|---|---|
/ |
根目录或路径分隔符 | cd / 直接回根目录 |
$ |
变量值替换 | echo $PATH 显示环境变量,$ 就是"取这个变量的值" |
& |
后台执行 | sleep 100 & 让命令在后台跑,不占终端 |
~ |
当前用户的家目录 | cd ~ 直接回家,相当于 cd /home/你的名字 |
二、查看文件内容:从"瞄一眼"到"实时监控"
先复制一个练习文件:
bash
cp /etc/profile b.txt

1. cat ------ 瞄一下(全盘输出)
bash
cat b.txt
把整个文件内容一次性怼到屏幕上。适合看小文件,大文件会刷屏。

2. more ------ 摸一下(分页查看)
bash
more b.txt
按空格翻页,按回车换行,按 q 退出。适合看长文件,像看书一样一页一页翻。

3. head ------ 看前几行
bash
head -n 10 b.txt # 看前10行

4. tail ------ 看后几行
bash
tail -n 10 b.txt # 看后10行

5. grep ------ 过滤(只找我要的)
语法
bash
grep 搜索内容 目标路径/文件
例如:
bash
grep dev b.txt # 在 b.txt 文件里找包含 "dev" 的行

再例如:
bash
cat history.txt | grep history

6. tail -f ------ 实时监控日志(相当重要)
⭐⭐⭐⭐⭐:这个命令一定要多加练习哦~~ 他是用来查看动态日志的命令。
格式
bash
tail -f 日志文件
1、比如:我在a窗口干以下事情:
bash
tail -f b.txt # 查看b.txt中的信息
结果:

2、接下里我就在开一个b窗口 然后向 b.txt中追加一个hello
bash
echo "hello" >> b.txt
结果:

3、那么此时我去a窗口看一下我们的文件内容的实时变化:如下👇

像电影片尾字幕 一样,文件有新内容就会自动滚出来。按 Ctrl+C 停止。
4、那么我们应用场景是什么?想必做过Java开发的铁子们也应该知道我们Java开发它的日志文中有一种错误日志就是error,那么我们就可以通过这个命令查看日志,然后呢,过滤一下,只查看error的日志。
格式
bash
tail -f 日志文件 | grep error
例如:
bash
tail -f b.txt | grep error //我只看error的日志,如果不是就不会实时显示
1)我先在a窗口执行该命令 看结果 👇:

2)此时我在b窗口中对 b.txt追加 hello 结果如下

3)然后我们去观察a窗口,如下 👇:

由于我们进行了过滤,所以呢,它不会显示hello,因为它只显示包含error的新日志。
4)如果我在a窗口对b.txt追加xxx_error,如下👇:

5)此时我们看a窗口中的b.txt中的内容,👇

因此我们这个查看实时日志的命令,它的重要性就体现出来了🎉🎉🎉。
只显示包含 error 的新日志,排查故障时爽到飞起。
😎 真实场景:服务器出问题了,你敲
tail -f /var/log/messages | grep error,然后喝着咖啡看错误一条条蹦出来,逼格满分😄。
补充:按住Ctrl+C退出

三、编辑文件内容:vi 命令(Linux里的"记事本")
很多人第一次进 vi 不知道怎么退出,最后只能关终端。今天咱们就来瞧一瞧。
先复制练习文件
bash
cp /etc/profile b.txt
进入到b.txt文件中
bash
vi b.txt

vi 的三种模式(核心!核心!核心!)
命令模式 --(按 i 或 o)--> 编辑模式 --(按 Esc)--> 命令模式
命令模式 --(按 Shift+:)--> 末行模式 --(按 Esc)--> 命令模式
- 命令模式 :
ESC刚打开文件时的默认模式,可以删除、复制、粘贴、查找。 - 编辑模式 :
i可以像记事本一样打字输入内容。 - 末行模式 :
shift+:保存、退出、显示行号等。
1. 命令模式常用操作
| 操作 | 命令 | 解释 |
|---|---|---|
| 删除一行 | dd |
光标所在行直接砍掉 |
| 删除3行 | 3dd |
从当前行开始删3行 |
| 复制一行 | yy |
复制光标所在行 |
| 复制3行 | 3yy |
复制3行 |
| 粘贴 | p |
在光标下一行粘贴 |
| 撤销 | u |
后悔药,按一次撤销一步 |
| 查找 | /查找的内容 |
比如 /dev,回车后向下找,按 n 继续下一个,按 N 向上找 |
2. 编辑模式
- 按
i:在光标前面插入(insert) - 按
o:在光标下一行插入新行(open)
进入编辑模式后就可以随便打字了。编辑完按 Esc 回到命令模式。

3. 末行模式(按 Shift+: 进入)
-
:wq------ 保存并退出(write & quit)
-
:q!------ 不保存强制退出(quit!)
-
:set number------ 显示行号
-
:set nonumber------ 取消行号
😂 经典段子:如何退出 vi?按
Esc,然后按:q!,再按回车。如果不行,就Esc按两次,再:q!。还不行?直接关终端重开。
四、文件打包和解包:把文件装进行李箱
Windows 有 .zip、.rar,Linux 常见的是 .zip、.tar、.tar.gz。
1. zip 格式
压缩:
bash
zip -r myfile.zip 文件1 文件2 目录/ # (后面可以是多个文件)
-r 表示递归压缩目录。
例如:

解压:
bash
unzip myfile.zip # 解压到当前目录


bash
unzip myfile.zip -d /tmp/ # 解压到指定目录

后面两个亦是如此,只是关键字稍微不同而已
2. tar 格式(只打包,不压缩)
tar 是"把一堆文件粘成一个文件",体积不变。
打包:
bash
tar -cvf myfile.tar 文件1 文件2 目录/
c:创建打包文件v:显示过程(verbose)f:指定文件名
解包:
bash
tar -xvf myfile.tar # 解包到当前目录
tar -xvf myfile.tar -C /target/ # 解包到指定目录(-C 后面跟目标路径)
3. tar.gz 格式(打包+压缩,最常用)
先打包再压缩成 gzip,体积小。
压缩:
bash
tar -czvf myfile.tar.gz 文件1 文件2 目录/
z:表示用 gzip 压缩
解压:
bash
tar -xzvf myfile.tar.gz # 解压到当前目录
tar -xzvf myfile.tar.gz -C /target/ # 解压到指定目录
🧠 记忆口诀:tar 的 c 是 create(创建),x 是 extract(提取),v 是 verbose(啰嗦),f 是 file(文件),z 是 gzip(压缩)。
-czvf就是"创建+压缩+啰嗦+文件名",-xzvf就是"解压+解压缩+啰嗦+文件名"。
五、总结(一张表记住所有)
| 操作 | 命令示例 |
|---|---|
| 新建文件 | touch a.txt |
| 删除文件 | rm -rf a.txt |
| 复制文件 | cp a.txt b.txt |
| 重命名 | mv a.txt b.txt |
| 搜索文件 | find / -name "*.log" |
| 通配符 | * 任意字符,? 一个字符 |
| 重定向覆盖 | history > log |
| 重定向追加 | echo "x" >> log |
| 管道 | `ll |
| 查看全部 | cat file |
| 分页查看 | more file |
| 看前10行 | head -n 10 file |
| 看后10行 | tail -n 10 file |
| 过滤 | grep keyword file |
| 实时日志 | tail -f log |
| vi保存退出 | Esc → :wq |
| vi不保存退出 | Esc → :q! |
| zip压缩 | zip -r file.zip 文件/ |
| zip解压 | unzip file.zip -d 目录 |
| tar打包 | tar -cvf file.tar 文件/ |
| tar解包 | tar -xvf file.tar -C 目录 |
| tar.gz压缩 | tar -czvf file.tar.gz 文件/ |
| tar.gz解压 | tar -xzvf file.tar.gz -C 目录 |
结尾
Linux 命令就像打游戏,一开始手忙脚乱,技能栏都找不到。练多了就变成肌肉记忆------别人还在鼠标右键新建,你已经 touch 加 vi 加 :wq 一套连招带走了。
不要怕敲错,大不了重来。只要不敲 rm -rf /*,你就是安全的。
本文由一位曾经在 vi 里卡了十分钟最后强制关终端的"菜鸟小白"整理,如果你觉得有用,请点个赞。 😄
那各位友友们,咱们下期见啦👋~~