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











results matching ""

    No results matching ""