Linux - 常用工具介绍

📂 一、文件查看与编辑工具

工具

说明

示例

vim

功能强大的文本编辑器,适用于编写脚本、修改配置文件

vim /etc/hosts

cat

查看文件内容,适合小文件快速输出

cat file.txt

head

查看文件前 N 行

head -n 10 file.txt

tail

查看文件最后 N 行,可用于日志监控

tail -n 20 logfile.log

less

分页查看大文件,可上下滚动

less bigfile.log


在 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)

用来正常输入文字

i进入

命令模式(Command)

用来保存、退出、查找等

:进入


✍️ 最基本的使用流程:

  1. 打开文件:
vim myfile.txt

一开始是以普通模式,来展示的内容的

  1. 进入插入模式开始写字:
    • i,你就能正常输入了。左下角会显示 -- INSERT -- 表示进入插入模式(编辑模式)

  1. 写完以后回到普通模式:
    • Esc,将退回插入模式,并会到普通模式。等

在普通模式中可以进行用来移动光标、删除、复制、粘贴。将光标移动到第2行,并在普通模式下,通过命令进行删除这一行内容。dd 表示删除。uu 表示回退(跟 Ctrl +z 一样)

  1. 保存并退出:
    • 输入 :wq,然后回车(写入并退出),命令模式 通过:前缀来确定用什么命令
    • wq 表示 (写入保存并推出)

  1. 如果你不想保存就退出:
    • 输入 :q!,然后回车(强制退出),q 表示退出的意思。加上 ! 表示强制执行

🚀 快速指令总结(初学者必备):

动作

命令

插入文本

i(insert)

保存文件

:w

退出 Vim

:q

保存并退出

:wqZZ

强制退出不保存

:q!


🔍 二、文件查找与搜索工具

工具

说明

示例

find

强大的文件查找工具,支持按名称、时间、大小等查找

find /var -name "*.log"

grep

文本搜索利器,常与管道连用

grep "error" /var/log/syslog

locate

