Linux 指令大全

Linux 是服务器、嵌入式设备和开发者的首选系统。本篇整理了日常工作中最常用的 Linux 指令,按类别分类,方便快速查阅。

--- ## 📑 目录导航

文件与目录操作

文本处理与查看

用户与权限管理

进程与系统管理

网络与通信

磁盘与存储管理

软件包管理

压缩与解压

搜索与查找

Shell 快捷键与技巧

--- ## 一、文件与目录操作 ### 1.1 基础操作

以下是最基础的文件操作指令,建议 优先掌握

| 指令 | 功能 | 示例 | |------|------|------| | `ls` | 列出目录内容 | `ls -la` | | `cd` | 切换目录 | `cd /home` | | `pwd` | 显示当前路径 | `pwd` | | `mkdir` | 创建目录 | `mkdir -p a/b/c` | | `rmdir` | 删除空目录 | `rmdir dir` | | `touch` | 创建空文件 | `touch file.txt` | | `cp` | 复制文件/目录 | `cp -r src/ dst/` | | `mv` | 移动/重命名 | `mv old new` | | `rm` | 删除文件/目录 | `rm -rf dir/` | | `ln` | 创建链接 | `ln -s target link` |

rm -rf 是非常危险的指令,删除后无法恢复,请务必确认路径后再执行!

### 1.2 文件属性与权限
查看权限详解

Linux 文件权限分为三组:所有者所属组其他人,每组有读(r)、写(w)、执行(x)三种权限。

1
2
3
4
5
6
7
8
-rwxr-xr-- 1 user group 4096 Jan 1 00:00 file.txt
│││││││││
│││││││└── 其他人: r-- (只读)
│││││└──── 所属组: r-x (读+执行)
│││└────── 所有者: rwx (读+写+执行)
││└──────── 特殊权限位
│└───────── 文件类型 (-=文件, d=目录, l=链接)
└────────── 特殊文件标识

数字权限对照:

权限数字说明
---0无权限
--x1仅执行
-w-2仅写入
-wx3写+执行
r--4仅读取
r-x5读+执行
rw-6读+写
rwx7读+写+执行
1
2
3
4
5
6
7
8
9
# 修改权限
chmod 755 script.sh # rwxr-xr-x
chmod +x script.sh # 添加执行权限
chmod u+rw,go+r file.txt # 所有者读写,其他人只读

# 修改所有者
chown user:group file.txt # 修改所有者和组
chown -R user:group dir/ # 递归修改目录
chgrp group file.txt # 仅修改所属组
### 1.3 文件查找与定位
1
2
3
4
5
6
7
8
9
10
# 查找文件
find /home -name "*.log" # 按名称查找
find /var -type f -mtime +7 # 查找7天前修改的文件
find . -size +100M # 查找大于100M的文件
find . -perm 755 # 按权限查找

# 快速定位命令位置
which python3 # 查找命令的完整路径
whereis ls # 查找命令、源码和帮助文件
locate nginx.conf # 从数据库中快速查找文件
--- ## 二、文本处理与查看 ### 2.1 文本查看

catlesstail 是日常最常用的文本查看三件套。

1
2
3
4
5
6
cat file.txt           # 查看全部内容
cat -n file.txt # 显示行号
less file.txt # 分页查看(支持上下翻页)
head -n 20 file.txt # 查看前20行
tail -n 20 file.txt # 查看后20行
tail -f /var/log/syslog # 实时跟踪日志文件
### 2.2 文本搜索与过滤
1
2
3
4
5
6
7
8
# grep - 文本搜索利器
grep "error" log.txt # 搜索包含error的行
grep -i "warning" log.txt # 忽略大小写
grep -r "TODO" ./src/ # 递归搜索目录
grep -n "pattern" file.txt # 显示行号
grep -v "exclude" file.txt # 反向匹配(排除)
grep -c "error" log.txt # 统计匹配行数
grep -E "err|warn" log.txt # 正则表达式搜索
### 2.3 文本处理工具
查看高级文本处理指令
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# awk - 文本分析工具
awk '{print $1}' file.txt # 打印每行第一列
awk -F ',' '{print $1, $3}' data.csv # 指定分隔符
awk '{sum+=$1} END {print sum}' nums.txt # 列求和

