文件操作管"东西在哪",进程管理管"什么在跑",这篇管"里面是什么"和"机器什么状态"。
查看文件内容#
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 列;不能解析带引号/逗号的通用 CSVdiff — 对比两个文件
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。
参考与延伸
根据技术笔记重新整理,示例使用通用名称。