全部速查表

Linux Shell 命令速查

日常 Linux / macOS Shell 命令快速参考:文件操作、文本处理、权限、进程、网络、归档与存储,并附带常用参数和实操示例。

40 条命令

文件与导航

pwd

打印当前工作目录的绝对路径。

pwd
ls

列出目录内容。

-l 长格式;-a 包含隐藏文件;-h 人类可读大小;-t 按修改时间排序;-r 反向

ls -lah /var/log
cd <dir>

切换当前工作目录。

cd ~/projects/app && pwd
tree <dir>

递归以树形列出目录内容(便于概览,可能需要先安装)。

-L <n> 最大深度;-a 显示隐藏文件;-d 仅目录;-I 排除模式

tree -L 2 -I 'node_modules|.git' .

文件操作

mkdir -p <dir>

一次性创建目录(含所有缺失的父目录)。

-p 创建父目录;-v 详细;-m <mode> 设置权限

mkdir -p src/components/ui
cp <src> <dest>

复制文件或目录。

-r 递归(目录);-i 交互;-v 详细;-p 保留权限/时间

cp -rv src/ backup/
mv <src> <dest>

移动(重命名)文件或目录。

-i 交互;-v 详细;-n 不覆盖

mv README.md readme.md && mv ../tmp .
rm <path>

删除文件或目录。⚠️ 没有回收站——务必核对路径。

-r 递归;-f 强制;-i 交互;-v 详细

rm -rf build/ node_modules/
ln -s <target> <link>

在 <link> 处创建一个指向 <target> 的符号链接。

-s 符号链接(默认是硬链接);-f 覆盖已有;-n 不跟随已有链接

ln -s /opt/app-v2 current
touch <file>

创建一个空文件,或仅更新 mtime 不改内容。

touch .gitignore

文本查看

cat <file>

把整个文件输出到 stdout。

-n 显示行号;-A 显示非打印字符;-s 压缩空行

cat -n package.json
less <file>

在分页器中打开文件(/ 搜索、n / N 跳转、q 退出)。

-N 显示行号;-S 不换行;+F 类似 tail 的自动跟踪

less -NS /var/log/syslog
head -n 10 <file>

输出文件开头 N 行(默认 10 行)。

head -n 30 /etc/passwd
tail -n 50 -f <file>

输出末尾 N 行,并持续跟踪文件新增内容(适合看日志)。

-f 跟踪;-F 跟踪并重试;-n 行数(默认 10);-c 字节数;--pid=PID 指定进程退出后停止

tail -f -n 50 /var/log/nginx/access.log

搜索与过滤

grep <pattern> <files>

搜索匹配模式的行;支持扩展与 PCRE 正则。

-i 忽略大小写;-r 递归;-n 显示行号;-v 反向;-E 扩展正则

grep -rni "TODO" src/
find <path> -name <pattern>

遍历目录树,列出匹配条件的文件。

-type f|d;-name glob;-iname 忽略大小写;-size +1M;-mtime -7;-maxdepth

find . -type f -name "*.log" -mtime +7 -delete
awk '<prog>' <file>

模式-动作文本扫描器——切列、求和等都很顺手。

-F 字段分隔符;-v var=value;-f 脚本文件

awk -F'\t' 'NR>1 {sum+=$3} END {print sum}' data.tsv
sed 's/<a>/<b>/' <file>

流编辑器——按行做替换、删除、插入。

-i 直接修改文件;-E 扩展正则;-e 组合多个表达式;s/from/to/[g] [p]

sed -i '' 's/version = "1\.."/version = "1.9"/' pyproject.toml
sort | uniq -c | sort -nr

经典管道组合:计数并按频率降序排序。

awk '{print $1}' access.log | sort | uniq -c | sort -nr | head

权限

chmod <mode> <file>

修改文件权限(如 755、u+x、g-w、o=r)。

-R 递归;--reference=<file> 复制权限

chmod -R u=rwX,go=r ./docs
chown <user>[:<group>] <file>

修改文件的属主与属组。

-R 递归;-h 作用于符号链接本身(配合 -R)

chown -R www-data:www-data /var/www/html
umask