快速文件定位,基于数据库查询(需 updatedb

locate nginx.conf


当然可以!find 是 Linux 中非常强大的文件查找工具,功能丰富,语法灵活,可以按各种条件查找文件,比如:

  • 文件名
  • 拥有者
  • 文件大小
  • 类型(目录、普通文件、链接等)
  • 修改时间、访问时间
  • 权限等等

🔍 find 命令

find [搜索路径] [搜索条件] [执行动作]

比如:

find /home -name "*.txt"

📁 一、根据 文件名 查找

🌰 案例:查找所有 .log 结尾的文件

find /var/log -name "*.log"

-name 区分大小写,-iname 忽略大小写。


👤 二、根据 文件拥有者 查找

🌰 案例:查找属于用户 john 的文件

find /home -user john

📦 三、根据 文件大小 查找

  • 单位:
    • c 字节
    • k KB
    • M MB
    • G GB

🌰 案例 1:查找大于 100MB 的文件

find / -size +100M

🌰 案例 2:查找小于 1KB 的文件

find /tmp -size -1k

🧱 四、根据 文件类型 查找

类型

含义

f

普通文件

d

目录

l

软链接

b

块设备

c

字符设备

🌰 案例:查找当前目录下的所有目录

find . -type d

🕒 五、根据 修改时间 查找

条件

含义

-mtime

按天计算修改时间(天)

-atime

最后访问时间

-ctime

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

✅ 总结

查找维度

选项

示例

文件名

-name

find / -name "*.sh"

拥有者

-user

find /home -user alice

大小

-size

find / -size +100M

类型

-type

find . -type d

修改时间

-mtime

find /data -mtime +7

grep 是 Linux 中查找内容最强大最常用的命令之一,它的名字来自于 g/re/p —— 来自 Vi 的搜索命令(global/regular expression/print)。它主要用于从文本文件或标准输入中按关键词或正则表达式匹配行


🔍 grep 命令

grep [选项] "关键词" 文件名

🎯 一、最常用的例子

🌰 案例:在 /var/log/syslog 中查找包含 "error" 的行

grep "error" /var/log/syslog

📦 二、常用选项讲解

选项

作用

-i

忽略大小写(ignore case)

-n

显示行号

-v

反向匹配(找出不包含关键词的行)

-r

-R

递归查找目录下所有文件

-l

只列出文件名(含匹配内容的文件)

-c

显示匹配的行数

--color=auto

高亮匹配内容(多数发行版默认启用)


🧪 三、进阶案例演示

✅ 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'


✅ 总结表

查找维度

示例

说明

精确匹配

grep "hello" file.txt

查找包含 "hello" 的行

忽略大小写

grep -i "hello" file.txt

不区分大小写

显示行号

grep -n "root" /etc/passwd

查看行号

不包含某关键词

grep -v "tmp" config.txt

反向匹配

使用正则

grep "^abc" text.txt

查找以 abc 开头的行

递归搜索目录

grep -r "import" ./src

在目录中递归查找

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 自动更新数据库,但你可以手动更新确保查找的是最新的。


🔍 五、常用选项

选项

说明

-i

忽略大小写

-c

只显示匹配条数,不显示内容

-r

支持正则表达式匹配

--help

查看帮助文档


🌰 示例:忽略大小写查找“log”

bash


复制编辑
locate -i log

🌰 示例:只统计有多少条匹配

bash


复制编辑
locate -c ".conf"

🌰 示例:用正则查找所有以 .log 结尾的文件

bash


复制编辑
locate -r "\.log$"

🔐 六、安全性提示

默认数据库不会索引某些私密目录(比如用户私有目录),因为:

  • 默认使用的是 mlocate
  • 它只记录普通用户可以访问的文件路径(防止信息泄露)

✅ 七、locate 和 find 对比总结

比较项

locate

find

查找速度

✅ 极快

❌ 慢(实时查找)

是否依赖数据库

✅ 是

❌ 否

查找内容

仅文件路径名

路径、权限、大小、时间等

支持实时查找

❌ 否

✅ 是

是否需要更新

✅ 需要 updatedb

❌ 不需要

📚 三、系统帮助与命令参考

工具

说明

示例

man

查看命令手册,学习命令语法与参数

man tar

--help

快速查看命令的简要用法

tar --help

这两个是 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 对比

对比点

man

--help

内容

权威、详细

简洁、快速

来源

系统手册数据库

程序自身输出

可用性

有些命令不一定有 man

大多数命令支持

使用习惯

深入学习或参考用

快速查看选项用


🎯 实用建议

需求

推荐用法

快速知道命令有哪些选项

命令 --help

想深入理解一个命令的所有细节

man 命令

配置文件的格式语法

man 5 配置名

C 函数参考

📦 四、压缩与归档工具

工具

说明

示例

zip/unzip

打包为 .zip格式,跨平台兼容好

zip archive.zip file.txt

gzip/gunzip

压缩单个文件为 .gz,常配合日志使用

gzip logfile.log

tar

创建归档、解包,支持配合 gzipbzip2 等压缩

tar -czvf archive.tar.gz dir/

Linux 中常用的文件压缩与解压命令:zipunzip,这两个命令非常直观易用,功能也很实用,尤其适合跨平台打包(比如发给 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:递归压缩整个目录

🛠 常用选项

选项

含义

-r

递归处理目录

-9

使用最高压缩比

-e

加密压缩包(需输入密码)

-q

静默模式,不显示过程信息


📂 二、unzip:解压缩文件

✅ 基本语法
unzip 压缩包名称.zip

🌰 常见示例
1. 解压到当前目录
unzip files.zip
2. 解压到指定目录
unzip files.zip -d /tmp/myfolder/
  • -d:指定解压目录
3. 查看压缩包内容(不解压)
unzip -l files.zip

🛠 常用选项

选项

含义

-l

列出压缩包中的文件

-d

解压到指定目录

-o

解压时自动覆盖已有文件(默认会提示)

-n

解压时跳过已存在的文件


三、zip & unzip 安装方法

有些精简系统默认没装,需要手动安装:

  • Debian/Ubuntu
sudo apt install zip unzip
  • CentOS/RHEL
sudo yum install zip unzip

🆚 四、zip 与其他压缩工具对比

工具

格式

支持平台

是否默认跨平台

zip/unzip

.zip

Linux / Windows / macOS

✅ 是

tar

.tar

Linux/macOS

❌ 不是(Windows需额外工具)

tar.gz/ tgz

.tar.gz

Linux/macOS

rar/unrar

.rar

跨平台(需安装)

💡如果你要给 Windows 用户传文件,用 .zip 是最稳妥的方式。


✅ 小结:常用命令速查表

操作

命令

压缩文件

zip test.zip file.txt

压缩目录

zip -r archive.zip mydir/

解压文件

unzip archive.zip

解压到指定目录

unzip archive.zip -d /path/to/dir/

查看压缩包内容

unzip -l archive.zip

好~继续来讲 Linux 压缩命令中的经典搭档:gzipgunzip。这两个是单文件压缩/解压工具,与 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 效果一样。


🛠 三、常用选项

选项

含义

-c

输出到标准输出,不删除原文件

-d

解压(等同于 gunzip

-k

保留原文件(不删除)

-1 ~ -9

设置压缩级别


📦 四、适合 gzip 的场景

  • 压缩单个日志文件:如 access.logerror.log
  • tar 配合使用:打包多个文件再压缩
tar -czf archive.tar.gz folder/

🔁 五、gzip vs zip 对比

特性

gzip

zip

支持多文件

❌ 只能压一个文件

✅ 支持多个

是否保留目录结构

解压方式

gunzip

unzip

跨平台兼容性

一般用于 Linux/Unix

✅ 通用(Windows 也支持)

推荐搭配

tar

单用即可


🎯 小结命令速查表

操作

命令

压缩文件

gzip file.txt

解压 .gz

文件

gunzip file.txt.gz

保留原文件压缩

gzip -c file.txt > file.txt.gz

指定压缩比

gzip -9 bigfile.log

解压(另一种写法)

gzip -d file.gz


需要我给你整一个「日志定期压缩脚本」吗?可以自动查找一周前的 .log 文件压缩成 .gz,释放空间又整洁 ✨

或者你有没有 tar.gz 相关的问题,也可以一起聊下!

好!现在来讲一下 Linux 文件归档 & 压缩的全能王——tar 命令,它和 gzipbzip2xz 搭配可以实现超强压缩打包,是日常打包备份的必备工具 💼


🔍 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

📂 四、其他常用选项

选项

含义

-c

创建归档

-x

解包(解压)

-f

指定归档文件名

-v

显示处理过程(verbose)

-z

使用 gzip 压缩或解压

-j

使用 bzip2 压缩或解压

-J

使用 xz 压缩或解压

-C

指定解压目录


📂 五、常见组合命令速查

操作

命令

打包目录

tar -cf a.tar mydir/

打包+gzip

tar -czf a.tar.gz mydir/

打包+bzip2

tar -cjf a.tar.bz2 mydir/

解压 .tar

tar -xf a.tar

解压 .tar.gz

tar -xzf a.tar.gz

解压 .tar.bz2

tar -xjf a.tar.bz2

解压到指定目录

tar -xzf a.tar.gz -C /path/to/dir

查看内容(不解压)

tar -tf a.tar.gz


📌 小贴士:文件名后缀对应关系

后缀

说明

.tar

仅打包

.tar.gz

/ .tgz

打包 + gzip

.tar.bz2

打包 + bzip2

.tar.xz

打包 + 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>, &>

符号

含义

示例

>

重定向标准输出(覆盖)

echo Hello > out.txt

>>

追加到文件末尾

echo Again >> out.txt

2>

重定向标准错误

ls not_exist 2> error.log

2>&1

将标准错误重定向到标准输出

command > out.log 2>&1

&>

同时重定向标准输出和错误(Bash 专有)

command &> all.log


🪛 4. 后台运行符号 &

将命令放入后台执行,不阻塞当前终端:

sleep 60 &

配合 jobs / fg / bg 管理后台任务。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值