【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 里卡了十分钟最后强制关终端的"菜鸟小白"整理,如果你觉得有用,请点个赞。 😄

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

相关推荐
ZzzZZzzzZZZzzzz…2 小时前
Docker 数据持久化:4种挂载方式 + 备份还原实战
linux·运维·docker·云原生·容器·数据持久化
LSG_Dawn2 小时前
linux 开机黑屏,/dev/nvme1n1p4:clean, xxxxx/xxxxxxx files, xxxx/xxxx blocks
linux·运维·服务器
喜欢吃燃面2 小时前
Linux 进程间通信:命名管道与 System V 共享内存深度解析
linux·运维·服务器·学习
有谁看见我的剑了?2 小时前
关于linux namespace学习
linux·运维·docker
顾喵2 小时前
ARM处理器体系结构
linux·arm
特长腿特长2 小时前
systemd 服务配置文件,xxx.service 编辑指南,自定义我们自己的服务。
linux·网络·云原生
senijusene2 小时前
i.MX6ULL 平台 Linux 字符设备驱动:LED 驱动解析
linux·运维·服务器
魈十三2 小时前
进程与线程:从独立空间到协调的深度解析
linux
HYNuyoah2 小时前
Ubuntu一键安装Docker和Docker Compose
linux·ubuntu·docker