📂 一、文件查看与编辑工具
工具 | 说明 | 示例 |
| 功能强大的文本编辑器,适用于编写脚本、修改配置文件 |
|
| 查看文件内容,适合小文件快速输出 |
|
| 查看文件前 N 行 |
|
| 查看文件最后 N 行,可用于日志监控 |
|
| 分页查看大文件,可上下滚动 |
|
在 Linux 日常操作中,查看与编辑文件是最常用的基础能力之一。无论是日志排查、配置管理,还是脚本编写,都绕不开这些工具。
📄 1. cat
—— 一次性输出整个文件内容
cat /etc/os-release
✅ 用于快速查看小文件内容。
⚠️ 不适合查看超大文件,推荐使用 less
。
🔍 2. less
/ more
—— 分页查看文件内容
less /var/log/syslog
- 支持上下翻页:
↑ ↓ PageUp PageDown
- 搜索关键词:输入
/关键词
more bigfile.txt
✅ less
更强大(可以向上翻),建议优先使用。
🧠 3. head
/ tail
—— 查看文件的头部或尾部
head -n 10 my.log # 查看前10行
tail -n 20 my.log # 查看后20行
🛰️ 实时监控文件变化
tail -f /var/log/nginx/access.log
📡 常用于监控日志文件实时更新。
📝 Vim —— Linux 中最经典的文本编辑器,为什么你还不会用?
🌟 什么是 Vim?
Vim 是 Linux 系统中最老牌、最经典、最强大的文本编辑器之一。它是 Vi 编辑器的增强版,全名是 Vi IMproved。它的口号是:“程序员的编辑器”,被称为“编辑器之神”。
运行它的方式很简单:
vim filename
但是,大多数第一次使用的人都会迷失在里面,甚至连怎么退出都不会!
🤯 新手最常见的疑问:我怎么连退出都不会?
别急,这是 Vim 的“传统艺能”。因为 Vim 并不像普通编辑器那样直接“打开就能写”。它是“模式编辑器”,一共有三种常见模式:
🧠 Vim 的三种模式:
模式 | 用途 | 怎么进入 |
普通模式(Normal) | 用来移动光标、删除、复制、粘贴等 | 默认启动时就是这个模式 |
插入模式(Insert) | 用来正常输入文字 | 按 |
命令模式(Command) | 用来保存、退出、查找等 | 按 |
✍️ 最基本的使用流程:
- 打开文件:
vim myfile.txt
一开始是以普通模式,来展示的内容的
- 进入插入模式开始写字:
-
- 按
i
,你就能正常输入了。左下角会显示 -- INSERT -- 表示进入插入模式(编辑模式)
- 按
- 写完以后回到普通模式:
-
- 按
Esc
,将退回插入模式,并会到普通模式。等
- 按
在普通模式中可以进行用来移动光标、删除、复制、粘贴。将光标移动到第2行,并在普通模式下,通过命令进行删除这一行内容。dd 表示删除。uu 表示回退(跟 Ctrl +z 一样)
- 保存并退出:
-
- 输入
:wq
,然后回车(写入并退出),命令模式 通过:
前缀来确定用什么命令 - wq 表示 (写入保存并推出)
- 输入
- 如果你不想保存就退出:
-
- 输入
:q!
,然后回车(强制退出),q 表示退出的意思。加上 ! 表示强制执行
- 输入
🚀 快速指令总结(初学者必备):
动作 | 命令 |
插入文本 |
|
保存文件 |
|
退出 Vim |
|
保存并退出 |
|
强制退出不保存 |
|
🔍 二、文件查找与搜索工具
工具 | 说明 | 示例 |
| 强大的文件查找工具,支持按名称、时间、大小等查找 |
|
| 文本搜索利器,常与管道连用 |
|
| 快速文件定位,基于数据库查询(需 |
|
当然可以!find
是 Linux 中非常强大的文件查找工具,功能丰富,语法灵活,可以按各种条件查找文件,比如:
- 文件名
- 拥有者
- 文件大小
- 类型(目录、普通文件、链接等)
- 修改时间、访问时间
- 权限等等
🔍 find
命令
find [搜索路径] [搜索条件] [执行动作]
比如:
find /home -name "*.txt"
📁 一、根据 文件名 查找
🌰 案例:查找所有 .log
结尾的文件
find /var/log -name "*.log"
-name
区分大小写,-iname
忽略大小写。
👤 二、根据 文件拥有者 查找
🌰 案例:查找属于用户 john
的文件
find /home -user john
📦 三、根据 文件大小 查找
- 单位:
-
c
字节k
KBM
MBG
GB
🌰 案例 1:查找大于 100MB 的文件
find / -size +100M
🌰 案例 2:查找小于 1KB 的文件
find /tmp -size -1k
🧱 四、根据 文件类型 查找
类型 | 含义 |
| 普通文件 |
| 目录 |
| 软链接 |
| 块设备 |
| 字符设备 |
🌰 案例:查找当前目录下的所有目录
find . -type d
🕒 五、根据 修改时间 查找
条件 | 含义 |
| 按天计算修改时间(天) |
| 最后访问时间 |
| inode 更改时间 |
🌰 案例 1:查找 7 天前修改的文件
find /data -mtime +7
🌰 案例 2:查找 24 小时内修改的文件
find /data -mtime -1
⚙️ 六、搭配 执行动作 使用(-exec
)
🌰 案例:删除所有 .tmp
临时文件
find /tmp -name "*.tmp" -exec rm -f {} \;
说明:
{}
表示每个找到的文件\;
表示命令结束(注意是反斜杠+分号)
🧲 七、其他实用示例
🌰 查找所有权限为 777 的文件
find / -type f -perm 0777
🌰 查找 10 分钟内访问过的文件
find /var -amin -10
🧠 小贴士
find
速度比locate
慢,因为是实时查找,但更加准确。find
支持多条件组合,例如:
find /var -type f -name "*.log" -size +10M -mtime -3
✅ 总结
查找维度 | 选项 | 示例 |
文件名 |
|
|
拥有者 |
|
|
大小 |
|
|
类型 |
|
|
修改时间 |
|
|
grep
是 Linux 中查找内容最强大最常用的命令之一,它的名字来自于 g/re/p
—— 来自 Vi 的搜索命令(global/regular expression/print)。它主要用于从文本文件或标准输入中按关键词或正则表达式匹配行。
🔍 grep 命令
grep [选项] "关键词" 文件名
🎯 一、最常用的例子
🌰 案例:在 /var/log/syslog
中查找包含 "error" 的行
grep "error" /var/log/syslog
📦 二、常用选项讲解
选项 | 作用 |
| 忽略大小写(ignore case) |
| 显示行号 |
| 反向匹配(找出不包含关键词的行) |
或 | 递归查找目录下所有文件 |
| 只列出文件名(含匹配内容的文件) |
| 显示匹配的行数 |
| 高亮匹配内容(多数发行版默认启用) |
🧪 三、进阶案例演示
✅ 1. 忽略大小写查找关键词
grep -i "warning" /var/log/syslog
✅ 2. 查找并显示行号
grep -n "root" /etc/passwd
✅ 3. 递归查找目录中所有包含 "TODO" 的文件内容
grep -r "TODO" ./src
✅ 4. 显示所有不包含 "test" 的行
grep -v "test" data.txt
✅ 5. 只显示匹配文件名
grep -l "main" *.java
🔧 四、配合正则表达式使用(默认就是基本正则)
🌰 查找以 "ERROR" 开头的行
bash
复制编辑
grep "^ERROR" logfile.txt
🌰 查找以 ".log" 结尾的行
bash
复制编辑
grep "\.log$" list.txt
🌰 查找含数字的行
bash
复制编辑
grep "[0-9]" info.txt
如果你想用更强大的正则表达式语法,可以加上 -E
(扩展正则)或使用 egrep
。
🧲 五、配合管道使用
grep
与其他命令配合堪称神器,最经典的用法就是:
🌰 查看当前运行的 ssh 服务进程:
bash
复制编辑
ps aux | grep ssh
🌰 配合 dmesg
找内核日志中的 "usb" 相关内容:
bash
复制编辑
dmesg | grep -i usb
🎁 七、彩蛋提示:grep 也有彩色高亮!
如果你在终端中执行下面命令,就能看到彩色匹配效果:
grep --color=auto "关键词" 文件
有些 Linux 发行版默认别名已经设置好 alias grep='grep --color=auto'
。
✅ 总结表
查找维度 | 示例 | 说明 |
精确匹配 |
| 查找包含 "hello" 的行 |
忽略大小写 |
| 不区分大小写 |
显示行号 |
| 查看行号 |
不包含某关键词 |
| 反向匹配 |
使用正则 |
| 查找以 abc 开头的行 |
递归搜索目录 |
| 在目录中递归查找 |
locate
是 Linux 中非常快速的文件查找命令,它的工作原理和 find
不太一样,是基于文件名的数据库搜索,非常适合快速查找文件路径。
🔍 locate 命令
🚀 一、locate 是什么?
locate
是通过查找一个本地维护的数据库(通常是 /var/lib/mlocate/mlocate.db
)来快速定位文件的路径,而不是实时在磁盘上遍历查找,所以速度极快。
🔧 二、locate 的基本用法
locate 文件名关键字
🌰 例子:查找包含 "passwd" 的文件
locate passwd
这会返回系统中所有路径中包含 “passwd” 的文件,比如:
/etc/passwd
/usr/share/doc/passwd
🧠 三、locate 的特点
优点 | 缺点 |
超快速度(使用数据库) | 数据库可能不是最新的 |
使用简单 | 不支持复杂条件(如大小、时间) |
支持通配符匹配 | 不适合查找最近刚创建的文件 |
🔄 四、更新数据库(重点)
locate
查找是依赖数据库的,如果文件刚创建/删除,查不到,那你需要更新数据库:
bash
复制编辑
sudo updatedb
这个命令会重新扫描整个系统,更新数据库。
大部分系统会每天通过 cron
自动更新数据库,但你可以手动更新确保查找的是最新的。
🔍 五、常用选项
选项 | 说明 |
| 忽略大小写 |
| 只显示匹配条数,不显示内容 |
| 支持正则表达式匹配 |
| 查看帮助文档 |
🌰 示例:忽略大小写查找“log”
bash
复制编辑
locate -i log
🌰 示例:只统计有多少条匹配
bash
复制编辑
locate -c ".conf"
🌰 示例:用正则查找所有以 .log
结尾的文件
bash
复制编辑
locate -r "\.log$"
🔐 六、安全性提示
默认数据库不会索引某些私密目录(比如用户私有目录),因为:
- 默认使用的是
mlocate
- 它只记录普通用户可以访问的文件路径(防止信息泄露)
✅ 七、locate 和 find 对比总结
比较项 |
|
|
查找速度 | ✅ 极快 | ❌ 慢(实时查找) |
是否依赖数据库 | ✅ 是 | ❌ 否 |
查找内容 | 仅文件路径名 | 路径、权限、大小、时间等 |
支持实时查找 | ❌ 否 | ✅ 是 |
是否需要更新 | ✅ 需要 | ❌ 不需要 |
📚 三、系统帮助与命令参考
工具 | 说明 | 示例 |
| 查看命令手册,学习命令语法与参数 |
|
| 快速查看命令的简要用法 |
|
这两个是 Linux 下查看命令帮助文档的方式,一个是经典权威的 man
,一个是快速简洁的 --help
,它们各有用途。
🔍 man:Manual Pages(手册页) 命令
📖 一、man 是什么?
man
是 Linux 系统中最权威的命令参考手册,几乎所有系统命令和函数库都有一份对应的 man page
。
✅ 基本用法
man 命令名
🌰 示例
man ls
会打开 ls
命令的完整说明,包括:
- NAME:命令名称和简要说明
- SYNOPSIS:命令语法格式
- DESCRIPTION:详细说明
- OPTIONS:选项参数详解
- EXAMPLES(有些命令有):示例用法
⌨️ 二,man 使用技巧
- 上下翻动:↑ ↓ 或用空格翻页
- 搜索关键词:输入
/关键词
,然后按n
查找下一个 - 退出:按
q
💡三,man 的“章节”提示
man
分为多个章节,如:
章节号 | 含义 |
1 | 用户命令(常用) |
2 | 系统调用(内核级) |
3 | C库函数 |
5 | 配置文件格式 |
8 | 管理员命令(root) |
🌰 例如:
bash
复制编辑
man 5 crontab
查的是 crontab 的配置文件语法说明(而不是命令行用法)。
🔍 --help:快速参数说明
⚙️ 一、--help是什么?
--help
是几乎所有 GNU 命令内置的快速帮助选项,显示简要的命令语法和常用选项,不如 man
全面,但更快捷。
✅ 用法格式
命令名 --help
🌰 示例
ls --help
输出内容如:
text
复制编辑
Usage: ls [OPTION]... [FILE]...
-a, --all do not ignore entries starting with .
-l use a long listing format
...
🆚 二、man vs --help 对比
对比点 |
|
|
内容 | 权威、详细 | 简洁、快速 |
来源 | 系统手册数据库 | 程序自身输出 |
可用性 | 有些命令不一定有 页 | 大多数命令支持 |
使用习惯 | 深入学习或参考用 | 快速查看选项用 |
🎯 实用建议
需求 | 推荐用法 |
快速知道命令有哪些选项 |
|
想深入理解一个命令的所有细节 |
|
配置文件的格式语法 |
|
C 函数参考 |
📦 四、压缩与归档工具
工具 | 说明 | 示例 |
| 打包为 |
|
| 压缩单个文件为 |
|
| 创建归档、解包,支持配合 |
|
Linux 中常用的文件压缩与解压命令:zip
和 unzip
,这两个命令非常直观易用,功能也很实用,尤其适合跨平台打包(比如发给 Windows 用户时)。
🔍 zip/unzip:快速参数说明
📦 一、zip:压缩文件
✅ 基本语法
zip [选项] 压缩包名称.zip 要压缩的文件/目录
🌰 常见示例
1. 压缩一个文件
zip hello.zip hello.txt
→ 生成 hello.zip
包含 hello.txt
2. 压缩多个文件
zip docs.zip file1.txt file2.txt
3. 压缩一个目录(包括子目录和文件)
zip -r mydir.zip mydir/
-r
:递归压缩整个目录
🛠 常用选项
选项 | 含义 |
| 递归处理目录 |
| 使用最高压缩比 |
| 加密压缩包(需输入密码) |
| 静默模式,不显示过程信息 |
📂 二、unzip:解压缩文件
✅ 基本语法
unzip 压缩包名称.zip
🌰 常见示例
1. 解压到当前目录
unzip files.zip
2. 解压到指定目录
unzip files.zip -d /tmp/myfolder/
-d
:指定解压目录
3. 查看压缩包内容(不解压)
unzip -l files.zip
🛠 常用选项
选项 | 含义 |
| 列出压缩包中的文件 |
| 解压到指定目录 |
| 解压时自动覆盖已有文件(默认会提示) |
| 解压时跳过已存在的文件 |
三、zip & unzip 安装方法
有些精简系统默认没装,需要手动安装:
- Debian/Ubuntu
sudo apt install zip unzip
- CentOS/RHEL
sudo yum install zip unzip
🆚 四、zip 与其他压缩工具对比
工具 | 格式 | 支持平台 | 是否默认跨平台 |
|
| Linux / Windows / macOS | ✅ 是 |
|
| Linux/macOS | ❌ 不是(Windows需额外工具) |
|
| Linux/macOS | ❌ |
|
| 跨平台(需安装) | ✅ |
💡如果你要给 Windows 用户传文件,用 .zip
是最稳妥的方式。
✅ 小结:常用命令速查表
操作 | 命令 |
压缩文件 |
|
压缩目录 |
|
解压文件 |
|
解压到指定目录 |
|
查看压缩包内容 |
|
好~继续来讲 Linux 压缩命令中的经典搭档:gzip
和 gunzip
。这两个是单文件压缩/解压工具,与 zip/unzip
不同,gzip
只针对一个文件进行压缩,不保留原文件名结构、目录结构。
🔍gzip/gunzip: 压缩文件
🎯 一、gzip:压缩文件
✅ 基本语法
gzip [选项] 文件名
压缩完成后,会自动删除原始文件,生成 .gz
结尾的新文件。
🌰 示例
1. 压缩一个文件
gzip hello.txt
生成 hello.txt.gz
,原文件 hello.txt
会被删除。
2. 保留原文件
gzip -c hello.txt > hello.txt.gz
-c
:将压缩数据输出到标准输出,不删除原文件。
3. 设置压缩级别(1~9)
gzip -9 bigfile.log
-9
:最高压缩比(慢)-1
:最低压缩比(快)
📤 二、gunzip:解压 .gz
文件
✅ 基本语法
gunzip [选项] 文件名.gz
🌰 示例
gunzip hello.txt.gz
→ 解压后恢复为 hello.txt
,压缩文件会被删除。
💡 也可以用 gzip 解压
gzip -d hello.txt.gz
和 gunzip
效果一样。
🛠 三、常用选项
选项 | 含义 |
| 输出到标准输出,不删除原文件 |
| 解压(等同于 ) |
| 保留原文件(不删除) |
| 设置压缩级别 |
📦 四、适合 gzip 的场景
- 压缩单个日志文件:如
access.log
、error.log
- 和
tar
配合使用:打包多个文件再压缩
tar -czf archive.tar.gz folder/
🔁 五、gzip vs zip 对比
特性 |
|
|
支持多文件 | ❌ 只能压一个文件 | ✅ 支持多个 |
是否保留目录结构 | ❌ | ✅ |
解压方式 |
|
|
跨平台兼容性 | 一般用于 Linux/Unix | ✅ 通用(Windows 也支持) |
推荐搭配 |
| 单用即可 |
🎯 小结命令速查表
操作 | 命令 |
压缩文件 |
|
解压 文件 |
|
保留原文件压缩 |
|
指定压缩比 |
|
解压(另一种写法) |
|
需要我给你整一个「日志定期压缩脚本」吗?可以自动查找一周前的 .log
文件压缩成 .gz
,释放空间又整洁 ✨
或者你有没有 tar.gz
相关的问题,也可以一起聊下!
好!现在来讲一下 Linux 文件归档 & 压缩的全能王——tar
命令,它和 gzip
、bzip2
、xz
搭配可以实现超强压缩打包,是日常打包备份的必备工具 💼
🔍 tar
📦 一、什么是 tar
?
- tar(tape archive) 原本是磁带归档工具,现在常用于打包文件和目录
- 打包 ≠ 压缩:
tar
本身只负责打包(归档),要压缩还得搭配gzip
等使用
📚 二、基本语法
tar [选项] -f 压缩包文件名.tar [要打包的内容]
例如:
tar -cf mydata.tar myfolder/
🧪 三、常见操作示例
✅ 1. 打包(不压缩)
tar -cf archive.tar file1 file2 dir1/
-c
:创建归档(create)-f
:指定归档文件名(file)
✅ 2. 打包并使用 gzip 压缩 → .tar.gz
或 .tgz
tar -czf archive.tar.gz mydir/
-z
:使用gzip
压缩
✅ 3. 打包并使用 bzip2 压缩 → .tar.bz2
tar -cjf archive.tar.bz2 mydir/
-j
:使用bzip2
压缩
✅ 4. 打包并使用 xz 压缩 → .tar.xz
tar -cJf archive.tar.xz mydir/
-J
:使用xz
压缩(压缩率更高)
✅ 5. 解压 .tar
包
tar -xf archive.tar
✅ 6. 解压 .tar.gz
包
tar -xzf archive.tar.gz
✅ 7. 解压 .tar.bz2
包
tar -xjf archive.tar.bz2
✅ 8. 解压 .tar.xz
包
tar -xJf archive.tar.xz
📂 四、其他常用选项
选项 | 含义 |
| 创建归档 |
| 解包(解压) |
| 指定归档文件名 |
| 显示处理过程(verbose) |
| 使用 gzip 压缩或解压 |
| 使用 bzip2 压缩或解压 |
| 使用 xz 压缩或解压 |
| 指定解压目录 |
📂 五、常见组合命令速查
操作 | 命令 |
打包目录 |
|
打包+gzip |
|
打包+bzip2 |
|
解压 |
|
解压 |
|
解压 |
|
解压到指定目录 |
|
查看内容(不解压) |
|
📌 小贴士:文件名后缀对应关系
后缀 | 说明 |
| 仅打包 |
/ | 打包 + gzip |
| 打包 + bzip2 |
| 打包 + xz |
🧰 Bonus:日志自动备份例子(按日期命名)
tar -czf logs-$(date +%F).tar.gz /var/log/myapp/
→ 会打包日志目录为类似 logs-2025-04-19.tar.gz
的文件
需要我再帮你写一个自动压缩 + 清理老备份的脚本也可以告诉我哈 💡
或者想看 tar
+ find
配合的高级技巧也可以~
🧵 五、进程控制与输出流符号(Shell 特性)
🌀 1. nohup
– 命令后台运行不中断
nohup
(no hang up)命令用于在用户退出终端后仍保持命令运行。通常配合 &
使用,使程序在后台持续运行。
nohup ./run.sh > output.log 2>&1 &
nohup
:忽略挂起信号> output.log
:将标准输出重定向到文件2>&1
:将标准错误重定向到标准输出&
:放入后台运行
📌 常用于部署服务、执行长时间脚本任务等场景。
🪄 2. 管道符 |
– 命令组合流
管道(Pipe)允许将一个命令的输出作为另一个命令的输入,组成“命令流水线”。
ps aux | grep nginx
- 把
ps aux
的输出传给grep
,用于查找 nginx 相关进程。
cat access.log | sort | uniq -c | sort -nr | head
📌 典型用法是搭配 grep
, awk
, sort
, uniq
, wc
等实现复杂文本处理。
💾 3. 重定向符号 >
, >>
, 2>
, &>
符号 | 含义 | 示例 |
| 重定向标准输出(覆盖) |
|
| 追加到文件末尾 |
|
| 重定向标准错误 |
|
| 将标准错误重定向到标准输出 |
|
| 同时重定向标准输出和错误(Bash 专有) |
|
🪛 4. 后台运行符号 &
将命令放入后台执行,不阻塞当前终端:
sleep 60 &
配合 jobs
/ fg
/ bg
管理后台任务。