【Linux命令饲养指南】03-Linux文件操作与编辑:从“摸鱼”到“搬砖”,这篇让你把文件玩出花

兄弟们,上两篇我们学会了在Linux里"认路"(pwd、cd、ls)和"折腾文件夹"(mkdir、rm、cp、mv)。今天直接上硬菜------文件怎么创建、怎么查看、怎么搜索、怎么编辑、怎么打包。OK,那么我们就一起冲吧💪


一、文件基础命令:增删改查一条龙

1. 新建文件 ------ touch(摸一下)

作用:创建一个空文件,或者更新已有文件的时间戳。

bash 复制代码
touch a.txt b c.txt

注意:Linux里文件扩展名只是摆设a.txtb 都是普通文件,不像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_openjdkjava_sdk_1.8.0_openjdk

通配符详解(超级实用):

通配符 含义 例子
* 0个或多个字符 *.txt 表示所有以 .txt 结尾的文件
? 1个字符 ?? 表示名字正好两个字符的文件(比如 ab12,但不包括 aabc

实战演示

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 txtgrep 只显示包含 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 命令就像打游戏,一开始手忙脚乱,技能栏都找不到。练多了就变成肌肉记忆------别人还在鼠标右键新建,你已经 touchvi:wq 一套连招带走了。

不要怕敲错,大不了重来。只要不敲 rm -rf /*,你就是安全的。

本文由一位曾经在 vi 里卡了十分钟最后强制关终端的"菜鸟小白"整理,如果你觉得有用,请点个赞。 😄

那各位友友们,咱们下期见啦👋~~

相关推荐
A小辣椒14 小时前
TShark:Wireshark CLI 功能
linux
A小辣椒18 小时前
TShark:基础知识
linux
AlfredZhao20 小时前
OCI 明明分配了 200G 系统盘,为什么 df 只看到 30G?
linux·oci
AlfredZhao1 天前
vi 删除指定范围的行,不用再反复按 dd
linux·vi
用户9718356334662 天前
银河麒麟 KY10 申威(SW64) 安装 nginx-1.16.1-2.p01.ky10.sw_64.rpm 详细步骤
linux
猪脚踏浪2 天前
linux 拷贝文件或目录到指定的位置
linux
摇滚侠2 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
bush42 天前
嵌入式linux学习记录十四、术语
linux·嵌入式
载数而行5202 天前
Linux 11 动态监控指令top
linux
不会C语言的男孩2 天前
Linux 系统编程 · 第 8 章:进程基础
linux·c语言