# sed - 流编辑器
sed 's/old/new/g' file.txt # 全局替换
sed -i 's/old/new/g' file.txt # 直接修改文件
sed -n '10,20p' file.txt # 打印第10到20行
sed '/^$/d' file.txt # 删除空行

# sort - 排序
sort file.txt # 默认排序
sort -rn file.txt # 数字倒序
sort -u file.txt # 去重排序
sort -t ',' -k2 file.txt # 按第二列排序

# uniq - 去重
sort file.txt | uniq # 排序后去重
sort file.txt | uniq -c # 统计重复次数
sort file.txt | uniq -d # 只显示重复行

# wc - 统计
wc -l file.txt # 统计行数
wc -w file.txt # 统计单词数
wc -c file.txt # 统计字节数

# cut - 切割列
cut -d ':' -f1 /etc/passwd # 按:分割取第一列
cut -c 1-10 file.txt # 截取每行1-10字符

# tr - 字符替换
echo "HELLO" | tr 'A-Z' 'a-z' # 大写转小写
echo "hello 123" | tr -d '0-9' # 删除数字
### 2.4 重定向与管道 管道 是 Linux 最强大的特性之一。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 重定向
command > file.txt # 标准输出重定向到文件(覆盖)
command >> file.txt # 标准输出追加到文件
command 2> error.log # 标准错误重定向
command &> all.log # 标准输出和错误都重定向
command < input.txt # 从文件读取输入

# 管道
cat log.txt | grep "error" | sort | uniq -c | sort -rn | head -10
# 查找日志 → 过滤错误 → 排序 → 去重统计 → 倒序 → 取前10

# tee - 同时输出到终端和文件
command | tee output.txt # 输出到终端并保存到文件
command | tee -a output.txt # 追加模式
--- ## 三、用户与权限管理 ### 3.1 用户管理
1
2
3
4
5
6
7
8
9
10
11
12
# 创建与删除用户
useradd -m -s /bin/bash username # 创建用户并创建家目录
adduser username # 交互式创建用户(推荐)
userdel username # 删除用户
userdel -r username # 删除用户及其家目录

# 修改用户信息
usermod -aG docker username # 将用户加入docker组
usermod -l newname oldname # 修改用户名
usermod -s /bin/zsh username # 修改默认Shell
passwd username # 修改用户密码
chage -l username # 查看密码过期信息

使用 usermod -aG 时,务必加 -a 参数,否则会将用户从其他组中移除!

### 3.2 用户切换
1
2
3
4
5
su - username          # 切换到指定用户(加载完整环境)
su - root # 切换到root用户
sudo command # 以root权限执行单条命令
sudo -u user command # 以指定用户身份执行
sudo -i # 以root身份登录Shell
### 3.3 用户与组查询
查看用户组管理指令
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 用户查询
id username # 查看用户ID和所属组
whoami # 当前登录用户
who # 所有登录用户
w # 详细登录信息
last # 登录历史记录
finger username # 用户详细信息

# 组管理
groupadd devops # 创建组
groupdel devops # 删除组
groupmod -n new old # 修改组名
gpasswd -a user group # 将用户加入组
groups username # 查看用户所属组
cat /etc/group # 查看所有组信息
--- ## 四、进程与系统管理 ### 4.1 进程查看

pstop 是进程管理的两大核心指令。

1
2
3
4
5
6
7
8
9
10
# ps - 查看进程快照
ps aux # 查看所有进程
ps -ef # 标准格式查看所有进程
ps aux | grep nginx # 过滤查找进程
ps -eo pid,ppid,cmd,%mem,%cpu # 自定义显示列

# top / htop - 实时进程监控
top # 实时进程监控
top -u username # 查看指定用户的进程
htop # 增强版进程监控(需安装)
### 4.2 进程控制
1
2
3
4
5
6
7
8
9
10
11
12
# 终止进程
kill PID # 正常终止进程
kill -9 PID # 强制终止进程
killall process_name # 按名称终止所有匹配进程
pkill -f "pattern" # 按模式匹配终止进程

# 后台与前台
command & # 后台运行命令
jobs # 查看后台任务
fg %1 # 将后台任务调到前台
bg %1 # 让暂停的任务在后台继续
nohup command & # 不挂断地运行命令
### 4.3 系统信息
查看系统信息指令
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 系统基本信息
uname -a # 内核版本信息
cat /etc/os-release # 操作系统版本
hostnamectl # 主机名与系统信息
uptime # 系统运行时间和负载
date # 当前日期时间
timedatectl # 时区管理

