常用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
posted @ 2026-05-27 15:12  alex_lau  阅读(32)  评论(0)    收藏  举报