常用Linux命令(二)
1、cat 命令
cat(全称 concatenate,意为“连接”)是 Linux 和 Unix 系统中最基础且最常用的命令之一。虽然它的名字暗示了“连接文件”的功能,但在实际日常操作中,它最常被用来查看文件内容。
基本用法
cat [选项] [文件...]
实际使用举例
# 查看单个文件
cat filename.txt
# 同时查看多个文件(内容会连续显示)
cat file1.txt file2.txt
#使用重定向符号 > 可以从键盘输入内容并保存为新文件。
cat > newfile.txt
# 接下来输入内容...
# 按 Ctrl + D 结束输入并保存
#使用 >> 可以将内容追加到文件末尾,而不会覆盖原有内容。
cat >> existing.txt
# 输入要追加的内容...
# 按 Ctrl + D 结束
# 对所有行编号(包括空行)
cat -n filename.txt
# 仅对非空行编号(跳过空白行)
cat -b filename.txt
# 查看文件并搜索包含 "error" 的行
cat app.log | grep "error"
# 查看文件并分页显示(结合 less)
cat large_file.txt | less
# 查看文件前10行(结合 head)
cat file.txt | head -n 10
2、less 命令
less 是功能最强大的分页文件查看器。与 cat(一次性显示所有内容)和 more(只能向下翻页)不同,less 允许用户自由地向上和向下滚动,支持搜索、跳转等多种交互操作,且不会一次性将整个文件加载到内存中,因此非常适合查看大型日志文件或代码。
基本用法
less filename.txt
实际使用举例
#查看带有行号的配置文件
less -N /etc/nginx/nginx.conf
3、more 命令
more 是一个经典的分页显示工具。它的主要作用是将长文本文件的内容分屏显示,让用户可以一页一页地阅读,避免内容一次性刷屏导致无法查看。
基本用法
more [选项] [文件名]
实际使用举例
#查看中等大小的配置文件或日志
more /etc/nginx/nginx.conf
4、tail 命令
tail 是用于显示文件末尾内容的核心命令。它与 head(显示开头)相对应,是系统管理员、开发人员查看日志文件、监控实时数据流的必备工具。
基本用法
tail [选项] [文件...]
实际使用举例
#查看日志最新记录(最基础用法)
tail /var/log/nginx/error.log
#实时监控日志更新
tail -200f app.log
# 查看最后1000行中包含 "Exception" 的行
tail -n 1000 app.log | grep "Exception"
5、head 命令
head 是用于查看文件开头部分的命令。它与 tail(查看末尾)相对应,常用于快速预览文件格式、检查 CSV/JSON 表头或确认日志文件的起始时间。
基本用法
head [选项] [文件...]
实际使用举例
# 查看前 2 行
head -n 2 data.csv
#查看多个文件的开头
head -n 3 config_dev.yml config_prod.yml
几个文件查看命令对比
| 特性 | cat | more | less | tail |
|---|---|---|---|---|
| 全称 | Concatenate | More | Less (More的反义) | Tail (尾部) |
| 主要功能 | 连接/显示全量内容 | 分页显示(向下) | 分页显示(双向) | 显示末尾/实时监控 |
| 加载方式 | 一次性加载到内存 | 按需加载 | 按需加载(高效) | 仅读取尾部或持续读取新增 |
| 翻页方向 | 无(直接刷屏) | 主要向下 (Space) | 上下自由 (Space/b) | 无(静态)或自动滚动(动态) |
| 搜索功能 | ❌ 无 | ⚠️ 弱(仅向下) | ✅ 强(正则/双向) | ❌ 无(需配合 grep) |
| 大文件性能 | ❌ 差(卡顿/刷屏) | ✅ 好 | ✅ 极好 | ✅ 极好 |
| 实时追踪 | ❌ 不支持 | ❌ 不支持 | ✅ 支持 (+F) | ✅ 原生支持 (-f) |
| 典型场景 | 小文件、合并文件、脚本输入 | 简单查看、旧系统兼容 | 日常首选、大日志分析 | 监控日志、看最新报错 |
6、find 命令
find 是功能最强大的文件搜索工具。find 会实时遍历磁盘目录结构,因此它能找到最新创建的文件,并支持极其复杂的条件组合(如按名称、大小、时间、权限、用户等搜索)。
基本用法
find [路径...] [表达式] [动作]
实际使用举例
# 匹配文件名(区分大小写)
find . -name "config.txt"
#匹配文件名(忽略大小写)
find . -iname "Config.TXT"
#使用正则表达式匹配整个路径
find . -regex ".*/\.git/.*"
#查找etc名录下以conf格式的任意文件
find /etc -name "*.conf"
#按照时间搜索
find . -mtime +7 (7天前修改的)
find . -mtime -1 (最近24小时内修改的)
find . -mmin -30 (最近30分钟修改的)
find . -atime +30 (30天未访问过的)
find . -ctime -1
#按大小搜索
# 查找大于 100MB 的文件
find /var/log -size +100M
# 查找等于 0 字节的空文件
find . -size 0c
7、wc 命令
wc(Word Count)是用于统计文件行数、单词数和字节数的命令。它常用于快速评估文件大小、统计代码行数或分析日志规模。
基本用法
wc [选项] [文件...]
| 参数 | 长选项 | 说明 | 示例 |
|---|---|---|---|
| -l | --lines | 只统计行数 | wc -l file.txt |
| -w | --words | 只统计单词数 | wc -w file.txt |
| -c | --bytes | 只统计字节数 | wc -c file.txt |
| -m | --chars | 只统计字符数 | wc -m file.txt (处理多字节字符如中文时与 -c 不同) |
| -L | --max-line-length | 显示最长行的长度 | wc -L file.txt |
实际使用举例
# 统计 main.py 有多少行代码
wc -l main.py
# 统计当前目录下所有 .py 文件的总行数
wc -l *.py
#和其他命令管道结合使用
# 统计当前正在运行的进程数量
ps aux | wc -l
# 统计日志文件中包含 "ERROR" 的行数
grep "ERROR" app.log | wc -l
# 统计当前目录下的文件数量(不包括隐藏文件)
ls -1 | wc -l
#统计 Nginx 访问日志中独立 IP 的数量
awk '{print $1}' access.log | sort | uniq | wc -l
8、sort 命令
sort 是 Linux/Unix 系统中用于对文本行进行排序的命令。它默认按 ASCII 码值逐字符比较,将文件内容或标准输入的数据重新排列后输出。
它是数据处理流水线(Pipeline)中的核心组件,常与 uniq、awk、cut 等命令配合使用,用于去重、统计和报表生成。
基本用法
sort [选项] [文件...]
| 参数 | 长选项 | 说明 | 示例 |
|---|---|---|---|
| -n | --numeric-sort | 按数值大小排序(而非字符串) | sort -n numbers.txt |
| -r | --reverse | 逆序排列(从大到小/Z-A) | sort -nr data.txt |
| -k | --key | 指定列进行排序 | sort -k 2,2 file.csv |
| -t | --field-separator | 指定分隔符 | sort -t ',' -k 2 file.csv |
| -u | --unique | 去重(相同行只保留一行) | sort -u file.txt |
| -f | --ignore-case | 忽略大小写 | sort -f names.txt |
| -h | --human-numeric | 按人类可读格式排序 (如 2K, 1G) | sort -h sizes.txt |
| -o | --output | 将结果写入文件 | sort -o output.txt input.txt |
9、uniq 命令
uniq 是用于报告或忽略文件中的重复行的命令。
基本用法
uniq [选项] [输入文件] [输出文件]
| 参数 | 长选项 | 说明 | 示例 |
|---|---|---|---|
| (无) | - | 默认行为:去除相邻重复行,只保留一行 | uniq file.txt |
| -c | --count | 统计次数:在每行前显示重复出现的次数 | uniq -c file.txt |
| -d | --repeated | 仅显示重复行:只显示出现过多次的行(每类只显一次) | uniq -d file.txt |
| -D | --all-repeated | 显示所有重复行:显示所有出现过的重复行(包括重复的副本) | uniq -D file.txt |
| -u | --unique | 仅显示唯一行:只显示从未重复过的行 | uniq -u file.txt |
| -i | --ignore-case | 忽略大小写进行比较 | uniq -i file.txt |
| -f N | --skip-fields=N | 跳过前 N 个字段进行比较(需配合 -t) | uniq -f 1 file.txt |
| -s N | --skip-chars=N | 跳过前 N 个字符进行比较 | uniq -s 5 file.txt |

浙公网安备 33010602011771号