# 硬件信息
lscpu # CPU 信息
free -h # 内存使用情况
df -h # 磁盘使用情况
lsblk # 块设备信息
lspci # PCI 设备
lsusb # USB 设备
dmidecode # 硬件详细信息(需root)

# 性能监控
vmstat 1 # 虚拟内存统计(每秒刷新)
iostat 1 # I/O 统计
mpstat 1 # CPU 统计
sar 1 # 系统活动报告
### 4.4 系统服务管理(systemd) systemd 是现代 Linux 发行版的标准初始化系统。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 服务管理
systemctl start nginx # 启动服务
systemctl stop nginx # 停止服务
systemctl restart nginx # 重启服务
systemctl reload nginx # 重新加载配置
systemctl status nginx # 查看服务状态
systemctl enable nginx # 开机自启
systemctl disable nginx # 禁用开机自启
systemctl is-enabled nginx # 查看是否开机自启

# 查看日志
journalctl -u nginx # 查看指定服务日志
journalctl -f # 实时查看所有日志
journalctl --since "1 hour ago" # 查看最近1小时日志
journalctl -p err # 只看错误级别日志
--- ## 五、网络与通信 ### 5.1 网络配置
1
2
3
4
5
6
7
8
9
10
# 网络接口
ip addr show # 查看所有网络接口
ip addr show eth0 # 查看指定接口
ip link set eth0 up/down # 启用/禁用接口
ip route # 查看路由表

# DNS 配置
cat /etc/resolv.conf # 查看DNS配置
nslookup example.com # DNS 查询
dig example.com # 详细DNS查询
### 5.2 网络诊断

网络排查时,建议按 pingtraceroutecurl 的顺序逐步排查。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 连通性测试
ping -c 4 google.com # 发送4个ping包
ping -i 0.5 google.com # 间隔0.5秒

# 路由追踪
traceroute google.com # 追踪路由跳转
tracepath google.com # 类似traceroute(无需root)

# 端口与连接
netstat -tlnp # 查看监听端口
ss -tlnp # 更快的替代方案
lsof -i :80 # 查看占用80端口的进程
nc -zv host port # 测试端口连通性

# 下载工具
curl -O https://example.com/file.zip # 下载文件
wget https://example.com/file.zip # 下载文件
curl -I https://example.com # 查看HTTP响应头
### 5.3 网络安全
查看防火墙配置指令
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# iptables - 传统防火墙
iptables -L # 查看规则
iptables -A INPUT -p tcp --dport 80 -j ACCEPT # 允许80端口
iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT # 允许指定网段

# ufw - Ubuntu 防火墙(推荐)
ufw enable # 启用防火墙
ufw status # 查看状态
ufw allow 22/tcp # 允许SSH
ufw allow 80/tcp # 允许HTTP
ufw deny 3306/tcp # 拒绝MySQL
ufw delete allow 80/tcp # 删除规则

# firewalld - CentOS 防火墙
firewall-cmd --state # 查看状态
firewall-cmd --list-all # 查看所有规则
firewall-cmd --add-port=80/tcp --permanent # 永久开放端口
firewall-cmd --reload # 重载配置
### 5.4 远程连接
1
2
3
4
5
6
7
8
9
10
11
# SSH 远程连接
ssh user@host # 基本连接
ssh -p 2222 user@host # 指定端口
ssh -i key.pem user@host # 使用密钥登录
ssh-copy-id user@host # 复制公钥到远程主机

