Linux 的常用命令分为几组:导航(pwd、ls、cd)、文件操作(cp、mv、rm、mkdir)、权限(chmod、chown)、软件包(apt)、进程(ps、top、kill)、文本搜索与处理(find、grep、sed、awk)、网络(ip、ss、curl)和服务(systemctl、journalctl)。下面的表格给出命令和示例,覆盖终端日常工作的大部分内容。
这份 Linux 命令速查表按任务分组:找到一个文件,安装一个软件包,结束卡死的进程,从日志中提取一行,检查一个端口。这些命令已在 Ubuntu 和 Debian 上验证;它们在其他发行版中也几乎都能使用,区别主要在包管理器。
帮助与提示
| 命令 | 作用 |
man ls | 命令的完整手册,按 q 退出,/关键词 搜索 |
ls --help | 参数的简要说明 |
type cd | 判断它是内置命令、别名还是文件 |
which python3 | 可执行文件的路径 |
history | 命令历史;!123 重新执行第 123 条命令 |
Ctrl+R | 在历史记录中搜索 |
Ctrl+C / Ctrl+D | 中断命令 / 关闭 shell |
在文件系统中导航
| 命令 | 作用 |
pwd | 当前目录 |
ls -la | 列出所有文件(包括隐藏文件),显示权限和大小 |
ls -lh | 以易读的单位显示大小(K、M、G) |
ls -lt | 按修改时间排序 |
cd /var/log | 使用绝对路径进入目录 |
cd .. / cd ~ / cd - | 上一级 / 主目录 / 上一个目录 |
tree -L 2 | 显示两层深的目录树(需要安装 tree 包) |
处理文件和目录
| 命令 | 作用 |
touch file.txt | 创建空文件,或更新修改时间 |
mkdir -p a/b/c | 连同父目录一起创建目录 |
cp file.txt backup.txt | 复制文件 |
cp -r src/ dst/ | 递归复制目录 |
mv old.txt new.txt | 重命名或移动 |
rm file.txt | 删除文件(不经过回收站) |
rm -r dir/ | 删除目录及其内容;-f 不再询问,请谨慎使用 |
rmdir dir | 删除空目录 |
ln -s /opt/app/current app | 创建符号链接 |
stat file.txt | 详细信息:大小、权限、inode、时间 |
file image.bin | 根据内容判断文件类型 |
查看内容
| 命令 | 作用 |
cat file | 输出整个文件 |
less file | 分页查看,/ 搜索,q 退出 |
head -n 20 file | 前 20 行 |
tail -n 50 file | 最后 50 行 |
tail -f /var/log/syslog | 实时跟踪文件 |
wc -l file | 行数统计 |
diff a.conf b.conf | 比较两个文件的差异 |
权限与所有者
| 命令 | 作用 |
chmod +x script.sh | 允许执行 |
chmod 644 file | rw-r--r--:所有者可写,其他人只读 |
chmod 755 dir | rwxr-xr-x:目录和脚本的常用设置 |
chmod 600 ~/.ssh/id_ed25519 | 仅所有者可访问:用于私钥 |
sudo chown www-data:www-data file | 更改所有者和所属组 |
sudo chown -R alice /srv/app | 递归更改所有者 |
id | 你的 UID、GID 以及所属的组 |
sudo -i | 进入 root 的 shell |
sudo usermod -aG docker alice | 将用户加入某个组 |
软件包(apt,Debian 和 Ubuntu)
| 命令 | 作用 |
sudo apt update | 从软件源更新软件包列表 |
sudo apt upgrade | 升级已安装的软件包 |
sudo apt install nginx | 安装软件包 |
sudo apt remove nginx | 卸载并保留配置;purge 同时删除配置 |
sudo apt autoremove | 删除不再需要的依赖 |
apt search htop | 搜索软件包 |
apt show nginx | 查看描述和版本 |
dpkg -l | grep nginx | 检查软件包是否已安装 |
dpkg -L nginx | 查看软件包安装了哪些文件 |
在 RHEL、Fedora、Rocky Linux 中,对应的命令是 dnf install、dnf remove、dnf upgrade 和 rpm -qa。
环境与配置文件
| 命令 | 作用 |
echo $PATH | shell 在哪些目录中查找程序 |
env | 所有环境变量 |
export APP_ENV=prod | 为当前会话及其子进程设置变量 |
alias ll='ls -la' | 为命令设置简写 |
source ~/.bashrc | 无需重新登录即可重新加载配置 |
crontab -e / crontab -l | 编辑 / 查看 cron 任务 |
进程
| 命令 | 作用 |
ps aux | 所有进程,包括用户、CPU 和内存占用 |
ps aux | grep nginx | 查找进程 |
pgrep -a nginx | 按名称查看 PID 和命令行 |
top / htop | 实时查看系统负载 |
kill 1234 | 请求进程结束(SIGTERM) |
kill -9 1234 | 强制结束(SIGKILL),这是最后的手段 |
pkill -f "python app.py" | 按命令行的匹配结果结束进程 |
command &、jobs、fg | 后台运行和作业管理 |
nohup ./job.sh & | 关闭终端后进程仍会继续运行 |
free -h | 内存和 swap 使用情况 |
uptime | 运行时长和平均负载 |
strace -p 1234 | 查看进程的系统调用 |
服务与日志(systemd)
| 命令 | 作用 |
systemctl status nginx | 服务状态及最近的日志行 |
sudo systemctl start|stop|restart nginx | 启动、停止、重启 |
sudo systemctl reload nginx | 在不停止服务的情况下重新读取配置 |
sudo systemctl enable --now nginx | 设置开机自启并立即启动 |
systemctl --failed | 失败的单元 |
journalctl -u nginx -f | 实时查看服务日志 |
journalctl -u nginx --since "1 hour ago" | 查看最近一小时的日志 |
journalctl -p err -b | 自本次启动以来的错误 |
查找文件
| 命令 | 作用 |
find /var/log -name "*.log" | 按名称查找 |
find . -type f -mtime -1 | 最近一天内修改过的文件 |
find / -size +500M 2>/dev/null | 查找大文件,隐藏访问错误 |
find . -name "*.tmp" -delete | 查找并删除 |
du -sh * | 目录中每一项的大小 |
df -h | 文件系统的剩余空间 |
搜索和处理文本:grep、sed、awk、jq
| 命令 | 作用 |
grep "error" app.log | 输出包含某个词的行 |
grep -i -n "error" app.log | 忽略大小写,并显示行号 |
grep -r "listen" /etc/nginx/ | 递归搜索目录 |
grep -v "DEBUG" app.log | 输出不包含某个词的行 |
grep -c "500" access.log | 统计匹配次数 |
grep -E "warn|error" app.log | 使用扩展正则表达式 |
sed 's/old/new/g' file | 替换并输出结果 |
sed -i 's/8080/9090/' app.conf | 直接修改文件内容 |
sed -n '10,20p' file | 输出第 10–20 行 |
awk '{print $1}' access.log | 输出每行的第一个字段 |
awk -F: '{print $1}' /etc/passwd | 用户名列表(分隔符为 :) |
awk '$9 == 500' access.log | 第九个字段等于 500 的行 |
sort | uniq -c | sort -rn | 统计重复次数并按频率排序 |
cut -d, -f2 data.csv | CSV 的第二列 |
jq '.items[].name' data.json | 从 JSON 中提取字段 |
管道示例:统计向 nginx 发送请求最多的十个 IP 地址。
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -10
重定向和管道
| 写法 | 作用 |
cmd > out.txt | 把输出写入文件(覆盖) |
cmd >> out.txt | 追加到文件末尾 |
cmd 2> err.txt | 将错误输出重定向到文件 |
cmd > all.log 2>&1 | 输出和错误写入同一个文件 |
cmd1 | cmd2 | 把一个命令的输出交给另一个命令作为输入 |
cmd | tee out.txt | 既显示在屏幕上,又保存到文件 |
cmd1 && cmd2 | 只有第一个命令成功时才执行第二个 |
cmd1 || cmd2 | 只有第一个命令失败时才执行第二个 |
归档
| 命令 | 作用 |
tar -czf backup.tar.gz dir/ | 打包并用 gzip 压缩 |
tar -xzf backup.tar.gz | 解压 |
tar -tzf backup.tar.gz | 查看压缩包内容 |
zip -r site.zip site/ / unzip site.zip | zip 压缩包 |
网络
| 命令 | 作用 |
ip a | 网络接口和 IP 地址 |
ip r | 路由表 |
ping -c 4 8.8.8.8 | 检查主机是否可达 |
ss -tulpn | 开放的端口及占用它们的进程 |
dig example.com / nslookup example.com | DNS 查询 |
curl -I https://example.com | 只查看响应头 |
curl -s https://api.example.com | jq | 请求 API 并格式化 JSON |
wget URL | 下载文件 |
traceroute example.com | 数据包到达主机的路径 |
ssh user@host | 连接服务器 |
ssh-keygen -t ed25519 | 生成 SSH 密钥对 |
scp file user@host:/tmp/ | 把文件复制到服务器 |
rsync -avz dir/ user@host:/srv/dir/ | 同步目录 |
sudo ufw status | 防火墙规则 |
系统与磁盘
| 命令 | 作用 |
uname -a | 内核版本和架构 |
cat /etc/os-release | 发行版及版本 |
hostnamectl | 主机名和系统信息 |
lsblk | 磁盘和分区 |
sudo mount /dev/sdb1 /mnt | 挂载分区 |
who / w | 当前登录的用户 |
sudo reboot / sudo shutdown -h now | 重启 / 关机 |
简要总结
日常工作中,几十个命令就够用了:ls、cd、cp、mv、rm、chmod、sudo、apt、ps、kill、systemctl、journalctl、grep、find、ss、curl 和 ssh。保存这份 Linux 命令速查表,等这些命令用熟后,它就不再需要了。课程中会结合实践讲解每一组命令。
怎样退出 man 或 less?
按 q 键。要在内容中搜索,输入斜杠和关键词,按 n 跳到下一个匹配项。
怎样退出 vim 编辑器?
按 Esc,然后输入 :q! 并回车,即可不保存退出;输入 :wq 则保存并退出。新手更适合使用 nano 编辑文件。
rm -rf 为什么危险?
该命令不会要求确认,也不经过回收站。路径写错(例如星号前多了一个空格)就可能删掉错误的目录。执行前请先用 ls 检查路径。
怎样重复执行上一条带 sudo 的命令?
输入 sudo !!,shell 会用上一条完整命令替换 !!。
终端中的命令卡住了,怎样停止?
Ctrl+C 会发送中断信号。如果命令没有反应,可以在另一个终端中用 ps 或 pgrep 找到它的 PID,再用 kill 结束它。