这是一份持续更新的 Linux 命令入口索引,适合在忘记参数时快速查找。示例默认使用 GNU/Linux 环境;BusyBox、BSD/macOS 和精简容器中的参数可能不同,执行前可以先看本机帮助:
COMMAND --help
man COMMAND
type -a COMMAND示例中的 FILE、DIR、PATTERN、USER、GROUP、HOST 和 PORT 都是占位符。涉及删除、覆盖、递归权限或 sudo 的命令,先在测试目录确认目标路径。
文件和目录
# 包含隐藏文件的详细列表
ls -alh DIR
# 按修改时间排序;最近修改的在前
ls -alht DIR
# 创建多级目录
mkdir -p path/to/DIR
# 保留大部分属性地复制目录
cp -a SOURCE_DIR DEST_DIR
# 移动前遇到覆盖就询问
mv -i SOURCE DEST
# 创建符号链接
ln -s TARGET LINK_NAME
# 删除前集中确认一次;-- 防止以 - 开头的路径被当作参数
rm -I -- FILE
rm -rI -- DIRrm 删除后通常不能依赖回收站恢复。脚本中使用变量时,先输出并检查展开结果,不要在未确认的情况下组合 sudo rm -rf。
查找文件
find 几乎所有 Linux 环境都可用;fd 更适合交互式查找,但需要额外安装。
# 按名称查找,忽略大小写
find DIR -type f -iname '*PATTERN*'
# 查找最近 7 天修改的文件
find DIR -type f -mtime -7
# 查找大于 1 GiB 的文件,并打印可读大小
find DIR -type f -size +1G -exec du -h -- {} +
# fd:默认尊重 .gitignore
fd PATTERN DIR
# 包含隐藏文件,但仍尊重忽略规则
fd --hidden PATTERN DIR不要把 find ... -delete 作为第一次执行的版本。先去掉 -delete 检查结果,再决定是否删除。
搜索文本
优先使用 rg(ripgrep)搜索代码;系统缺少 rg 时再使用 grep。
# 递归搜索并显示行号
rg -n 'PATTERN' DIR
# 只列出匹配文件
rg -l 'PATTERN' DIR
# 按文件类型搜索
rg -n -t js 'PATTERN' DIR
# 包含隐藏文件;仍然尊重 .gitignore
rg --hidden 'PATTERN' DIR
# grep 的通用写法
grep -RIn --exclude-dir=.git 'PATTERN' DIRrg -F 或 grep -F 按普通字符串匹配,不把输入解释为正则表达式;搜索包含 [、*、. 等字符的固定文本时更省心。
查看和处理文本
# 查看开头或结尾
head -n 40 FILE
tail -n 40 FILE
# 持续查看新增日志;文件轮转后按文件名重新打开
tail -F FILE
# 查看指定行范围
sed -n '20,80p' FILE
# 按冒号分隔,输出第一列
awk -F: '{print $1}' FILE
# 排序并统计重复项
sort FILE | uniq -c | sort -nr
# 以 NUL 分隔,安全处理带空格或换行的文件名
find DIR -type f -print0 | xargs -0 COMMAND处理 JSON 时优先使用 jq,不要依赖 grep 或正则解析结构化数据:
jq '.' FILE.json
jq -r '.items[]?.name' FILE.json磁盘和目录占用
# 文件系统容量和类型
df -hT
# 当前目录第一层占用;-x 不跨文件系统
du -xhd 1 . | sort -h
# 单个目录总大小
du -xsh DIR
# 块设备、文件系统、UUID 和挂载点
lsblk -fdu -d、sort -h 等参数以 GNU 工具为准。发现磁盘占用异常时,还要检查已删除但仍被进程占用的文件:
sudo lsof +L1进程和资源
# 按 CPU 或内存排序
ps aux --sort=-%cpu | head
ps aux --sort=-%mem | head
# 按名称查找进程并显示完整命令行
pgrep -af PROCESS_NAME
# 动态查看资源
top
# 先请求正常退出,必要时再升级信号
kill -TERM PID
kill -KILL PID
# 内存概览
free -h
# 每秒刷新一条命令的输出
watch -n 1 'COMMAND'不要把 kill -9 当作第一选择;它不会给进程清理临时文件、释放锁或正常关闭连接的机会。
网络、端口和 HTTP
# 地址和路由
ip -brief address
ip route
# 监听中的 TCP/UDP 端口和所属进程
sudo ss -lntup
# 查看指定 TCP 端口占用
sudo lsof -nP -iTCP:PORT -sTCP:LISTEN
# DNS 查询
getent hosts HOST
# 只查看 HTTP 响应头
curl -I https://HOST/
# 请求失败时返回非零状态,并跟随重定向
curl --fail --show-error --location https://HOST/curl -k 会跳过 TLS 证书校验,不应作为生产故障的长期解决方案。
压缩和解压
解压不可信归档前先列出内容,确认没有绝对路径或可疑的 ../ 路径。
# tar.gz:创建、查看、解压
tar -czf ARCHIVE.tar.gz DIR
tar -tzf ARCHIVE.tar.gz
tar -xzf ARCHIVE.tar.gz -C DEST_DIR
# 使用 pigz 并行压缩 gzip;THREADS 按机器资源设置
tar --use-compress-program="pigz -p THREADS" -cf ARCHIVE.tar.gz DIR
# tar.zst:创建、查看、解压
tar --zstd -cf ARCHIVE.tar.zst DIR
tar --zstd -tf ARCHIVE.tar.zst
tar --zstd -xf ARCHIVE.tar.zst -C DEST_DIR
# zip
zip -r ARCHIVE.zip DIR
unzip -l ARCHIVE.zip
unzip ARCHIVE.zip -d DEST_DIR
# 7-Zip
7z a ARCHIVE.7z DIR
7z l ARCHIVE.7z
7z x ARCHIVE.7z -oDEST_DIRunzip -o 和 7z ... -aoa 会直接覆盖现有文件,只在已经确认目标目录内容时使用。
用户、用户组和权限
先检查身份和现有权限:
id USER
getent group GROUP
namei -l PATH
getfacl PATH创建共享组并加入用户:
sudo groupadd GROUP
sudo usermod -aG GROUP USER用户通常需要重新登录才能获得新的补充组。配置共享目录时,分别处理目录与文件,避免递归地给普通文件增加执行位或 setgid 位:
sudo chgrp -R GROUP SHARED_DIR
sudo find SHARED_DIR -type d -exec chmod 2770 {} +
sudo find SHARED_DIR -type f -exec chmod 0660 {} +如果系统支持 ACL,可以让新文件默认继承组权限:
sudo setfacl -R -m g:GROUP:rwx SHARED_DIR
sudo setfacl -R -d -m g:GROUP:rwx SHARED_DIR对 / 或未知变量执行递归 chmod、chown 风险很高。操作前先用 printf '%q\n' "$TARGET" 或 realpath -- "$TARGET" 确认路径。
系统和硬件信息
# 内核、发行版和主机信息
uname -a
cat /etc/os-release
hostnamectl
# CPU、PCI 和 USB 设备
lscpu
lspci -nn
lsusb
# 内核消息;访问权限因发行版而异
sudo dmesg --human --level=err,warnsystemd 系统上常用:
# 失败的服务
systemctl --failed
# 服务状态和本次启动日志
systemctl status SERVICE
journalctl -b -u SERVICE
# 持续查看服务日志
journalctl -f -u SERVICE
# 启动耗时概览和关键链
systemd-analyze
systemd-analyze blame
systemd-analyze critical-chain
# 生成启动时序图
systemd-analyze plot > boot.svgShell 会话与后台任务
# 让命令在退出终端后继续,并记录输出
nohup COMMAND > COMMAND.log 2>&1 &
# 查看当前 shell 的后台任务
jobs -l
# 将任务移到后台或前台
bg %JOB_ID
fg %JOB_ID长时间交互任务优先使用 tmux 或 screen,比单纯依赖 nohup 更容易重新连接和观察状态。
终端显示
Linux 虚拟控制台可以设置空白等待时间:
setterm --blank 1这通常只影响 Linux 虚拟控制台,不一定影响桌面环境、SSH 终端或显示器自身的电源管理。
维护这份速查表
新增命令时遵循以下规则:
- 按任务归类,不按软件包来源堆放。
- 优先保留能直接复制并替换占位符的最小示例。
- 对删除、覆盖、递归权限、磁盘写入和网络安全降级明确标注风险。
- 发行版专属安装方法放到对应发行版文章,不混入通用命令。
- 参数不确定时先查
--help、man page 或上游文档,并注明 GNU、BusyBox 或 BSD 差异。
viddy、duf 等旧 Arch Linux / Yay 安装片段继续保留在 ArchLinux 旧记录归档,这里不重复记录发行版特定安装命令。