Linux/命令行常用命令速查卡
贴在手边的快速参考。按场景分组,每条命令给用途、最常用例子。
1. 文件与目录
| 命令 | 用途 | 常用例子 |
|---|
ls | 列出目录内容 | ls -lah 详细显示所有文件含隐藏 |
ls -lR | 递归列出所有子目录 | ls -lR /path 树形显示所有文件 |
cd | 切换目录 | cd ~ 回家目录;cd - 回上次目录 |
pwd | 显示当前目录完整路径 | pwd |
mkdir | 创建目录 | mkdir -p a/b/c 递归创建多层目录 |
cp | 复制文件或目录 | cp -r src/ dest/ 递归复制整个目录 |
mv | 移动或重命名 | mv old.txt new.txt 重命名;mv file /path 移动 |
rm | 删除文件或目录 | rm -rf dir/ 递归删除目录及内容(谨慎!) |
rmdir | 删除空目录 | rmdir empty_dir |
touch | 创建空文件或更新时间戳 | touch file.txt |
find | 按条件查找文件 | find . -name "*.log" -type f 找所有log文件 |
find 按修改时间 | 查找指定天数内修改过的文件 | find . -mtime -7 找7天内修改过的文件 |
find 按大小 | 查找指定大小的文件 | find . -size +100M 找超过100MB的文件 |
tree | 树形显示目录结构 | tree -L 2 显示2层深度;tree -I 'node_modules' 忽略某目录 |
ln -s | 创建软链接(快捷方式) | ln -s /path/to/file link_name |
ln | 创建硬链接(实际副本) | ln /path/to/file link_name |
2. 查看与编辑
| 命令 | 用途 | 常用例子 |
|---|
cat | 显示文件全部内容 | cat file.txt |
cat file1 file2 | 合并多个文件输出 | cat a.txt b.txt > c.txt |
less | 分页查看大文件 | less large_file.log;按 q 退出,/ 搜索 |
more | 分页查看(比 less 功能少) | more file.txt |
head | 显示文件前10行 | head -n 20 file.txt 显示前20行 |
tail | 显示文件最后10行 | tail -f app.log 实时跟踪日志 |
tail -n +N | 从第N行开始显示 | tail -n +50 file.txt 显示从第50行开始的内容 |
wc | 统计行数、单词数、字节数 | wc -l file.txt 统计行数 |
grep | 按模式搜索文本 | grep "error" app.log 找包含error的行 |
grep -r | 递归搜索目录 | grep -r "TODO" src/ 在整个src目录找TODO |
grep -v | 反向匹配(排除) | grep -v "^#" config.sh 排除注释行 |
grep -i | 不区分大小写 | grep -i "error" log |
sed | 流编辑(替换、删除等) | sed 's/old/new/g' file.txt 替换所有old为new |
sed 删除行 | 删除匹配的行 | sed '/pattern/d' file.txt 删除包含pattern的行 |
sed -i | 直接修改文件 | sed -i 's/foo/bar/g' file.txt 修改文件本身 |
awk 打印列 | 提取指定列 | awk '{print $1, $3}' file.txt 打印第1、3列 |
awk 按分隔符 | 用不同分隔符分割 | awk -F: '{print $1}' /etc/passwd 用冒号分割打印第1列 |
awk 条件输出 | 输出符合条件的行 | awk '$1 > 100' file.txt 第1列大于100的行 |
awk 统计 | 计数、求和 | awk '{sum+=$1} END {print sum}' nums.txt 求和 |
3. 权限与用户
| 命令 | 用途 | 常用例子 |
|---|
chmod | 修改文件权限 | chmod 755 script.sh rwxr-xr-x |
chmod +x | 添加执行权限 | chmod +x install.sh |
chmod -r+X | 递归给目录和脚本加执行权 | chmod -R +x ./scripts/ |
chown | 修改文件所有者 | chown user:group file.txt |
chown -R | 递归修改所有者 | chown -R www-data:www-data /var/www/ |
sudo | 以超级用户权限运行 | sudo apt update |
whoami | 显示当前用户名 | whoami |
id | 显示用户ID和所属组 | id |
groups | 显示用户所属的组 | groups username |
useradd | 添加用户 | sudo useradd -m -s /bin/bash newuser |
userdel | 删除用户 | sudo userdel -r username 连同home删除 |
passwd | 修改用户密码 | passwd 修改当前用户密码 |
4. 进程与资源
| 命令 | 用途 | 常用例子 |
|---|
ps | 显示进程列表 | ps aux 显示所有进程详情 |
ps -ef | 显示完整格式的进程 | ps -ef \| grep python 找python进程 |
pgrep | 按名称查找进程PID | pgrep -f "node app.js" |
top | 动态监控进程(按CPU使用率排序) | top 按 q 退出 |
htop | 比top更友好的进程监控 | htop 彩色、可交互 |
kill | 终止进程 | kill 1234 优雅关闭;kill -9 1234 强制杀死 |
killall | 按进程名杀死所有进程 | killall python |
lsof | 查看进程打开的文件 | lsof -p 1234 显示进程1234打开的文件 |
lsof -i | 查看网络连接 | lsof -i :8080 查看占用8080端口的进程 |
netstat | 显示网络统计信息 | netstat -tuln 显示所有监听端口 |
ss | netstat的更快替代品 | ss -tuln 显示所有TCP/UDP监听 |
df | 显示磁盘使用情况 | df -h 人类可读格式 |
du | 显示目录大小 | du -sh /var/log/ 显示目录总大小 |
du -sh * | 显示当前目录各项大小 | du -sh ~/.* 显示隐藏目录 |
free | 显示内存使用情况 | free -h 人类可读格式 |
vmstat | 虚拟内存统计 | vmstat 1 5 每秒采集5次 |
iostat | 磁盘I/O统计 | iostat -x 1 显示详细I/O信息 |
5. 网络
| 命令 | 用途 | 常用例子 |
|---|
curl | 发送HTTP请求 | curl https://api.example.com/users |
curl -X POST | 发送POST请求 | curl -X POST -d '{"key":"value"}' https://api.com/data |
curl -H | 添加请求头 | curl -H "Authorization: Bearer token" https://api.com |
curl -o | 下载文件 | curl -o myfile.zip https://example.com/file.zip |
curl -L | 跟随重定向 | curl -L https://short.url |
wget | 下载文件(支持续传) | wget https://example.com/large_file.tar.gz |
wget -c | 断点续传 | wget -c https://example.com/file.iso |
ping | 测试网络连接 | ping -c 5 google.com 发送5个包 |
traceroute | 跟踪网络路由 | traceroute google.com |
ifconfig 或 ip | 显示网络接口信息 | ip addr show 或 ifconfig |
netstat -tuln | 显示监听的端口 | netstat -tuln \| grep LISTEN |
ss -tuln | 快速显示监听端口 | ss -tuln \| grep LISTEN |
ssh | 远程连接 | ssh user@host 或 ssh -i key.pem user@host |
scp | 远程复制文件 | scp file.txt user@host:/path/ 上传 |
scp 下载 | 从远程下载 | scp user@host:/path/file.txt ./ |
dig | 查询DNS记录 | dig example.com |
nslookup | DNS查询工具 | nslookup example.com |
whois | 查询域名信息 | whois example.com |
6. 压缩打包
| 命令 | 用途 | 常用例子 |
|---|
tar -cvf | 打包(不压缩) | tar -cvf archive.tar dir/ |
tar -czf | 打包+gzip压缩 | tar -czf archive.tar.gz dir/ |
tar -cjf | 打包+bzip2压缩 | tar -cjf archive.tar.bz2 dir/ |
tar -xvf | 解包(自动识别) | tar -xvf archive.tar |
tar -xzf | 解包gzip | tar -xzf archive.tar.gz |
tar -xjf | 解包bzip2 | tar -xjf archive.tar.bz2 |
tar -tzf | 查看tar.gz内容 | tar -tzf archive.tar.gz \| head |
gzip | 压缩单个文件 | gzip file.txt 生成file.txt.gz |
gunzip | 解压gzip文件 | gunzip file.txt.gz |
zip | 打包并压缩(Windows兼容) | zip -r archive.zip dir/ |
unzip | 解压zip文件 | unzip archive.zip |
unzip -l | 查看zip内容 | unzip -l archive.zip |
bzip2 | bzip2压缩 | bzip2 file.txt |
bunzip2 | 解压bzip2 | bunzip2 file.txt.bz2 |
常用组合速查:
- 压缩整个目录:
tar -czf backup.tar.gz /path/to/dir
- 解压到指定目录:
tar -xzf archive.tar.gz -C /target/path
- 增量打包(只打包修改过的):
tar -czf backup.tar.gz --newer-mtime-than=ref.txt dir/
7. 管道与重定向
| 概念 | 用途 | 常用例子 |
|---|
\| | 管道(前一命令输出作为后一命令输入) | cat log.txt \| grep "error" |
> | 重定向输出到文件(覆盖) | echo "hello" > file.txt |
>> | 重定向输出到文件(追加) | echo "world" >> file.txt |
2> | 重定向错误输出 | command 2> error.log |
2>&1 | 将错误输出合并到标准输出 | command 2>&1 \| tee output.log |
< | 重定向输入 | mysql < dump.sql |
xargs | 将前一命令输出作为参数 | find . -name "*.log" \| xargs rm 删除所有log |
xargs -0 | 处理含空格的文件名 | find . -print0 \| xargs -0 rm |
tee | 既输出到屏幕也保存到文件 | command \| tee output.txt |
常用管道套路:
# 查找最大的文件
find . -type f -exec ls -lh {} \; | sort -k5 -rh | head -5
# 统计出现最多的词
cat file.txt | tr ' ' '\n' | sort | uniq -c | sort -rn | head
# 查找占用磁盘最多的目录
du -sh */ | sort -rh | head -10
# 提取日志中的错误并计数
grep "ERROR" app.log | awk '{print $NF}' | sort | uniq -c | sort -rn
# 在所有PHP文件中查找并替换
find . -name "*.php" -type f | xargs sed -i 's/old/new/g'
8. 快捷键与技巧
命令行快捷键
| 快捷键 | 功能 |
|---|
Ctrl+R | 反向搜索历史命令(再按继续搜索);按 Ctrl+G 取消搜索 |
Ctrl+A | 光标移到行首 |
Ctrl+E | 光标移到行尾 |
Ctrl+L | 清屏(等同 clear) |
Ctrl+U | 删除光标前的所有字符 |
Ctrl+K | 删除光标后的所有字符 |
Ctrl+W | 删除光标前一个单词 |
Alt+D | 删除光标后一个单词 |
Ctrl+Y | 恢复刚才删除的内容 |
Tab | 自动补全文件名或命令 |
Tab Tab | 显示所有可能的补全 |
!! | 重新运行上一条命令 |
!$ | 使用上一条命令的最后一个参数 |
逻辑操作符
| 操作符 | 用途 | 例子 |
|---|
&& | 逻辑与(前一条成功才运行后一条) | npm test && npm build |
\|\| | 逻辑或(前一条失败才运行后一条) | npm test \|\| echo "Test failed" |
; | 顺序执行(不管前一条成功否) | cd dir; ls; pwd |
后台运行
| 用法 | 说明 | 例子 |
|---|
command & | 在后台运行命令 | python train.py & |
nohup | 后台运行且不被hangup中断 | nohup python train.py > train.log 2>&1 & |
Ctrl+Z | 挂起当前前台进程 | 运行中按Ctrl+Z |
bg | 将挂起的进程转为后台 | 先Ctrl+Z,再输入 bg |
fg | 将后台进程转为前台 | fg %1 或 fg |
jobs | 显示后台任务列表 | jobs |
disown %1 | 从shell中脱离进程(不会被关闭) | disown %1 |
常用技巧
# 查看命令历史并运行第N条
history
!100 # 运行第100条命令
# 查看上次命令的执行时间和返回码
time command
echo $? # 显示上一条命令的返回码
# 在多个命令间编辑并运行
^old^new # 替换上一条命令中的old为new并运行
# 查看上一条命令的完整信息
history 1
# 快速切换目录
cd - # 回到上一次的目录
pushd /path # 将当前目录压入栈
popd # 返回栈顶目录
# 查找并运行历史命令
Ctrl+R # 进入搜索模式,输入关键字搜索
# 显示执行时间较长的命令
history | awk '{cmd=$2; count[cmd]++} END {for (c in count) print c, count[c]}' | sort -k2 -rn | head
9. 文件查找与替换速查
| 场景 | 命令 |
|---|
| 找文件名包含 "test" 的所有文件 | find . -name "*test*" |
| 找超过100MB的文件 | find . -size +100M |
| 找7天内修改过的文件 | find . -mtime -7 |
| 找所有权限为777的文件 | find . -perm 777 |
| 在所有文件中查找 "error" 字符串 | grep -r "error" . |
| 在特定文件类型中查找 | find . -name "*.js" -type f -exec grep "TODO" {} \; |
| 替换所有 "old" 为 "new" | find . -type f -name "*.txt" \| xargs sed -i 's/old/new/g' |
| 删除所有临时文件 | find . -name "*.tmp" -delete |
| 找重复的文件(按内容) | find . -type f -exec md5sum {} \; \| sort \| uniq -d -w 32 |
10. 系统信息与监控
| 命令 | 用途 | 例子 |
|---|
uname -a | 显示系统信息 | uname -a |
lsb_release -a | 显示Linux发行版信息 | lsb_release -a |
cat /proc/cpuinfo | 显示CPU信息 | cat /proc/cpuinfo \| grep processor \| wc -l 显示CPU核数 |
uptime | 显示系统运行时间 | uptime |
dmesg | 显示系统启动日志 | dmesg \| tail -20 |
systemctl | 管理系统服务 | systemctl status nginx |
journalctl | 查看系统日志 | journalctl -u nginx -n 20 查看nginx最后20条日志 |
crontab -e | 编辑定时任务 | crontab -e |
crontab -l | 查看定时任务 | crontab -l |
快速参考:最常用的20条
ls -lah # 详细列表含隐藏
cd ~; pwd # 回家目录、显示路径
find . -name "*.txt" # 查找文件
grep -r "pattern" . # 递归查找内容
cat file.txt # 显示文件
sed 's/old/new/g' file # 替换内容
chmod +x script.sh # 加执行权
ps aux | grep process # 查找进程
kill -9 PID # 杀死进程
top # 监控CPU/内存
df -h; du -sh /path # 磁盘使用
ssh user@host # 远程连接
scp file user@host:/path # 远程复制
curl https://api.url # 发送HTTP请求
tar -czf backup.tar.gz dir # 打包压缩
history | grep command # 查找历史
Ctrl+R # 搜索历史命令
cmd1 && cmd2 # 条件执行
nohup cmd > log.txt 2>&1 & # 后台运行
echo $? # 查看返回码
更新时间: 2025年2月 适用范围: Linux, macOS, WSL, 其他兼容POSIX的系统