Linux 命令使用介绍
1. 文件和目录操作
ls - 列出目录内容
ls # 列出当前目录内容
ls -l # 详细列表显示
ls -a # 显示所有文件(包括隐藏文件)
ls -lh # 人类可读的文件大小显示
ls -t # 按修改时间排序
ls -R # 递归列出子目录内容
cd - 切换目录
cd # 切换到用户主目录
cd ~ # 同上
cd / # 切换到根目录
cd .. # 切换到上级目录
cd - # 切换到上一次所在的目录
cd /path/to/dir # 切换到指定目录
pwd - 显示当前目录
pwd # 显示当前工作目录的完整路径
mkdir - 创建目录
mkdir dirname # 创建单个目录
mkdir -p dir1/dir2 # 创建多级目录
mkdir dir{1..5} # 创建dir1, dir2,...,dir5
rmdir - 删除空目录
rmdir dirname # 删除空目录
cp - 复制文件或目录
cp file1 file2 # 复制文件
cp -r dir1 dir2 # 递归复制目录
cp -v file1 file2 # 显示复制过程
cp -p file1 file2 # 保留文件属性
cp -u file1 file2 # 仅当源文件更新时才复制
mv - 移动或重命名文件
mv file1 file2 # 重命名文件
mv file1 dir1/ # 移动文件到目录
mv -i file1 file2 # 覆盖前询问
mv -n file1 file2 # 不覆盖已存在文件
rm - 删除文件或目录
rm file1 # 删除文件
rm -i file1 # 删除前确认
rm -r dir1 # 递归删除目录
rm -f file1 # 强制删除,不提示
rm -rf dir1 # 强制递归删除目录(慎用)
touch - 创建空文件或更新文件时间戳
touch file1 # 创建空文件或更新文件时间
touch -t 202301011200 file1 # 设置特定时间戳
file - 查看文件类型
file filename # 显示文件类型
stat - 显示文件详细信息
stat filename # 显示文件详细信息
2. 文件内容查看与编辑
cat - 连接文件并打印到标准输出
cat file1 # 显示文件内容
cat -n file1 # 显示行号
cat file1 file2 > file3 # 合并文件
less/more - 分页查看文件内容
less file1 # 分页查看(可前后翻页)
more file1 # 分页查看(只能向前翻页)
head - 显示文件开头部分
head file1 # 显示前10行
head -n 5 file1 # 显示前5行
head -c 100 file1 # 显示前100字节
tail - 显示文件结尾部分
tail file1 # 显示最后10行
tail -n 5 file1 # 显示最后5行
tail -f file1 # 实时追踪文件变化(常用于日志)
grep - 文本搜索
grep "pattern" file1 # 在文件中搜索模式
grep -i "pattern" file1 # 忽略大小写
grep -r "pattern" dir1 # 递归搜索目录
grep -v "pattern" file1 # 显示不匹配的行
grep -c "pattern" file1 # 统计匹配次数
grep -n "pattern" file1 # 显示行号
grep -E "regex" file1 # 使用扩展正则表达式
sed - 流编辑器
sed 's/old/new/g' file1 # 替换文本
sed -i 's/old/new/g' file1 # 直接修改文件
sed '5d' file1 # 删除第5行
sed -n '10,20p' file1 # 打印10-20行
awk - 文本处理工具
awk '{print $1}' file1 # 打印每行第一个字段
awk -F: '{print $1}' /etc/passwd # 以:为分隔符
awk '/pattern/ {print $0}' file1 # 匹配模式的行
awk 'NR==10' file1 # 打印第10行
awk '{sum+=$1} END {print sum}' file1 # 计算第一列总和
vim - 文本编辑器
vim file1 # 使用vim编辑文件
常用vim命令:
i
进入插入模式ESC
退出插入模式:w
保存文件:q
退出:wq
保存并退出:q!
不保存强制退出/pattern
搜索:set nu
显示行号
nano - 简单文本编辑器
nano file1 # 使用nano编辑文件
3. 文件权限管理
chmod - 更改文件权限
chmod 755 file1 # 设置权限为rwxr-xr-x
chmod u+x file1 # 给所有者添加执行权限
chmod g-w file1 # 移除组用户的写权限
chmod o=r file1 # 设置其他用户只读
chmod -R 755 dir1 # 递归设置目录权限
chown - 更改文件所有者
chown user1 file1 # 更改文件所有者
chown user1:group1 file1 # 更改所有者和组
chown -R user1 dir1 # 递归更改目录所有者
chgrp - 更改文件所属组
chgrp group1 file1 # 更改文件所属组
chgrp -R group1 dir1 # 递归更改目录所属组
umask - 设置默认权限掩码
umask # 显示当前umask
umask 022 # 设置默认umask
4. 文件查找
find - 查找文件
find / -name "file1" # 从根目录查找名为file1的文件
find . -name "*.txt" # 当前目录查找.txt文件
find / -type f -size +10M # 查找大于10MB的文件
find / -mtime -7 # 查找7天内修改过的文件
find . -perm 644 # 查找权限为644的文件
find . -user root # 查找root用户的文件
find . -exec ls -l {} \; # 对找到的文件执行命令
locate - 快速查找文件
locate file1 # 查找文件(需先更新数据库)
updatedb # 更新locate数据库
which - 显示命令的完整路径
which ls # 显示ls命令的路径
whereis - 查找命令的二进制、源码和手册页
whereis ls # 查找ls相关文件
type - 显示命令的类型
type ls # 显示ls是别名、内置命令还是外部命令
二、系统信息与管理
1. 系统信息
uname - 显示系统信息
uname -a # 显示所有系统信息
uname -r # 显示内核版本
uname -m # 显示机器硬件名称
hostname - 显示或设置主机名
hostname # 显示主机名
hostname newname # 临时设置主机名(需root)
uptime - 显示系统运行时间
uptime # 显示系统运行时间、用户数和负载
date - 显示或设置系统日期时间
date # 显示当前日期时间
date -s "2023-01-01 12:00:00" # 设置日期时间(需root)
date +%Y-%m-%d # 按格式显示日期
cal - 显示日历
cal # 显示当月日历
cal 2023 # 显示2023年日历
cal 1 2023 # 显示2023年1月日历
free - 显示内存使用情况
free # 显示内存使用
free -h # 人类可读格式
free -m # 以MB为单位
free -g # 以GB为单位
df - 显示磁盘空间使用情况
df # 显示磁盘使用
df -h # 人类可读格式
df -i # 显示inode使用情况
du - 显示目录或文件磁盘使用情况
du # 显示当前目录使用情况
du -h # 人类可读格式
du -sh dir1 # 显示目录总大小
du -ah dir1 # 显示目录中所有文件大小
top/htop - 显示进程动态信息
top # 动态显示进程信息
htop # 增强版top(需安装)
ps - 显示进程状态
ps # 显示当前用户进程
ps -ef # 显示所有进程
ps -aux # 显示详细进程信息
ps -u username # 显示指定用户进程
ps -p PID # 显示指定PID进程
kill - 终止进程
kill PID # 终止指定PID进程
kill -9 PID # 强制终止进程
killall processname # 终止所有同名进程
pkill processname # 按名称终止进程
lscpu - 显示CPU信息
lscpu # 显示CPU架构信息
lsblk - 列出块设备信息
lsblk # 列出所有块设备
lsblk -f # 显示文件系统信息
lspci - 列出PCI设备
lspci # 列出所有PCI设备
lspci -v # 显示详细信息
lsusb - 列出USB设备
lsusb # 列出USB设备
lsusb -v # 显示详细信息
2. 用户和组管理
who/w - 显示当前登录用户
who # 显示当前登录用户
w # 显示详细登录信息
users - 显示登录用户
users # 显示登录用户名
last - 显示用户登录历史
last # 显示登录历史
last username # 显示指定用户登录历史
id - 显示用户ID信息
id # 显示当前用户ID信息
id username # 显示指定用户ID信息
useradd - 添加用户
useradd username # 添加用户
useradd -m username # 添加用户并创建家目录
useradd -g groupname username # 指定主组
useradd -G groupname username # 指定附加组
useradd -s /bin/bash username # 指定shell
userdel - 删除用户
userdel username # 删除用户
userdel -r username # 删除用户及家目录
usermod - 修改用户属性
usermod -aG groupname username # 添加用户到附加组
usermod -s /bin/bash username # 修改用户shell
usermod -L username # 锁定用户
usermod -U username # 解锁用户
passwd - 更改密码
passwd # 更改当前用户密码
passwd username # 更改指定用户密码(需root)
groupadd - 添加组
groupadd groupname # 添加组
groupdel - 删除组
groupdel groupname # 删除组
groups - 显示用户所属组
groups # 显示当前用户所属组
groups username # 显示指定用户所属组
su - 切换用户
su # 切换到root
su username # 切换到指定用户
su - username # 切换用户并加载环境
sudo - 以超级用户权限执行命令
sudo command # 以root权限执行命令
sudo -u username command # 以指定用户权限执行
sudo -i # 切换到root shell
visudo - 编辑sudoers文件
visudo # 安全编辑sudoers文件
3. 系统服务管理
systemctl - 系统服务管理(Systemd)
systemctl start servicename # 启动服务
systemctl stop servicename # 停止服务
systemctl restart servicename # 重启服务
systemctl reload servicename # 重载服务配置
systemctl status servicename # 查看服务状态
systemctl enable servicename # 设置开机启动
systemctl disable servicename # 禁用开机启动
systemctl list-units --type=service # 列出所有服务
systemctl list-unit-files # 列出所有服务文件
service - 系统服务管理(SysVinit)
service servicename start # 启动服务
service servicename stop # 停止服务
service servicename restart # 重启服务
service servicename status # 查看服务状态
service --status-all # 查看所有服务状态
journalctl - 查看系统日志(Systemd)
journalctl # 查看所有日志
journalctl -u servicename # 查看指定服务日志
journalctl -f # 实时查看日志
journalctl -n 50 # 查看最近50条日志
journalctl --since "2023-01-01" --until "2023-01-02" # 查看时间范围日志
journalctl -p err -b # 查看本次启动的错误日志
dmesg - 显示内核消息
dmesg # 显示内核消息
dmesg -H # 人类可读格式
dmesg -T # 显示时间戳
dmesg -l err # 只显示错误消息
dmesg | grep -i error # 过滤错误消息
三、网络管理
1. 网络配置与信息
ifconfig/ip - 网络接口配置
ifconfig # 显示网络接口信息(已废弃)
ip addr # 显示IP地址(推荐)
ip link # 显示网络接口状态
ip route # 显示路由表
ping - 测试网络连通性
ping example.com # 测试连通性
ping -c 5 example.com # 发送5个包后停止
ping -i 2 example.com # 每2秒发送一个包
traceroute/tracepath - 跟踪网络路径
traceroute example.com # 跟踪到目标的路由
tracepath example.com # 类似traceroute
netstat/ss - 网络统计信息
netstat -tulnp # 显示监听端口和进程
netstat -rn # 显示路由表
ss -tulnp # netstat的现代替代品
ss -s # 显示统计摘要
nmap - 网络探测和安全审计
nmap localhost # 扫描本地主机
nmap -p 80 example.com # 扫描指定端口
nmap -sP 192.168.1.0/24 # 扫描网络中的活动主机
nmap -A example.com # 激进扫描(OS检测,版本检测等)
dig/nslookup/host - DNS查询
dig example.com # DNS查询
dig example.com MX # 查询MX记录
nslookup example.com # DNS查询(交互式)
host example.com # 简单DNS查询
whois - 查询域名信息
whois example.com # 查询域名注册信息
curl/wget - 下载工具
curl -O http://example.com/file # 下载文件
curl -I http://example.com # 只显示HTTP头
wget http://example.com/file # 下载文件
wget -c http://example.com/file # 断点续传
wget -r http://example.com # 递归下载
scp - 安全复制文件
scp file user@host:/path # 复制到远程
scp user@host:/path/file . # 从远程复制
scp -r dir user@host:/path # 递归复制目录
scp -P 2222 file user@host:/path # 指定端口
rsync - 远程文件同步
rsync -avz localdir/ user@host:remotedir/ # 同步到远程
rsync -avz user@host:remotedir/ localdir/ # 从远程同步
rsync -avz --delete localdir/ user@host:remotedir/ # 同步并删除多余文件
rsync -avz -e "ssh -p 2222" localdir/ user@host:remotedir/ # 指定端口
ssh - 安全远程登录
ssh user@host # 远程登录
ssh -p 2222 user@host # 指定端口
ssh -i key.pem user@host # 使用密钥登录
ssh -X user@host # 启用X11转发
ssh -L 8080:localhost:80 user@host # 本地端口转发
ssh -R 8080:localhost:80 user@host # 远程端口转发
ftp/sftp - 文件传输
ftp hostname # FTP客户端
sftp user@host # SFTP客户端
telnet - 远程登录(不安全)
telnet hostname port # 测试端口连接
2. 防火墙管理
iptables - 包过滤防火墙
iptables -L # 列出规则
iptables -A INPUT -p tcp --dport 22 -j ACCEPT # 允许SSH
iptables -A INPUT -j DROP # 默认拒绝
iptables-save > /etc/iptables.rules # 保存规则
iptables-restore < /etc/iptables.rules # 恢复规则
ufw - 简单防火墙
ufw enable # 启用防火墙
ufw disable # 禁用防火墙
ufw status # 查看状态
ufw allow 22/tcp # 允许SSH
ufw deny 80/tcp # 拒绝HTTP
ufw delete allow 22/tcp # 删除规则
firewall-cmd - firewalld管理
firewall-cmd --state # 查看状态
firewall-cmd --list-all # 列出所有规则
firewall-cmd --zone=public --add-port=80/tcp --permanent # 永久允许HTTP
firewall-cmd --reload # 重载配置
四、包管理
1. Debian/Ubuntu (APT)
apt - 高级包管理工具
apt update # 更新包列表
apt upgrade # 升级所有包
apt install package # 安装包
apt remove package # 移除包
apt purge package # 彻底移除包(包括配置)
apt autoremove # 移除不需要的依赖
apt search keyword # 搜索包
apt show package # 显示包信息
apt list --installed # 列出已安装包
apt list --upgradable # 列出可升级包
dpkg - Debian包管理
dpkg -i package.deb # 安装deb包
dpkg -r package # 移除包
dpkg -P package # 彻底移除包(包括配置)
dpkg -l # 列出已安装包
dpkg -L package # 列出包安装的文件
dpkg -S /path/to/file # 查询文件属于哪个包
dpkg -c package.deb # 查看deb包内容
apt-get - 传统APT工具
apt-get update # 更新包列表
apt-get upgrade # 升级所有包
apt-get install package # 安装包
apt-get remove package # 移除包
apt-get purge package # 彻底移除包
apt-get autoremove # 移除不需要的依赖
apt-get clean # 清理下载的包文件
2. RedHat/CentOS (YUM/DNF)
dnf/yum - 包管理工具
dnf update # 更新所有包
dnf install package # 安装包
dnf remove package # 移除包
dnf search keyword # 搜索包
dnf info package # 显示包信息
dnf list installed # 列出已安装包
dnf list updates # 列出可更新包
dnf groupinstall "Development Tools" # 安装软件组
dnf history # 查看操作历史
rpm - RPM包管理
rpm -ivh package.rpm # 安装rpm包
rpm -e package # 移除包
rpm -qa # 列出所有安装的包
rpm -qi package # 显示包信息
rpm -ql package # 列出包安装的文件
rpm -qf /path/to/file # 查询文件属于哪个包
rpm -qpi package.rpm # 查看未安装的rpm包信息
rpm -qpl package.rpm # 查看未安装的rpm包内容
3. Arch Linux (Pacman)
pacman - 包管理工具
pacman -Syu # 更新系统和所有包
pacman -S package # 安装包
pacman -R package # 移除包
pacman -Rs package # 移除包及不需要的依赖
pacman -Rns package # 彻底移除包(包括配置)
pacman -Ss keyword # 搜索包
pacman -Qi package # 显示包信息
pacman -Ql package # 列出包安装的文件
pacman -Qo /path/to/file # 查询文件属于哪个包
pacman -Qdt # 找出孤立包
pacman -Fy # 更新文件数据库
pacman -F command # 查找哪个包提供命令
4. 其他包管理工具
snap - 通用包管理
snap find keyword # 搜索snap包
snap install package # 安装snap包
snap remove package # 移除snap包
snap list # 列出已安装snap包
snap refresh package # 更新snap包
snap refresh # 更新所有snap包
snap info package # 显示snap包信息
flatpak - 通用包管理
flatpak install flathub package # 从flathub安装
flatpak remove package # 移除flatpak包
flatpak list # 列出已安装flatpak包
flatpak update # 更新所有flatpak包
flatpak info package # 显示flatpak包信息
flatpak run package # 运行flatpak应用
五、磁盘管理
1. 磁盘分区与格式化
fdisk/parted - 磁盘分区工具
fdisk -l # 列出所有磁盘分区
fdisk /dev/sda # 对sda进行分区(交互式)
parted /dev/sda print # 显示分区信息
parted /dev/sda mklabel gpt # 创建GPT分区表
parted /dev/sda mkpart primary ext4 0% 100% # 创建分区
mkfs - 创建文件系统
mkfs.ext4 /dev/sda1 # 创建ext4文件系统
mkfs.xfs /dev/sda1 # 创建XFS文件系统
mkfs.vfat /dev/sda1 # 创建FAT文件系统
mkfs.ntfs /dev/sda1 # 创建NTFS文件系统
fsck - 文件系统检查与修复
fsck /dev/sda1 # 检查文件系统
fsck -y /dev/sda1 # 自动修复错误
fsck -f /dev/sda1 # 强制检查即使文件系统看起来干净
mount/umount - 挂载/卸载文件系统
mount /dev/sda1 /mnt # 挂载分区
mount -t ext4 /dev/sda1 /mnt # 指定文件系统类型挂载
mount -o ro /dev/sda1 /mnt # 只读挂载
umount /mnt # 卸载分区
umount -l /mnt # 强制卸载(延迟)
mount -a # 挂载/etc/fstab中的所有文件系统
blkid - 显示块设备属性
blkid # 显示所有块设备UUID和类型
blkid /dev/sda1 # 显示指定设备信息
lsblk - 列出块设备
lsblk # 列出所有块设备
lsblk -f # 显示文件系统信息
lsblk -o NAME,FSTYPE,SIZE,MOUNTPOINT # 自定义列显示
2. 磁盘空间管理
df - 显示磁盘空间使用
df # 显示所有文件系统使用情况
df -h # 人类可读格式
df -i # 显示inode使用情况
df -T # 显示文件系统类型
du - 显示目录空间使用
du # 显示当前目录使用情况
du -h # 人类可读格式
du -sh /path # 显示目录总大小
du -ah /path # 显示目录中所有文件大小
du -c # 显示总计
du --max-depth=1 # 只显示一级子目录
ncdu - 交互式磁盘使用分析器
ncdu /path # 分析目录空间使用
3. 交换空间管理
swapon/swapoff - 启用/禁用交换空间
swapon --show # 显示交换空间
swapon /dev/sda2 # 启用交换分区
swapoff /dev/sda2 # 禁用交换分区
swapon -a # 启用所有/etc/fstab中的交换空间
mkswap - 设置交换分区
mkswap /dev/sda2 # 设置交换分区
free - 查看内存和交换空间
free -h # 显示内存和交换空间使用
free -m # 以MB为单位
free -g # 以GB为单位
4. LVM管理
pvcreate/pvdisplay - 物理卷管理
pvcreate /dev/sdb # 创建物理卷
pvdisplay # 显示物理卷信息
pvs # 简要显示物理卷
pvremove /dev/sdb # 删除物理卷
vgcreate/vgdisplay - 卷组管理
vgcreate vg1 /dev/sdb # 创建卷组
vgdisplay # 显示卷组信息
vgs # 简要显示卷组
vgextend vg1 /dev/sdc # 扩展卷组
vgreduce vg1 /dev/sdc # 缩减卷组
vgremove vg1 # 删除卷组
lvcreate/lvdisplay - 逻辑卷管理
lvcreate -L 10G -n lv1 vg1 # 创建10G逻辑卷
lvcreate -l 100%FREE -n lv1 vg1 # 使用全部剩余空间
lvdisplay # 显示逻辑卷信息
lvs # 简要显示逻辑卷
lvextend -L +5G /dev/vg1/lv1 # 扩展逻辑卷
lvreduce -L -5G /dev/vg1/lv1 # 缩减逻辑卷
lvremove /dev/vg1/lv1 # 删除逻辑卷
扩展文件系统
# 对于ext2/3/4:
resize2fs /dev/vg1/lv1 # 扩展文件系统
# 对于XFS:
xfs_growfs /mountpoint # 扩展XFS文件系统
六、进程管理
1. 进程查看
ps - 查看进程状态
ps # 显示当前用户进程
ps -ef # 显示所有进程完整格式
ps -aux # 显示所有进程BSD格式
ps -u username # 显示指定用户进程
ps -p PID # 显示指定PID进程
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head # 按内存排序
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu | head # 按CPU排序
top/htop - 动态查看进程
top # 动态显示进程信息
htop # 增强版top(需安装)
pstree - 显示进程树
pstree # 显示进程树
pstree -p # 显示PID
pstree username # 显示指定用户进程树
pgrep - 查找进程ID
pgrep processname # 查找进程ID
pgrep -u username processname # 查找指定用户进程
pgrep -l processname # 显示进程名和ID
2. 进程控制
kill - 终止进程
kill PID # 终止进程(发送TERM信号)
kill -9 PID # 强制终止进程(发送KILL信号)
killall processname # 终止所有同名进程
pkill processname # 按名称终止进程
nice/renice - 调整进程优先级
nice -n 10 command # 以指定优先级启动进程
renice 10 -p PID # 调整运行中进程优先级
nohup - 忽略挂起信号运行命令
nohup command & # 在后台运行命令,退出终端不终止
screen/tmux - 终端复用器
screen # 启动screen会话
screen -S sessionname # 创建命名会话
screen -r sessionname # 恢复会话
screen -ls # 列出会话
tmux # 启动tmux会话
tmux new -s sessionname # 创建命名会话
tmux attach -t sessionname # 恢复会话
tmux ls # 列出会话
jobs/fg/bg - 作业控制
jobs # 显示当前作业
fg %1 # 将作业1带到前台
bg %1 # 将作业1放到后台
command & # 在后台启动命令
3. 系统监控
vmstat - 显示系统状态
vmstat # 显示系统状态
vmstat 1 5 # 每秒1次,共5次
iostat - 显示CPU和I/O统计
iostat # 显示CPU和I/O统计
iostat -x 1 # 显示扩展统计,每秒1次
mpstat - 显示CPU统计
mpstat # 显示CPU统计
mpstat -P ALL 1 # 显示所有CPU,每秒1次
sar - 系统活动报告
sar # 显示CPU使用历史
sar -r 1 3 # 显示内存使用,每秒1次,共3次
sar -n DEV 1 3 # 显示网络统计
sar -b 1 3 # 显示I/O统计
dstat - 全能系统统计工具
dstat # 显示基本系统统计
dstat -cdlmnpsy # 显示全面统计
glances - 高级系统监控
glances # 启动glances监控
七、Shell脚本编程
1. Shell基础
变量
var="value" # 定义变量
echo $var # 使用变量
readonly var # 设置为只读
unset var # 删除变量
环境变量
export VAR="value" # 设置环境变量
env # 显示所有环境变量
echo $PATH # 显示PATH变量
特殊变量
$0 # 脚本名称
$1, $2, ... # 位置参数
$# # 参数个数
$* # 所有参数(作为一个单词)
$@ # 所有参数(作为多个单词)
$? # 上一条命令的退出状态
$$ # 当前shell的PID
$! # 最后一个后台进程的PID
引号
"$var" # 双引号,允许变量扩展
'$var' # 单引号,禁止变量扩展
`command` # 反引号,命令替换(旧语法)
$(command) # 命令替换(推荐)
2. 条件判断
test/[ ] - 条件测试
test -f file # 测试文件是否存在
[ -f file ] # 同上
[ "$a" = "$b" ] # 字符串比较
[ "$a" -eq "$b" ] # 数字比较
[ -z "$var" ] # 测试变量是否为空
文件测试
[ -e file ] # 文件存在
[ -f file ] # 是普通文件
[ -d file ] # 是目录
[ -r file ] # 可读
[ -w file ] # 可写
[ -x file ] # 可执行
[ -s file ] # 大小大于0
[ file1 -nt file2 ] # file1比file2新
[ file1 -ot file2 ] # file1比file2旧
字符串比较
[ "$str1" = "$str2" ] # 相等
[ "$str1" != "$str2" ] # 不等
[ -z "$str" ] # 空字符串
[ -n "$str" ] # 非空字符串
[[ $str1 == $str2 ]] # 模式匹配(使用[[ ]])
[[ $str1 =~ regex ]] # 正则匹配
数字比较
[ "$a" -eq "$b" ] # 等于
[ "$a" -ne "$b" ] # 不等于
[ "$a" -lt "$b