# 文件传输
scp file.txt user@host:/path/ # 上传文件
scp user@host:/path/file.txt ./ # 下载文件
scp -r dir/ user@host:/path/ # 上传目录
rsync -avz src/ user@host:dst/ # 增量同步(推荐)
--- ## 六、磁盘与存储管理 ### 6.1 磁盘查看
1
2
3
4
5
6
7
df -h                          # 查看磁盘使用情况(人类可读)
df -i # 查看inode使用情况
du -sh /home # 查看目录总大小
du -sh /home/* # 查看子目录大小
du -ah /home | sort -rh | head -10 # 查找最大的10个文件/目录
lsblk # 查看块设备
fdisk -l # 查看磁盘分区
### 6.2 磁盘操作

磁盘分区和格式化操作会清空数据,请确保已备份重要文件!

查看磁盘分区与挂载指令
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 分区
fdisk /dev/sdb # 交互式分区工具
parted /dev/sdb # 高级分区工具
gdisk /dev/sdb # GPT分区工具

# 格式化
mkfs.ext4 /dev/sdb1 # 格式化为ext4
mkfs.xfs /dev/sdb1 # 格式化为xfs
mkswap /dev/sdb2 # 格式化为交换分区

# 挂载
mount /dev/sdb1 /mnt/data # 挂载分区
umount /mnt/data # 卸载分区

# 开机自动挂载 - 编辑 /etc/fstab
# /dev/sdb1 /mnt/data ext4 defaults 0 2

# LVM 管理
pvcreate /dev/sdb # 创建物理卷
vgcreate vg0 /dev/sdb # 创建卷组
lvcreate -L 50G -n lv0 vg0 # 创建逻辑卷
lvextend -L +20G /dev/vg0/lv0 # 扩展逻辑卷
resize2fs /dev/vg0/lv0 # 扩展文件系统
--- ## 七、软件包管理 ### 7.1 Debian/Ubuntu(apt)

apt 是 Debian 系发行版的包管理器,使用最广泛。

1
2
3
4
5
6
7
8
9
apt update                     # 更新软件源
apt upgrade # 升级所有软件包
apt install nginx # 安装软件
apt remove nginx # 卸载软件
apt autoremove # 清理无用依赖
apt search keyword # 搜索软件包
apt show nginx # 查看软件包详情
apt list --installed # 列出已安装软件
apt cache policy nginx # 查看版本信息
### 7.2 CentOS/RHEL(dnf/yum)
1
2
3
4
5
6
7
8
9
10
11
dnf update                     # 更新所有软件包
dnf install nginx # 安装软件
dnf remove nginx # 卸载软件
dnf search keyword # 搜索软件包
dnf info nginx # 查看软件包信息
dnf list installed # 列出已安装软件

# yum(旧版,兼容使用)
yum update
yum install nginx
yum remove nginx
### 7.3 通用包管理
查看其他包管理方式
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# Snap(Ubuntu 推广的通用包格式)
snap install package # 安装snap包
snap list # 列出已安装snap包
snap remove package # 卸载snap包

# Flatpak
flatpak install flathub app # 安装flatpak应用
flatpak list # 列出已安装应用

# 源码编译安装(三步曲)
./configure # 配置编译选项
make # 编译
make install # 安装

# Python pip
pip install package # 安装Python包
pip install --break-system-packages package # 系统Python安装
pip list # 列出已安装包
--- ## 八、压缩与解压

最常用的格式是 tar.gzzip,建议优先掌握这两种。

### 8.1 tar 打包
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 打包
tar -cvf archive.tar dir/ # 打包为tar
tar -czvf archive.tar.gz dir/ # 打包并gzip压缩
tar -cjvf archive.tar.bz2 dir/ # 打包并bzip2压缩
tar -cJvf archive.tar.xz dir/ # 打包并xz压缩

# 解包
tar -xvf archive.tar # 解包tar
tar -xzvf archive.tar.gz # 解压tar.gz
tar -xjvf archive.tar.bz2 # 解压tar.bz2
tar -xJvf archive.tar.xz # 解压tar.xz

# 查看内容
tar -tf archive.tar.gz # 查看压缩包内容

# 解压到指定目录
tar -xzvf archive.tar.gz -C /target/
### 8.2 其他格式
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# zip / unzip
zip archive.zip file1 file2 dir/ # 压缩
zip -r archive.zip dir/ # 递归压缩目录
unzip archive.zip # 解压
unzip -d /target/ archive.zip # 解压到指定目录

# gzip / gunzip
gzip file.txt # 压缩(原文件消失)
gunzip file.txt.gz # 解压
gzip -k file.txt # 压缩(保留原文件)
zcat file.txt.gz # 查看压缩文件内容

# bz2
bzip2 file.txt # 压缩
bunzip2 file.txt.bz2 # 解压

# xz
xz file.txt # 压缩
unxz file.txt.xz # 解压

# rar(需安装rar工具)
rar a archive.rar dir/ # 压缩
rar x archive.rar # 解压
--- ## 九、搜索与查找 ### 9.1 文件搜索
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# find - 最强大的文件搜索工具
find / -name "*.conf" # 按名称搜索
find / -type f # 只查找文件
find / -type d # 只查找目录
find / -size +100M # 大于100M的文件
find / -mtime -7 # 7天内修改过的文件
find / -mmin -30 # 30分钟内修改过的文件
find / -perm 644 # 按权限查找
find / -user username # 按所有者查找
find / -empty # 查找空文件/空目录

# 组合条件
find / -name "*.log" -and -size +10M # AND 条件
find / -name "*.tmp" -or -name "*.swp" # OR 条件
find / ! -name "*.git" # NOT 条件

# 执行操作
find / -name "*.bak" -delete # 删除找到的文件
find / -name "*.sh" -exec chmod +x {} \; # 对找到的文件执行命令
### 9.2 文本搜索
1
2
3
4
5
6
7
8
9
10
11
# grep - 文本搜索
grep -rn "TODO" ./src/ # 递归搜索并显示行号
grep -rl "error" ./logs/ # 只显示匹配的文件名
grep -R --include="*.py" "import" ./ # 只搜索.py文件
grep -E "\d{1,3}\.\d{1,3}\.\d{1,3}" # 正则搜索IP地址
grep --color "error" log.txt # 高亮匹配结果

# rg(ripgrep)- 更快的替代工具
rg "pattern" ./src/ # 递归搜索
rg -t py "import" ./ # 只搜索Python文件
rg -l "error" ./logs/ # 只显示文件名
--- ## 十、Shell 快捷键与技巧 ### 10.1 终端快捷键

掌握这些快捷键可以大幅提升终端操作效率!

| 快捷键 | 功能 | |--------|------| | Ctrl + C | 中断当前命令 | | Ctrl + Z | 挂起当前命令 | | Ctrl + D | 退出当前Shell | | Ctrl + L | 清屏(等同 clear) | | Ctrl + A | 光标移到行首 | | Ctrl + E | 光标移到行尾 | | Ctrl + U | 删除光标前所有内容 | | Ctrl + K | 删除光标后所有内容 | | Ctrl + W | 删除光标前一个单词 | | Ctrl + R | 搜索历史命令 | | Tab | 自动补全 | | Tab × 2 | 列出所有补全选项 | ### 10.2 通配符与特殊符号
1
2
3
4
5
6
7
8
9
10
11
*           # 匹配任意字符(0个或多个)
? # 匹配单个字符
[abc] # 匹配括号中任意一个字符
[a-z] # 匹配指定范围
{a,b,c} # 展开为多个项
~ # 当前用户家目录
. # 当前目录
.. # 上级目录
; # 顺序执行多条命令
&& # 前一条成功才执行后一条
|| # 前一条失败才执行后一条
### 10.3 实用技巧
查看Shell实用技巧
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 命令历史
history # 查看命令历史
!! # 执行上一条命令
!grep # 执行最近以grep开头的命令
!$ # 上一条命令的最后一个参数
sudo !! # 以root执行上一条命令

# 大括号展开
cp file.txt{,.bak} # 复制并备份:cp file.txt file.txt.bak
mkdir -p project/{src,docs,tests} # 一次性创建多个子目录
touch file{1..5}.txt # 创建file1.txt到file5.txt

# 进程替换
diff <(cmd1) <(cmd2) # 比较两个命令的输出
wc -l <(grep "error" log.txt) # 统计搜索结果行数

# xargs - 参数传递
find . -name "*.log" | xargs rm # 删除找到的文件
find . -name "*.py" | xargs grep "import" # 对文件执行grep
echo "file1 file2" | xargs -n 1 cp -v /src/ /dst/ # 逐个处理

# watch - 定期执行命令
watch -n 2 df -h # 每2秒刷新磁盘使用情况
watch -n 1 "ps aux | grep nginx" # 每秒监控nginx进程
--- ## 📊 指令掌握进度

入门阶段

基础文件操作

文本处理与搜索

网络与系统管理

高级技巧与自动化

精通Linux

--- ## 🔗 参考资源

Linux颂

终端如战场,
指令手中枪。
Linux精神在,
代码写华章。


Linux 自由开源 Shell 命令利器 Open Source 开源精神