Linux 常用命令大全:从入门到实战
Linux 是服务器和开发环境的主流操作系统。本文整理了日常开发最常用的 Linux 命令,从文件操作到进程管理,帮你快速查阅、提升效率。
为什么需要这篇速查表
Linux 命令有两千多个,没人能全记住。这篇里列的是我实际每天在用的,不是 man 里抄出来的全量文档。
服务器运维、容器调试、日常开发——这几个场景覆盖之后,剩下的查文档就行。
文件与目录操作
最常用
ls -lah # -l 长格式 -a 含隐藏文件 -h 人类可读大小
cd - # 回到上一个目录(很实用)
pwd # 当前路径
mkdir -p a/b/c # -p 连父目录一起创建
cp -r dir1 dir2 # -r 递归复制目录
mv old.txt new.txt # 重命名也是 mv
rm -rf dist/ # 慎用 -rf,删前先 ls 确认一下
查找文件
# 在根目录找 nginx.conf,慢但全
find / -name "nginx.conf" 2>/dev/null
# 当前目录及子目录找 .log 文件
find . -name "*.log"
# 找最近 30 分钟改过的文件(排查问题时很有用)
find . -mmin -30
# 用 locate 更快(需要先 updatedb)
locate nginx.conf
查看文件内容
cat file.txt # 全部输出
less file.txt # 分页查看,支持搜索(/keyword)
head -n 50 file.txt # 看前 50 行
tail -n 50 file.txt # 看后 50 行
tail -f /var/log/nginx/error.log # 实时追踪日志,调试必备
权限管理
理解 rwx 和 755
# r=4, w=2, x=1
# 755 = owner:rwx group:r-x other:r-x
chmod 755 script.sh
chmod -R 644 public/ # -R 递归
# 给所有者加执行权限
chmod u+x script.sh
# 修改所有者
chown -R www-data:www-data /var/www
一个常见坑:chmod 777 解决权限问题最快,但也最危险——任何用户都能读写执行。生产环境别这么干。
进程管理
ps aux | grep node # 找 node 进程
top # 实时查看进程资源占用
htop # top 的加强版(需安装)
kill -9 12345 # -9 是强制杀死,慎用
kill -15 12345 # -15 是优雅终止(默认)
# 查看某进程占用的端口
lsof -i :3000
kill -9 不给进程留任何清理机会,可能导致数据丢失。优先用 kill -15(等价于 kill),不行再上 -9。
网络相关
# 查看 IP
ip addr # 推荐(iproute2 套件)
ifconfig # 老命令,部分系统已废弃
# 测试连通性
ping -c 4 google.com # -c 指定次数
# 查看端口占用
ss -tlnp # 推荐(比 netstat 快)
netstat -tlnp # 老命令
# 下载文件
curl -O https://example.com/file.zip
wget https://example.com/file.zip
# 发 HTTP 请求(调试接口)
curl -X POST https://api.example.com/users \
-H "Content-Type: application/json" \
-d '{"name":"test"}'
压缩与解压
# .tar.gz
tar -czf archive.tar.gz dir/ # 压缩
tar -xzf archive.tar.gz # 解压
# .zip
zip -r archive.zip dir/
unzip archive.zip
# .gz
gzip file.txt # 压缩(会删除原文件)
gunzip file.txt.gz # 解压
参数记忆法:tar 的 -czf 是 **c**reate **z**ip **f**ile,-xzf 是 e**x**tract **z**ip **f**ile。
管道与重定向
这是 Linux 最强大的部分,很多人用了好几年都没真正掌握。
# 管道:前一个命令的输出作为后一个的输入
cat access.log | grep "404" | wc -l # 统计 404 请求数量
# 重定向
echo "hello" > file.txt # 覆盖写入
echo "world" >> file.txt # 追加写入
command > output.log 2>&1 # 标准输出和错误都写入文件
command > /dev/null 2>&1 # 丢弃所有输出(静默执行)
# heredoc:向命令传入多行输入
mysql -u root -p << EOF
CREATE DATABASE myapp;
USE myapp;
CREATE TABLE users (id INT);
EOF
系统资源查看
df -h # 磁盘空间(人类可读)
du -sh * # 当前目录各文件/文件夹大小
free -h # 内存使用
# 查看 CPU 信息
lscpu
cat /proc/cpuinfo | grep "model name"
# 查看系统运行时间和负载
uptime # 输出:load average: 0.15, 0.25, 0.30
load average 三个数字分别代表 1分钟、5分钟、15分钟的平均负载。如果 1分钟远高于 15分钟,说明负载在升高;反过来说明在恢复。
SSH 相关
# 登录远程服务器
ssh user@192.168.1.100
# 指定端口
ssh -p 2222 user@host
# 用密钥登录(推荐,比密码安全)
ssh -i ~/.ssh/id_rsa user@host
# 把本地公钥加到服务器(只需执行一次)
ssh-copy-id user@host
# 本地端口转发(访问本地 3306 实际连到远程的 MySQL)
ssh -L 3306:localhost:3306 user@remote-host
实用技巧
历史命令搜索
按 Ctrl + r 然后输入关键词,能搜索历史命令。找到后按 Enter 执行,或 Ctrl + → 编辑后再执行。
快速回到上次的目录
cd - # 回到上一个目录
批量重命名
# 把所有 .txt 改成 .md
rename 's/\.txt$/.md/' *.txt
# 或者直接用 for 循环
for f in *.txt; do mv "$f" "${f%.txt}.md"; done
查看命令运行时间
time npm install # 输出实际时间、用户态 CPU、内核态 CPU
总结
上面的命令覆盖了日常 80% 的使用场景。剩下的 20% 遇到时查 man 或者 Google 就行——没人能把所有命令记在脑子里。
> **Pro Tip**: 在 ~/.bashrc 或 ~/.zshrc 里加 alias ll='ls -lah',敲两个字母就能代替八个,积少成多。