查看 / 设置新建文件的默认权限掩码。

-S 符号形式输出;-p 输出可移植的 umask

umask 022

进程与系统

ps aux

以 BSD 风格列显示所有进程的详细信息。

-e 全部;-f 完整;-L 线程;--sort=-%mem

ps auxf | grep -v grep | grep nginx
top / htop

交互式实时进程查看器(htop 体验更好,可能需要先安装)。

P/CPU M/MEM 排序;k 杀进程;r 调整优先级;q 退出

htop -u www-data
kill [-9|<sig>] <pid>

向进程发送信号。SIGTERM (15) 礼貌;SIGKILL (9) 强制。

-9 SIGKILL;-l 列出所有信号;-s 用名称指定信号

kill -TERM 12345 && sleep 2 && kill -9 12345
jobs / bg / fg / nohup

任务控制——列出、后台、前台、忽略挂断信号运行。

nohup ./long-task.sh > out.log 2>&1 &
systemctl <verb> <unit>

控制 systemd 服务与 unit(status、start、stop、enable、logs)。

status / start / stop / restart / enable / disable;-u <user>

systemctl status nginx && systemctl reload nginx

网络

wget <url>

非交互式下载器;支持递归 / 镜像。

-c 断点续传;-q 静默;--no-check-certificate;-r 递归

wget -c https://example.com/big-archive.tar.gz
ssh <user>@<host> [cmd]

建立 SSH 会话或在远端主机执行一次性命令。

-p <port>;-i <key>;-L / -R / -D 端口转发;-N 不执行远端命令;-f 后台

ssh -i ~/.ssh/id_ed25519 user@host 'sudo systemctl restart nginx'
scp / rsync

在主机间复制文件。rsync 在增量 / 重复传输时更快。

scp -r / rsync -avz --progress src/ user@host:/dst/

rsync -avz --progress ./build/ deploy@server:/srv/app/
ping / traceroute / ss

诊断可达性、路径与监听端口。

ping -c N 次数;ss -tulnp 查看监听;ss -s 概要统计

ss -tulnp | grep -E ':80|:443'

归档与压缩

tar -czf out.tgz <paths>

创建或解压 tar 归档,可选 gzip / bzip2 / xz。

-c 创建;-x 解压;-t 列表;-z gzip;-j bzip2;-J xz;-v 详细;-C <dir> 切换目录

tar -czf - src/ | ssh server 'tar -xzf - -C /srv/app'
zip -r out.zip <paths>

递归地创建 zip 归档。

-r 递归;-9 最高压缩;-e 加密;-j 忽略路径

zip -r9 build-$(date +%Y%m%d).zip dist/
unzip [-d <dir>] file.zip

解压 zip 归档,可指定目标目录。

-d 目标目录;-o 覆盖;-l 列表;-p 输出到 stdout;-q 静默

unzip -o build.zip -d ./extracted

磁盘与存储

df -h

查看已挂载文件系统的磁盘占用(人类可读)。

-h 人类可读;-T 显示文件系统类型;-i 显示 inode

df -hT /
du -sh <path>

估算目录或文件占用的空间;-s 汇总目录。

-s 汇总;-h 人类可读;-a 全部;--max-depth=N;-x 不跨文件系统

du -sh node_modules/ build/ .

Shell 内建

history / !! / !$

浏览、重放、复用历史命令。

history N;!<n> 重跑第 N 行;!$ 取上一条命令的最后一个参数;!! 重跑上一条

git add . && git commit -m "$(!!)"
alias / unalias

定义或列出 shell 命令快捷方式(通常写在 ~/.bashrc / ~/.zshrc)。

alias ll='ls -lah' && alias gs='git status'
env / export / unset

列出、设置、清除子进程可见的环境变量。

export DATABASE_URL=postgres://localhost/dev && env | grep DATABASE

帮助

man <cmd> / <cmd> --help

阅读命令的 man 手册或内置帮助。

man -k 关键词搜索;man -t <cmd> 输出 PDF;--help 简短用法

man -k 'tar archive'

速查页版本 1.0.0

适用于 bash 5+ / POSIX 2017