OFFSET偏移
← 文章目录OFFSET / FIELD NOTESNO. 041

文本处理与系统查询

从分页浏览和文本筛选走向内存、磁盘、网络与端口查询。

所在专题Linux 命令行基础与组合 ↗
约 7 分钟阅读开始阅读

文件操作管"东西在哪",进程管理管"什么在跑",这篇管"里面是什么"和"机器什么状态"。


查看文件内容#

cat — 一次性输出全部

cat file.txt           # 全部打印到终端
cat -n file.txt        # 带行号
cat a.txt b.txt        # 拼接两个文件输出

适合短文件。长文件刷屏太快,用下面的。

less — 分页浏览

less file.txt          # 进入浏览模式,按 q 退出
less -N file.txt       # 带行号

进入 less 后的快捷键:

  • Space / b — 下翻一页 / 上翻一页
  • /关键词 — 向下搜索,n 下一个,N 上一个
  • ?关键词 — 向上搜索
  • g / G — 跳到开头 / 结尾
  • q — 退出

head 与 tail — 看头看尾

head file.txt          # 前 10 行
head -n 20 file.txt    # 前 20 行

tail file.txt          # 后 10 行
tail -n 20 file.txt    # 后 20 行

tail -f — 实时追踪文件末尾

tail -f /var/log/syslog     # 日志有新内容就实时显示

这是看日志的神器。按 Ctrl+C 退出追踪。


文本搜索#

grep — 搜索文本内容

grep "关键词" file.txt             # 搜文件中的匹配行
grep -i "error" log.txt           # 忽略大小写
grep -r "关键词" dir/             # 递归搜整个目录
grep -n "关键词" file.txt         # 显示行号
grep -v "排除词" file.txt         # 反向:显示不匹配的行
grep -c "关键词" file.txt         # 只计数,不显示内容

最常用的组合:

grep -rn "TODO" .                  # 递归搜当前目录所有文件,显示行号
ps aux | grep nginx                # 在 ps 输出中筛选
history | grep git                 # 在历史命令中搜索

简单文本处理#

wc — 计数

wc file.txt          # 行数  单词数  字节数
wc -l file.txt       # 只看行数
wc -w file.txt       # 只看单词数

sort — 排序

sort file.txt             # 按字母排序
sort -n file.txt          # 按数字排序
sort -r file.txt          # 倒序
sort -u file.txt          # 去重
du -sh * | sort -hr       # 文件大小从大到小排(常用组合)

cut — 切分列

cut -d':' -f1 /etc/passwd       # 以 : 为分隔,取第 1 列
cut -d',' -f1,3 data.csv        # 简单逗号分隔文本的第 1、3 列;不能解析带引号/逗号的通用 CSV

diff — 对比两个文件

diff file1 file2         # 逐行对比差异
diff -y file1 file2      # 并排显示

系统信息#

系统概况

uname -a              # 内核版本、架构等全部信息
hostname              # 主机名
uptime                # 开了多久了

内存与 CPU

free -h               # 内存使用情况(-h = 人类可读)
lscpu                 # CPU 详细信息(几核、什么型号)
nproc                 # 当前进程可用的处理单元数量,不等同物理核数

free -h 的输出怎么看:

列 含义
total 总内存
used 已用
available 实际可用(含可回收缓存)

看 available,不是 free。Linux 会把空闲内存拿来做缓存,free 小但 available 大是正常的。

磁盘与设备

df -h                 # 各分区还剩多少空间
lsblk                 # 列出所有块设备(硬盘/U 盘)
lsusb                 # 列出 USB 设备
lspci                 # 列出 PCI 设备(显卡/网卡等)

查看发行版信息

cat /etc/os-release   # 你是什么 Linux(NixOS/Ubuntu/Arch...)

网络相关#

ip — 查看网络接口(替代旧命令 ifconfig)

ip a                  # 所有网络接口的 IP 地址
ip route              # 路由表(默认网关在哪)

ping — 测连通性

ping 192.0.2.1        # 示例地址;替换为已知可达且允许探测的目标
ping -c 4 example.com   # 只发 4 个包就停

ss — 看谁在监听端口(替代旧命令 netstat)

ss -tlnp              # 只看 TCP 监听端口
ss -tlnp | grep 8080  # 8080 端口被谁占了

curl — 命令行发 HTTP 请求

curl https://example.com              # GET 请求,输出响应体
curl -I https://example.com           # 只看响应头
curl -O https://example.com/file.zip  # 下载文件(-O = 保留原名)
curl -o my.zip https://example.com/file.zip   # 下载并重命名

wget — 下载文件

wget https://example.com/file.zip     # 下载到当前目录
wget -c https://example.com/file.zip          # 断点续传

日常场景速查#

我想... 命令
看日志 tail -f /var/log/xxx.log
搜代码里所有 TODO grep -rn "TODO" .
内存还剩多少 free -h
磁盘还剩多少 df -h
哪个端口被占用了 ss -tlnp | grep 端口号
下载一个文件 curl -O URL
看两个文件哪里不同 diff file1 file2
当前目录有多少个普通文件(GNU find) find . -maxdepth 1 -type f -printf 'x\n' | wc -l


/var/log/syslog 并非所有发行版都存在;使用 systemd journal 的系统可用 journalctl -f。ss -p 显示的进程信息受权限限制;ping 失败也可能只是目标过滤 ICMP。

参考与延伸

  1. GNU Coreutils 手册 ↗
  2. GNU Findutils 手册 ↗

根据技术笔记重新整理,示例使用通用名称。

沿专题继续阅读

Linux 命令行基础与组合

  1. 01文件与目录操作
  2. 02进程与作业管理
  3. 03文本处理与系统查询
  4. 04Shell 基本功
  5. 05模糊搜索:fzf
  6. 06参数传递:xargs
CONTINUE READING / 下一篇Shell 基本功

用管道、重定向、变量和历史操作组合命令行工具。