点击左侧跳转分类;点击命令或示例即可复制。
文件与目录
| 命令 | 说明 | 示例 |
|---|---|---|
pwd |
显示当前工作目录 | pwd |
ls -lah |
详细列出文件(含隐藏、人类可读大小) | ls -lah /var/log |
cd /path |
切换目录;cd - 回上一目录;cd ~ 回首页 | cd /etc/nginx |
mkdir -p a/b/c |
递归创建目录 | mkdir -p logs/app |
touch file |
创建空文件或更新时间戳 | touch .env |
cp -a src dest |
复制文件/目录(保留属性) | cp -a conf conf.bak |
mv old new |
移动或重命名 | mv a.log a.log.bak |
rm -rf dir |
强制递归删除(慎用) | rm -rf /tmp/build |
ln -s target link |
创建软链接 | ln -s /opt/app/bin/app /usr/local/bin/app |
realpath . |
解析绝对路径 | realpath ./config |
查看文件
| 命令 | 说明 | 示例 |
|---|---|---|
cat file |
一次性输出全部内容 | cat /etc/hosts |
less file |
分页查看(方向键/搜索 /) | less app.log |
head -n 50 file |
看文件前 N 行 | head -n 20 error.log |
tail -n 100 file |
看文件后 N 行 | tail -n 50 access.log |
tail -f file |
实时跟踪日志输出 | tail -f /var/log/nginx/error.log |
wc -l file |
统计行数(-w 词数 -c 字节) | wc -l *.log |
file path |
判断文件类型 | file ./a.out |
stat file |
查看大小、权限、时间等元信息 | stat package.json |
diff a b |
对比两个文件差异 | diff conf.conf conf.conf.bak |
xxd file | head |
十六进制查看(排障二进制) | xxd dump.bin | head |
压缩与打包
| 命令 | 说明 | 示例 |
|---|---|---|
tar -czvf a.tar.gz dir |
打包并 gzip 压缩 | tar -czvf release.tar.gz dist/ |
tar -xzvf a.tar.gz |
解压 .tar.gz | tar -xzvf release.tar.gz -C /opt/ |
tar -tzvf a.tar.gz |
只查看压缩包内容 | tar -tzvf release.tar.gz | head |
tar -cjvf a.tar.bz2 dir |
bzip2 压缩(更小更慢) | tar -cjvf data.tar.bz2 data/ |
gzip file |
压缩为 .gz(原文件被替换) | gzip big.log |
gunzip file.gz |
解压 .gz | gunzip big.log.gz |
zip -r a.zip dir |
打 zip 包 | zip -r dist.zip dist/ |
unzip a.zip |
解压 zip | unzip dist.zip -d /tmp/ |
unzip -l a.zip |
列出 zip 内容 | unzip -l dist.zip |
zcat file.gz | less |
不解压查看 gzip 文本 | zcat access.log.gz | less |
查找与过滤
| 命令 | 说明 | 示例 |
|---|---|---|
find . -name '*.log' |
按名查找文件 | find /var/log -name '*.log' |
find . -type f -mtime -1 |
查找 1 天内修改的文件 | find . -type f -mtime -1 |
find . -type f -size +100M |
查找大于 100M 的文件 | find / -type f -size +100M 2>/dev/null |
grep -Rni 'error' . |
递归搜索关键字(忽略大小写) | grep -Rni 'Exception' src/ |
grep -v '^#' file |
排除匹配行(如注释) | grep -v '^#' .env |
which cmd |
查看命令所在路径 | which java |
whereis cmd |
查二进制/手册/源码路径 | whereis nginx |
locate name |
快速按名定位(需 updatedb) | locate nginx.conf |
history | grep ssh |
在历史命令中搜索 | history | grep ssh |
type cmd |
判断命令是别名/函数/二进制 | type ll |
文本处理
| 命令 | 说明 | 示例 |
|---|---|---|
sort file |
排序;sort -u 排序并去重 | sort -u ids.txt |
uniq -c |
相邻去重并计数(常先 sort) | sort a.txt | uniq -c | sort -nr |
cut -d: -f1 file |
按分隔符取字段 | cut -d',' -f1 data.csv |
awk '{print $1}' file |
按列处理文本 | awk '{print $1,$NF}' access.log |
sed -n '10,20p' file |
打印指定行范围 | sed -n '1,30p' README.md |
sed -i 's/old/new/g' file |
原地替换(先备份再改) | sed -i.bak 's/8080/9090/g' app.yml |
tr 'a-z' 'A-Z' |
字符转换/删除 | echo hello | tr 'a-z' 'A-Z' |
xargs -I{} cmd {} |
把标准输入转成命令参数 | cat list.txt | xargs -I{} cp {} /tmp/ |
column -t file |
对齐显示成列 | mount | column -t |
jq . file.json |
格式化/查询 JSON(需安装 jq) | curl -s api | jq '.data' |
权限与用户
| 命令 | 说明 | 示例 |
|---|---|---|
chmod 755 file |
改权限;目录常用 755,脚本 755 | chmod +x deploy.sh |
chmod -R u+rwX dir |
递归给所有者读写/可进入 | chmod -R u+rwX project/ |
chown user:group file |
改所有者 | chown -R www-data:www-data /var/www |
sudo cmd |
以管理员权限执行 | sudo systemctl restart nginx |
sudo -i |
切换到 root 登录 shell | sudo -i |
su - user |
切换用户 | su - deploy |
whoami |
当前用户名 | whoami |
id |
查看 uid/gid/组 | id |
groups |
当前用户所属组 | groups |
passwd |
修改当前用户密码 | passwd |
进程管理
| 命令 | 说明 | 示例 |
|---|---|---|
ps aux | grep name |
查找进程 | ps aux | grep java |
ps -ef |
完整进程列表 | ps -ef | head |
top |
实时查看 CPU/内存占用 | top |
htop |
更友好的进程监视(需安装) | htop |
kill PID |
结束进程;杀不掉用 kill -9 PID | kill 12345 |
killall name |
按进程名结束 | killall node |
pkill -f pattern |
按命令行模式杀进程 | pkill -f 'spring-boot' |
nohup cmd & |
后台运行,退出终端不中断 | nohup java -jar app.jar >app.log 2>&1 & |
jobs / fg / bg |
查看/前台/后台作业 | jobs |
systemctl status svc |
查看服务状态(systemd) | systemctl status nginx |
磁盘与内存
| 命令 | 说明 | 示例 |
|---|---|---|
df -h |
查看磁盘分区用量 | df -h |
du -sh * |
当前目录各子项占用 | du -sh /var/log/* |
du -ah . | sort -rh | head |
找出最大文件 | du -ah /var | sort -rh | head -20 |
free -h |
查看内存与交换分区 | free -h |
lsblk |
列出块设备与挂载 | lsblk |
mount | column -t |
查看挂载点 | mount | column -t |
lsof -i :8080 |
查看占用端口的进程 | lsof -i :3306 |
lsof +D dir |
查看目录被谁占用(卸载失败时) | lsof +D /mnt/data |
ncdu / |
交互式看目录占用(需安装) | ncdu /var |
iotop |
查看磁盘 IO 占用(需安装) | sudo iotop |
网络诊断
| 命令 | 说明 | 示例 |
|---|---|---|
ping -c 4 host |
连通性探测 | ping -c 4 8.8.8.8 |
curl -I url |
只看响应头 | curl -I https://example.com |
curl -v url |
详细请求过程(排障) | curl -v http://127.0.0.1:8080/health |
curl -X POST -H 'Content-Type: application/json' -d '{}' url |
发 JSON POST | curl -X POST -H 'Content-Type: application/json' -d '{"a":1}' http://127.0.0.1:8080/api |
wget -O file url |
下载文件到指定名 | wget -O app.tgz https://example.com/a.tgz |
ss -lntp |
查看监听端口(替代 netstat) | ss -lntp | grep 8080 |
ip a |
查看网卡与 IP | ip a |
ip r |
查看路由表 | ip r |
dig +short domain |
DNS 解析查询 | dig +short www.example.com |
traceroute host |
路由追踪 | traceroute 1.1.1.1 |
SSH 与传输
| 命令 | 说明 | 示例 |
|---|---|---|
ssh user@host |
登录远程主机 | ssh root@192.168.1.10 |
ssh -p 2222 user@host |
指定 SSH 端口 | ssh -p 2222 deploy@app1 |
ssh-copy-id user@host |
上传公钥实现免密登录 | ssh-copy-id deploy@app1 |
scp file user@host:/path |
安全复制文件到远程 | scp app.jar deploy@app1:/opt/app/ |
scp -r dir user@host:/path |
递归复制目录 | scp -r dist/ deploy@app1:/var/www/ |
rsync -avz src/ user@host:dst/ |
增量同步(常用部署) | rsync -avz --delete dist/ deploy@app1:/var/www/ |
rsync -avz -e 'ssh -p 2222' src/ host:dst/ |
指定 SSH 端口同步 | rsync -avz -e 'ssh -p 2222' ./ deploy@app1:/opt/app/ |
ssh user@host 'cmd' |
远程执行一条命令 | ssh deploy@app1 'df -h' |
tar czf - dir | ssh user@host 'tar xzf - -C /path' |
打包管道传到远程并解压 | tar czf - dist | ssh deploy@app1 'tar xzf - -C /var/www' |
sftp user@host |
交互式安全文件传输 | sftp deploy@app1 |
管道与重定向
| 命令 | 说明 | 示例 |
|---|---|---|
cmd1 | cmd2 |
管道:前输出作后输入 | ps aux | grep nginx |
cmd > file |
覆盖写入标准输出 | echo ok > status.txt |
cmd >> file |
追加写入 | date >> run.log |
cmd 2> err.log |
只重定向标准错误 | java -jar app.jar 2> err.log |
cmd >out.log 2>&1 |
标准输出和错误都写入文件 | npm run build >build.log 2>&1 |
cmd &> file |
同上(bash) | ./run.sh &> all.log |
cmd1 && cmd2 |
前成功才执行后 | mvn test && mvn package |
cmd1 || cmd2 |
前失败才执行后 | ping -c1 a || echo fail |
cmd & |
后台执行 | ./server & |
tee file |
一边显示一边写入文件 | npm run build | tee build.log |
系统信息
| 命令 | 说明 | 示例 |
|---|---|---|
uname -a |
内核与系统信息 | uname -a |
hostnamectl |
主机名与系统概览 | hostnamectl |
uptime |
运行时长与负载 | uptime |
date |
当前时间;date +%F_%T 格式化 | date '+%Y-%m-%d %H:%M:%S' |
timedatectl |
时区与时间同步状态 | timedatectl |
env |
查看环境变量 | env | grep PATH |
echo $PATH |
查看 PATH | echo $PATH |
export VAR=value |
设置当前会话环境变量 | export JAVA_HOME=/usr/lib/jvm/java-17 |
history |
历史命令;!! 重跑上一条 | history | tail -20 |
clear |
清屏 | clear |
包管理
| 命令 | 说明 | 示例 |
|---|---|---|
apt update && apt install pkg |
Debian/Ubuntu 安装包 | sudo apt update && sudo apt install -y curl |
apt search keyword |
搜索软件包 | apt search nginx |
apt remove pkg |
卸载软件包 | sudo apt remove -y vim |
yum install pkg |
CentOS/RHEL 7 安装 | sudo yum install -y git |
dnf install pkg |
Fedora/RHEL 8+ 安装 | sudo dnf install -y htop |
rpm -qa | grep name |
已安装 rpm 包查询 | rpm -qa | grep nginx |
dpkg -l | grep name |
已安装 deb 包查询 | dpkg -l | grep nginx |
snap install pkg |
Snap 安装(部分发行版) | sudo snap install code --classic |
服务与日志
| 命令 | 说明 | 示例 |
|---|---|---|
systemctl start/stop/restart svc |
启停/重启服务 | sudo systemctl restart nginx |
systemctl enable/disable svc |
开机自启/取消 | sudo systemctl enable nginx |
systemctl status svc |
服务状态与最近日志 | systemctl status nginx |
systemctl daemon-reload |
重载 unit 配置 | sudo systemctl daemon-reload |
journalctl -u svc -f |
跟踪某服务日志 | journalctl -u nginx -f |
journalctl -xe |
最近错误与详细日志 | journalctl -xe |
journalctl --since '1 hour ago' |
按时间查看日志 | journalctl --since today |
dmesg | tail |
内核环形缓冲区(硬件/驱动) | dmesg | tail -50 |
文档说明
本页整理开发日常最常用的 Linux / Shell 命令,按场景分类,便于快速查阅。命令以「能解决实际问题」为准,避免冷门参数堆砌。
使用建议
1. 先用左侧导航跳到目标分类,再点命令复制粘贴微调。
2. rm -rf、kill -9 等破坏性操作执行前先确认路径与目标。
3. 不同发行版包管理命令不同:Debian/Ubuntu 用 apt,RHEL/CentOS 用 yum/dnf。
沪公网安备31010502007661号