Skip to content

Linux 常见高频命令操作手册

适用系统: Ubuntu / Debian / CentOS / 通用 Linux
编写日期: 2026-06-27
目标: 覆盖日常运维与开发中最常用的高频命令,附带实用示例


目录

  1. 文件与目录操作
  2. 文本查看与处理
  3. 文本搜索与过滤
  4. 系统信息与监控
  5. 进程管理
  6. 磁盘与存储管理
  7. 网络相关
  8. 用户与权限管理
  9. 压缩与解压
  10. 软件包管理
  11. 定时任务与计划
  12. 其他实用工具
  13. 命令速查表

一、文件与目录操作

1.1 目录导航

命令说明示例
pwd显示当前所在目录的绝对路径pwd
cd切换目录cd /var/log
cd ~切换到用户主目录cd ~cd
cd -切换到上一次所在的目录cd -
cd ..切换到上级目录cd ..
ls列出目录内容ls -la /var

ls 常用选项详解:

bash
ls              # 列出当前目录文件
ls -l           # 以长格式列出(权限、大小、时间等)
ls -a           # 显示所有文件,包括隐藏文件(以.开头)
ls -la          # 组合:长格式 + 隐藏文件
ls -lh          # 长格式 + 人类可读的文件大小(K/M/G)
ls -lt          # 按修改时间排序(最新的在前)
ls -ltr         # 按修改时间反向排序(最旧的在前)
ls -R           # 递归列出子目录内容
ls -d */        # 只列出目录

1.2 目录创建与删除

bash
mkdir dirname              # 创建单个目录
mkdir -p a/b/c             # 递归创建多级目录(-p: parents)
mkdir -m 755 dirname       # 创建目录并指定权限

rmdir dirname              # 删除空目录
rm -r dirname              # 递归删除目录及其内容(危险!)
rm -rf dirname             # 强制递归删除(极度危险,慎用!)

1.3 文件创建与删除

bash
touch file.txt             # 创建空文件,或更新已有文件的时间戳
touch {a,b,c}.txt          # 批量创建多个文件

rm file.txt                # 删除文件
rm -i file.txt             # 删除前询问确认(interactive)
rm -f file.txt             # 强制删除,不提示
rm *.log                   # 删除所有 .log 文件

1.4 文件复制与移动

bash
# 复制文件
cp source.txt dest.txt                 # 复制文件
cp -r sourcedir/ destdir/              # 递归复制目录
cp -i source.txt dest.txt              # 覆盖前询问
cp -v source.txt dest.txt              # 显示复制过程(verbose)
cp -p source.txt dest.txt              # 保留原文件属性(权限、时间等)

# 移动/重命名文件
mv oldname.txt newname.txt             # 重命名
mv file.txt /path/to/dest/             # 移动文件
mv -i source.txt dest.txt              # 覆盖前询问
mv -f source.txt dest.txt              # 强制覆盖

1.5 文件链接

bash
ln file.txt hardlink.txt               # 创建硬链接(同一文件系统,不跨分区)
ln -s /path/to/file symlink.txt        # 创建软链接/符号链接(类似快捷方式)
ls -l symlink.txt                      # 查看链接指向
readlink -f symlink.txt                # 查看软链接指向的真实路径

1.6 文件查找

bash
# find 命令(功能最强大)
find /var/log -name "*.log"            # 按名称查找
find /var/log -name "*.log" -type f    # 只查找文件(-type f),排除目录
find /home -type d -name "backup"      # 查找名为 backup 的目录
find . -size +100M                     # 查找大于 100MB 的文件
find . -size +1G -size -5G             # 查找 1G 到 5G 之间的文件
find . -mtime -7                       # 查找 7 天内修改过的文件
find . -mtime +30                      # 查找 30 天前修改过的文件
find . -perm 644                       # 查找权限为 644 的文件
find . -user root                      # 查找属主为 root 的文件
find . -empty                          # 查找空文件或空目录
find . -name "*.tmp" -delete           # 查找并删除 .tmp 文件

# locate 命令(基于数据库,速度更快)
updatedb                               # 更新文件数据库(需 root)
locate filename.txt                    # 快速查找文件路径
locate -i "*.conf"                     # 忽略大小写查找

二、文本查看与处理

2.1 文件内容查看

bash
cat file.txt                           # 显示整个文件内容
cat -n file.txt                        # 显示行号
cat file1 file2 > file3                # 合并多个文件

tac file.txt                           # 倒序显示文件内容(最后一行先显示)

less file.txt                          # 分页查看(支持上下翻页、搜索)
# less 中常用按键:
#   空格/PageDown = 下一页    b/PageUp = 上一页
#   /keyword = 向下搜索       ?keyword = 向上搜索
#   n = 下一个匹配            N = 上一个匹配
#   q = 退出

more file.txt                          # 分页查看(仅支持向下翻页)

head file.txt                          # 显示前 10 行
head -n 20 file.txt                    # 显示前 20 行
head -c 100 file.txt                   # 显示前 100 个字节

tail file.txt                          # 显示最后 10 行
tail -n 50 file.txt                    # 显示最后 50 行
tail -f /var/log/syslog                # 实时追踪文件新增内容(follow)
tail -f -n 0 /var/log/syslog           # 只追踪新增内容,不显示已有内容

2.2 文本统计与比较

bash
wc file.txt                            # 统计行数、单词数、字节数
wc -l file.txt                         # 只统计行数(line)
wc -w file.txt                         # 只统计单词数(word)
wc -c file.txt                         # 只统计字节数(char)

diff file1.txt file2.txt               # 比较两个文件的差异
diff -u file1.txt file2.txt            # 统一格式输出(unified)
diff -r dir1/ dir2/                    # 递归比较两个目录

cmp file1.bin file2.bin                # 逐字节比较两个文件

2.3 文本编辑(行处理)

bash
# sed - 流编辑器
sed 's/old/new/' file.txt              # 将每行第一个 old 替换为 new
sed 's/old/new/g' file.txt             # 将每行所有 old 替换为 new(global)
sed -i 's/old/new/g' file.txt          # 直接修改文件(in-place)
sed -i.bak 's/old/new/g' file.txt      # 修改前备份为 .bak
sed '2d' file.txt                      # 删除第 2 行
sed '1,5d' file.txt                    # 删除第 1-5 行
sed '/pattern/d' file.txt              # 删除包含 pattern 的行
sed -n '5,10p' file.txt                # 只打印第 5-10 行
sed 's/^[ \t]*//' file.txt            # 删除行首空白
sed 's/[ \t]*$//' file.txt            # 删除行尾空白

# awk - 文本处理工具
awk '{print $1}' file.txt              # 打印每行第 1 个字段(默认空格分隔)
awk '{print $NF}' file.txt             # 打印每行最后一个字段
awk -F: '{print $1}' /etc/passwd       # 以冒号为分隔符,打印第 1 个字段
awk '{print NR, $0}' file.txt          # 打印行号和整行内容
awk 'NR==5' file.txt                   # 打印第 5 行
awk '/pattern/' file.txt               # 打印包含 pattern 的行
awk '$3 > 100' file.txt                # 打印第 3 字段大于 100 的行
awk '{sum+=$1} END {print sum}' file   # 对第 1 列求和

2.4 文本转换

bash
tr 'a-z' 'A-Z' < file.txt              # 小写转大写
tr -d '0-9' < file.txt                 # 删除所有数字
tr -s ' ' < file.txt                   # 将多个空格压缩为单个

cut -d: -f1 /etc/passwd                # 以冒号分隔,提取第 1 字段
cut -c1-10 file.txt                    # 提取每行前 10 个字符
cut -c5- file.txt                      # 提取每行第 5 个字符之后的内容

sort file.txt                          # 按字母排序
sort -n file.txt                       # 按数字排序
sort -r file.txt                       # 反向排序
sort -k2 file.txt                      # 按第 2 字段排序
sort -t: -k3 -n /etc/passwd            # 以冒号分隔,按第 3 字段数字排序

uniq file.txt                          # 去除相邻重复行
uniq -c file.txt                       # 统计每行重复次数
uniq -d file.txt                       # 只显示重复的行

paste file1.txt file2.txt              # 并排合并两个文件

三、文本搜索与过滤

3.1 grep 命令

bash
grep "pattern" file.txt                # 在文件中搜索包含 pattern 的行
grep -i "pattern" file.txt             # 忽略大小写(ignore case)
grep -v "pattern" file.txt             # 反向匹配:显示不包含 pattern 的行
grep -n "pattern" file.txt             # 显示行号(number)
grep -c "pattern" file.txt             # 统计匹配行数(count)
grep -l "pattern" *.txt                # 只显示包含匹配的文件名
grep -r "pattern" /var/log/            # 递归搜索目录
grep -w "word" file.txt                # 匹配整个单词(word)
grep -E "pattern1|pattern2" file.txt   # 扩展正则,匹配多个模式
grep -A 3 "pattern" file.txt           # 显示匹配行及后 3 行(After)
grep -B 3 "pattern" file.txt           # 显示匹配行及前 3 行(Before)
grep -C 3 "pattern" file.txt           # 显示匹配行及前后各 3 行(Context)
grep --color "pattern" file.txt        # 高亮显示匹配内容

# 与管道结合
cat file.txt | grep "error"            # 从管道输入中过滤
cat file.txt | grep -v "^#" | grep -v "^$"   # 过滤掉注释行和空行

3.2 正则表达式示例

bash
grep "^start" file.txt                 # 以 start 开头的行
grep "end$" file.txt                   # 以 end 结尾的行
grep "[0-9]" file.txt                  # 包含数字的行
grep "[a-zA-Z]" file.txt               # 包含字母的行
grep "^$" file.txt                     # 空行
grep -E "\bword\b" file.txt          # 匹配完整单词边界

四、系统信息与监控

4.1 系统基本信息

bash
uname -a                               # 显示系统内核信息
uname -r                               # 显示内核版本
uname -m                               # 显示机器硬件架构

hostname                               # 显示主机名
hostname -I                            # 显示所有 IP 地址

whoami                                 # 显示当前用户名
who                                    # 显示当前登录的用户
w                                      # 显示当前登录用户及其正在执行的命令
last                                   # 显示最近登录记录
uptime                                 # 显示系统运行时间、负载

# 日期时间
date                                   # 显示当前日期时间
date "+%Y-%m-%d %H:%M:%S"             # 格式化输出
date -d "yesterday" "+%Y-%m-%d"       # 显示昨天日期
date -d "+3 days" "+%Y-%m-%d"         # 显示 3 天后日期

4.2 CPU 与内存

bash
# CPU 信息
cat /proc/cpuinfo                      # 详细 CPU 信息
lscpu                                  # CPU 架构信息汇总
nproc                                  # 显示可用 CPU 核心数

# 内存信息
free                                   # 显示内存使用情况
free -h                                # 人类可读格式
free -m                                # 以 MB 为单位
cat /proc/meminfo                      # 详细内存信息

# 综合系统资源
vmstat 1 5                             # 每秒刷新,共显示 5 次
vmstat -s                              # 显示内存统计事件

4.3 磁盘使用

bash
df                                     # 显示文件系统磁盘使用情况
df -h                                  # 人类可读格式
df -T                                  # 显示文件系统类型
df -i                                  # 显示 inode 使用情况

du                                     # 显示目录/文件磁盘使用量
du -sh /var/log                        # 查看 /var/log 总大小
du -sh *                               # 查看当前目录下各文件/目录大小
du -h --max-depth=1 /var               # 查看 /var 下各一级目录大小

# 查找大文件
find / -type f -size +500M -exec ls -lh {} \;   # 查找大于 500MB 的文件

4.4 实时监控

bash
top                                    # 实时显示进程和资源使用
# top 中常用按键:
#   M = 按内存排序    P = 按 CPU 排序    T = 按时间排序
#   k = 杀死进程      r = 修改优先级      q = 退出
#   1 = 显示每个 CPU 核心

htop                                   # 增强版 top(需安装:apt install htop)
iostat 1 5                             # 显示 CPU 和 I/O 统计(需安装 sysstat)

# 网络监控
iftop                                  # 实时网络流量(需安装)
nethogs                                # 按进程显示网络流量(需安装)

4.5 硬件信息

bash
lsusb                                  # 列出 USB 设备
lspci                                  # 列出 PCI 设备
lsblk                                  # 列出块设备(硬盘、分区等)
fdisk -l                               # 显示磁盘分区表(需 root)
blkid                                  # 显示块设备 UUID 和文件系统类型
dmidecode                              # 显示 DMI/BIOS 硬件信息(需 root)

五、进程管理

5.1 查看进程

bash
ps                                     # 显示当前终端的进程
ps aux                                 # 显示所有进程的详细信息
ps aux | grep nginx                    # 查找 nginx 进程
ps -ef                                 # 全格式显示所有进程
ps -u username                         # 显示指定用户的进程
ps -p 1234 -o pid,ppid,cmd,%mem,%cpu # 显示指定 PID 的指定字段

pgrep nginx                            # 通过名称查找进程 PID
pgrep -u root nginx                    # 查找 root 用户的 nginx 进程
pidof nginx                            # 查找 nginx 主进程 PID

5.2 终止进程

bash
kill 1234                              # 向 PID 1234 发送 TERM 信号(默认,优雅终止)
kill -9 1234                           # 强制终止(SIGKILL,无法拦截)
kill -15 1234                          # 发送 TERM 信号(同默认)
kill -HUP 1234                         # 发送 HUP 信号(通常用于重载配置)

killall nginx                          # 终止所有名为 nginx 的进程
pkill nginx                            # 通过名称匹配终止进程
pkill -f "python app.py"               # 匹配完整命令行

# 安全查找并终止
pgrep -a nginx                         # 先查看进程详情
kill $(pgrep nginx)                    # 再终止

5.3 后台运行与作业控制

bash
command &                              # 在后台运行命令
nohup command &                        # 后台运行,忽略挂起信号(终端关闭后继续运行)
nohup python app.py > app.log 2>&1 &   # 后台运行并输出到日志

ctrl + z                               # 暂停当前前台进程
jobs                                   # 显示当前 shell 的后台作业
fg %1                                  # 将作业 1 调到前台
bg %1                                  # 在后台继续运行作业 1

5.4 进程优先级

bash
nice -n 10 command                     # 以较低优先级(nice 值 10)运行命令
renice +5 -p 1234                      # 调整已有进程的 nice 值

六、磁盘与存储管理

6.1 分区与格式化

bash
# 查看磁盘
lsblk
fdisk -l

# 分区(交互式)
sudo fdisk /dev/sdb                    # MBR 分区
sudo gdisk /dev/sdb                    # GPT 分区

# 格式化
sudo mkfs.ext4 /dev/sdb1               # 格式化为 ext4
sudo mkfs.xfs /dev/sdb1                # 格式化为 xfs
sudo mkfs.vfat /dev/sdb1               # 格式化为 FAT32

6.2 挂载与卸载

bash
mount                                  # 显示已挂载的文件系统
mount /dev/sdb1 /mnt                   # 挂载分区到 /mnt
mount -o remount,rw /                  # 重新以读写模式挂载根目录
mount -a                               # 挂载 /etc/fstab 中定义的所有设备

umount /mnt                            # 卸载 /mnt
umount /dev/sdb1                       # 通过设备卸载
fuser -m /mnt                          # 查看占用 /mnt 的进程

# 永久挂载(编辑 /etc/fstab)
# UUID=xxxxx  /mnt/data  ext4  defaults,noatime  0  2

6.3 逻辑卷管理(LVM)

bash
# 物理卷
pvcreate /dev/sdb1
pvdisplay
pvscan

# 卷组
vgcreate vg0 /dev/sdb1
vgextend vg0 /dev/sdc1
vgdisplay

# 逻辑卷
lvcreate -L 10G -n lv_data vg0
lvextend -L +5G /dev/vg0/lv_data
lvdisplay

# 文件系统扩展
resize2fs /dev/vg0/lv_data             # ext4
xfs_growfs /mnt                        # xfs

七、网络相关

7.1 网络配置查看

bash
ip addr                                # 显示所有网络接口和 IP 地址(替代 ifconfig)
ip addr show eth0                      # 显示指定接口
ip link                                # 显示网络接口状态
ip link set eth0 up                    # 启用网卡
ip link set eth0 down                  # 禁用网卡

ip route                               # 显示路由表
ip route add default via 192.168.1.1   # 添加默认网关
ip neigh                               # 显示 ARP 表(替代 arp)

# 传统命令(需安装 net-tools)
ifconfig                               # 显示网络接口信息
ifconfig eth0                          # 显示指定接口
ifconfig eth0 up                       # 启用网卡
netstat -tlnp                          # 显示监听端口和进程
netstat -anp                           # 显示所有连接

7.2 网络连接诊断

bash
ping google.com                        # 测试网络连通性
ping -c 4 google.com                   # 发送 4 个包后停止
ping -i 0.5 google.com                 # 每 0.5 秒发送一次

traceroute google.com                  # 追踪路由路径
tracepath google.com                   # 类似 traceroute,无需 root
mtr google.com                         # 实时路由追踪(需安装)

# DNS 查询
nslookup google.com                    # DNS 查询
dig google.com                         # 详细 DNS 查询
dig @8.8.8.8 google.com               # 指定 DNS 服务器
dig +short google.com                  # 简洁输出
host google.com                        # 简单 DNS 查询

# 端口扫描
nc -zv 192.168.1.1 22                  # 测试 22 端口是否开放
nc -zv 192.168.1.1 1-1000              # 扫描端口范围
ss -tlnp                               # 查看监听端口(替代 netstat)
ss -tan                                # 查看所有 TCP 连接

7.3 数据传输

bash
# curl - 强大的 URL 工具
curl https://api.example.com           # GET 请求
curl -I https://example.com            # 只显示响应头
curl -O https://example.com/file.zip   # 下载文件(保留原文件名)
curl -o myfile.zip https://example.com/file.zip   # 下载并指定文件名
curl -L https://example.com            # 跟随重定向
curl -H "Authorization: Bearer token" https://api.example.com   # 自定义请求头
curl -X POST -d "key=value" https://api.example.com              # POST 请求
curl -X POST -H "Content-Type: application/json" -d '{"key":"value"}' https://api.example.com
curl -u username:password https://api.example.com                # 基本认证
curl -k https://self-signed.badssl.com                           # 忽略 SSL 证书验证

# wget - 下载工具
wget https://example.com/file.zip      # 下载文件
wget -O myfile.zip https://example.com/file.zip   # 指定输出文件名
wget -c https://example.com/file.zip   # 断点续传
wget -r -np -N https://example.com/docs/          # 递归下载(不向上级目录)
wget --limit-rate=1m https://example.com/file.zip  # 限速下载

# scp - 安全复制(基于 SSH)
scp file.txt user@remote:/path/        # 本地 → 远程
scp user@remote:/path/file.txt ./      # 远程 → 本地
scp -r dir/ user@remote:/path/         # 递归复制目录
scp -P 2222 file.txt user@remote:/path/ # 指定端口

# rsync - 增量同步(更高效)
rsync -avz /local/dir/ user@remote:/remote/dir/     # 本地 → 远程
rsync -avz user@remote:/remote/dir/ /local/dir/      # 远程 → 本地
rsync -avz --delete /local/dir/ /backup/dir/         # 同步并删除目标多余文件
rsync -avz --progress /large/file remote:/path/      # 显示进度
rsync -avz -e "ssh -p 2222" /local/ user@remote:/remote/   # 指定 SSH 端口

7.4 SSH 相关

bash
ssh user@hostname                      # 登录远程主机
ssh -p 2222 user@hostname              # 指定端口
ssh -i ~/.ssh/id_rsa user@hostname     # 指定私钥
ssh user@hostname "ls -la"             # 执行远程命令后退出
ssh -X user@hostname                   # 启用 X11 转发
ssh -N -L 8080:localhost:80 user@remote   # 本地端口转发
ssh -N -R 9090:localhost:3000 user@remote   # 远程端口转发

# SSH 密钥管理
ssh-keygen -t rsa -b 4096              # 生成 RSA 密钥对
ssh-keygen -t ed25519                  # 生成 Ed25519 密钥对(推荐)
ssh-copy-id user@hostname              # 将公钥复制到远程主机
ssh-add ~/.ssh/id_rsa                  # 将私钥添加到 ssh-agent
ssh-add -l                             # 列出已添加的密钥

八、用户与权限管理

8.1 用户管理

bash
# 查看用户信息
id username                            # 显示用户 ID、组 ID 等
whoami                                 # 当前用户名
users                                  # 显示当前登录的用户名列表

# 添加用户
sudo useradd username                  # 创建用户
sudo useradd -m -s /bin/bash username # 创建用户并创建主目录、指定 shell
sudo useradd -r -s /bin/false serviceuser   # 创建系统用户

# 删除用户
sudo userdel username                  # 删除用户
sudo userdel -r username               # 删除用户及其主目录

# 修改用户
sudo usermod -aG sudo username         # 将用户添加到 sudo 组
sudo usermod -aG docker username       # 将用户添加到 docker 组
sudo usermod -s /bin/zsh username      # 修改用户 shell
sudo usermod -l newname oldname        # 修改用户名
sudo usermod -d /new/home -m username  # 修改主目录并移动文件

# 密码管理
sudo passwd username                   # 修改用户密码
sudo passwd -l username                # 锁定用户
sudo passwd -u username                # 解锁用户
sudo passwd -d username                # 删除密码(无密码登录)

8.2 组管理

bash
groups                                 # 显示当前用户所属组
groups username                        # 显示指定用户所属组

cat /etc/group                         # 查看所有组

sudo groupadd groupname                # 创建组
sudo groupdel groupname                # 删除组
sudo groupmod -n newname oldname       # 重命名组
sudo gpasswd -a username groupname     # 将用户添加到组
sudo gpasswd -d username groupname     # 从组中删除用户

8.3 文件权限

bash
ls -l file.txt                         # 查看文件权限
# 权限位解释:-rwxr-xr--
# 第 1 位:文件类型(- 文件,d 目录,l 链接)
# 第 2-4 位:属主权限(rwx)
# 第 5-7 位:属组权限(r-x)
# 第 8-10 位:其他用户权限(r--)

chmod 755 file.txt                    # rwxr-xr-x
chmod 644 file.txt                    # rw-r--r--
chmod 777 file.txt                    # rwxrwxrwx(不推荐)
chmod +x script.sh                    # 添加执行权限
chmod -x file.txt                     # 移除执行权限
chmod u+x file.txt                    # 给属主添加执行权限
chmod g+w file.txt                    # 给属组添加写权限
chmod o-r file.txt                    # 移除其他用户的读权限
chmod -R 755 dir/                     # 递归修改目录权限

# 特殊权限
chmod 4755 file.txt                   # SUID(执行时以属主权限运行)
chmod 2755 dir/                       # SGID(目录内新建文件继承属组)
chmod 1755 dir/                       # Sticky(只有文件所有者能删除)

8.4 文件所有权

bash
chown user file.txt                    # 修改属主
chown user:group file.txt              # 同时修改属主和属组
chown :group file.txt                  # 只修改属组
chown -R user:group dir/              # 递归修改
chgrp group file.txt                   # 修改属组

8.5 权限数字对照表

数字权限说明
0---无权限
1--x执行
2-w-
3-wx写 + 执行
4r--
5r-x读 + 执行
6rw-读 + 写
7rwx读 + 写 + 执行

常用组合

  • 644 = rw-r--r--(文件默认)
  • 755 = rwxr-xr-x(目录/可执行文件默认)
  • 700 = rwx------(私有文件)
  • 750 = rwxr-x---(组内共享)

九、压缩与解压

9.1 tar 命令

bash
# 打包(不压缩)
tar -cvf archive.tar file1 file2       # 创建 tar 包(c=create, v=verbose, f=file)
tar -cvf archive.tar dir/              # 打包目录

# 查看包内容
tar -tvf archive.tar                   # 列出 tar 包内容(t=list)

# 解压
tar -xvf archive.tar                   # 解压 tar 包(x=extract)
tar -xvf archive.tar -C /dest/path     # 解压到指定目录

# gzip 压缩(.tar.gz / .tgz)
tar -czvf archive.tar.gz dir/          # 打包并 gzip 压缩(z=gzip)
tar -xzvf archive.tar.gz               # 解压 gzip 压缩包

# bzip2 压缩(.tar.bz2)
tar -cjvf archive.tar.bz2 dir/         # 打包并 bzip2 压缩(j=bzip2)
tar -xjvf archive.tar.bz2              # 解压 bzip2 压缩包

# xz 压缩(.tar.xz)
tar -cJvf archive.tar.xz dir/          # 打包并 xz 压缩(J=xz)
tar -xJvf archive.tar.xz               # 解压 xz 压缩包

# 排除文件
tar -czvf backup.tar.gz --exclude='*.log' --exclude='node_modules' dir/

9.2 gzip / gunzip

bash
gzip file.txt                          # 压缩为 file.txt.gz(原文件删除)
gzip -k file.txt                       # 压缩并保留原文件(keep)
gzip -9 file.txt                       # 最高压缩级别

gunzip file.txt.gz                     # 解压
gzip -d file.txt.gz                    # 同上

9.3 zip / unzip

bash
zip archive.zip file1 file2            # 创建 zip 压缩包
zip -r archive.zip dir/                # 递归压缩目录
zip -r archive.zip dir/ -x "*.log"     # 排除 .log 文件

unzip archive.zip                      # 解压到当前目录
unzip archive.zip -d /dest/path        # 解压到指定目录
unzip -l archive.zip                   # 列出 zip 内容
unzip -o archive.zip                   # 覆盖已有文件

9.4 其他压缩工具

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

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

# 7z(需安装 p7zip-full)
7z a archive.7z file1 dir/             # 创建 7z 压缩包
7z x archive.7z                        # 解压
7z l archive.7z                        # 列出内容

十、软件包管理

10.1 Debian/Ubuntu (APT)

bash
# 更新包索引
sudo apt update

# 升级已安装包
sudo apt upgrade                       # 安全升级
sudo apt full-upgrade                  # 完整升级(可能删除旧包)
sudo apt dist-upgrade                  # 发行版升级

# 安装软件
sudo apt install package_name
sudo apt install package1 package2
sudo apt install -y package_name       # 自动确认

# 删除软件
sudo apt remove package_name           # 保留配置文件
sudo apt purge package_name            # 完全删除(含配置)
sudo apt autoremove                    # 删除不再需要的依赖

# 搜索与信息
apt search keyword                     # 搜索包
apt show package_name                  # 显示包详情
dpkg -l                                # 列出所有已安装包
dpkg -l | grep nginx                   # 查找已安装的 nginx 包
dpkg -L package_name                   # 显示包安装的文件列表
dpkg -S /path/to/file                  # 查找文件属于哪个包

# 清理
sudo apt clean                         # 清理下载的包缓存
sudo apt autoclean                     # 清理旧版本包缓存

# 修复
sudo apt --fix-broken install          # 修复依赖问题
sudo dpkg --configure -a               # 修复中断的配置

10.2 RedHat/CentOS (YUM/DNF)

bash
# DNF(CentOS 8+/RHEL 8+)
sudo dnf update
sudo dnf install package_name
sudo dnf remove package_name
sudo dnf search keyword
sudo dnf info package_name
sudo dnf list installed

# YUM(CentOS 7)
sudo yum update
sudo yum install package_name
sudo yum remove package_name
sudo yum search keyword
sudo yum info package_name

# RPM
rpm -qa                                # 列出所有已安装包
rpm -qi package_name                   # 包信息
rpm -ql package_name                   # 包文件列表
rpm -ivh package.rpm                   # 安装 rpm 包
rpm -e package_name                    # 卸载

十一、定时任务与计划

11.1 crontab

bash
crontab -e                             # 编辑当前用户的 crontab
crontab -l                             # 列出当前用户的定时任务
crontab -r                             # 删除当前用户的所有定时任务
crontab -u username -e                 # 编辑指定用户的 crontab(需 root)

# 时间格式:
# .---------------- 分钟 (0-59)
# |  .------------- 小时 (0-23)
# |  |  .---------- 日期 (1-31)
# |  |  |  .------- 月份 (1-12)
# |  |  |  |  .---- 星期 (0-7, 0 和 7 都表示周日)
# |  |  |  |  |
# *  *  *  *  *  command

# 示例:
0 2 * * * /path/to/backup.sh           # 每天凌晨 2 点执行备份
*/5 * * * * /path/to/check.sh          # 每 5 分钟执行一次
0 0 * * 0 /path/to/weekly.sh           # 每周日午夜执行
0 0 1 * * /path/to/monthly.sh          # 每月 1 号午夜执行
0 9-18 * * 1-5 /path/to/work.sh        # 工作日 9 点到 18 点每小时执行

11.2 at 命令(一次性任务)

bash
at now + 1 hour                        # 1 小时后执行
at 14:00 tomorrow                      # 明天下午 2 点
atq                                    # 列出待执行的 at 任务
atrm 1                                 # 删除编号为 1 的 at 任务

# 输入命令后按 Ctrl+D 结束
# 示例:
# $ at now + 10 minutes
# warning: commands will be executed using /bin/sh
# at> echo "Hello" > /tmp/hello.txt
# at> <EOT>

11.3 系统级定时任务

bash
# 系统 crontab(需 root)
sudo vim /etc/crontab

# 预定义目录(将脚本放入即可):
/etc/cron.hourly/                      # 每小时执行
/etc/cron.daily/                       # 每天执行
/etc/cron.weekly/                      # 每周执行
/etc/cron.monthly/                     # 每月执行

# 查看 cron 日志
sudo grep CRON /var/log/syslog

十二、其他实用工具

12.1 命令历史与别名

bash
history                                # 显示命令历史
history | grep "apt"                   # 在历史中搜索
history -c                             # 清空历史记录
!n                                     # 执行历史第 n 条命令
!!                                     # 执行上一条命令
!$                                     # 上一条命令的最后一个参数
!*                                     # 上一条命令的所有参数
^old^new                               # 将上一条命令中的 old 替换为 new

# 别名(alias)
alias                                  # 列出所有别名
alias ll='ls -alF'                     # 创建别名
alias ..='cd ..'                       # 快捷返回上级
unalias ll                             # 删除别名

# 永久别名(添加到 ~/.bashrc)
echo "alias ll='ls -alF'" >> ~/.bashrc
source ~/.bashrc                       # 重新加载配置

12.2 输入输出重定向

bash
command > file.txt                     # 标准输出重定向到文件(覆盖)
command >> file.txt                    # 标准输出追加到文件
command 2> error.log                   # 标准错误重定向到文件
command &> all.log                     # 标准输出和错误都重定向
command > out.log 2>&1                 # 同上
command > /dev/null 2>&1               # 丢弃所有输出

command < input.txt                    # 从文件读取输入
command << EOF                         # Here Document(多行输入)
line1
line2
EOF

command1 | command2                    # 管道:将 command1 的输出作为 command2 的输入
cat file.txt | grep "error"            # 管道示例
ps aux | grep nginx | awk '{print $2}' # 多管道组合

12.3 实用小工具

bash
# tee - 同时输出到屏幕和文件
echo "hello" | tee file.txt            # 输出到屏幕并写入文件
echo "hello" | tee -a file.txt         # 追加模式
ls -la | tee output.log | less         # 保存输出同时分页查看

# xargs - 将标准输入转为命令参数
cat files.txt | xargs rm               # 删除 files.txt 中列出的文件
find . -name "*.log" | xargs rm        # 查找并删除 .log 文件
find . -name "*.log" | xargs -I {} mv {} /backup/   # 移动文件
find . -name "*.py" | xargs grep "import"           # 在多个文件中搜索

echo {1..10}                           # 生成序列:1 2 3 4 5 6 7 8 9 10
echo {a..z}                            # 生成字母序列
mkdir -p project/{src,test,docs}       # 批量创建目录

tree                                   # 以树形结构显示目录(需安装)
tree -L 2                              # 只显示 2 层深度

watch -n 1 'df -h'                     # 每 1 秒执行一次命令并显示
watch -n 2 'ps aux | grep nginx'       # 实时监控 nginx 进程

which python3                          # 查找命令位置
whereis python3                        # 查找命令、源码、手册位置
whatis ls                              # 显示命令简短描述
man ls                                 # 查看命令手册
info ls                                # 查看 info 文档
ls --help                              # 查看命令帮助

# 生成随机数据
openssl rand -base64 32                # 生成 32 字节随机 base64 字符串
uuidgen                                # 生成 UUID

# 计算
expr 1 + 2                             # 表达式计算
echo $((3 * 4))                        # 算术运算
echo "scale=2; 10/3" | bc              # 浮点计算(需安装 bc)

12.4 系统控制

bash
sudo reboot                            # 重启系统
sudo shutdown -r now                   # 立即重启
sudo shutdown -h now                   # 立即关机
sudo shutdown -h +10                   # 10 分钟后关机
sudo shutdown -c                       # 取消关机计划
sudo poweroff                          # 关机
sudo systemctl suspend                 # 挂起(睡眠)
sudo systemctl hibernate               # 休眠

十三、命令速查表

文件操作速查

操作命令
查看当前目录pwd
列出文件ls -la
切换目录cd /path
创建目录mkdir -p dir
创建文件touch file
复制cp -r src dest
移动/重命名mv old new
删除文件rm file
删除目录rm -rf dir
查找文件find . -name "*.txt"
查看内容cat file / less file
查看前 N 行head -n 20 file
查看后 N 行tail -n 20 file
实时追踪tail -f file

权限速查

操作命令
修改权限chmod 755 file
添加执行chmod +x script.sh
修改属主chown user:group file
查看权限ls -l file

系统监控速查

操作命令
磁盘使用df -h
目录大小du -sh dir
内存使用free -h
进程查看ps aux / top
杀死进程kill -9 PID
系统负载uptime

网络速查

操作命令
查看 IPip addr
测试连通ping host
查看端口ss -tlnp
下载文件wget url / curl -O url
远程复制scp file user@host:/path
同步目录rsync -avz src/ dest/
SSH 登录ssh user@host
DNS 查询dig domain

压缩速查

格式压缩解压
.tar.gztar -czvf a.tar.gz dir/tar -xzvf a.tar.gz
.tar.bz2tar -cjvf a.tar.bz2 dir/tar -xjvf a.tar.bz2
.tar.xztar -cJvf a.tar.xz dir/tar -xJvf a.tar.xz
.zipzip -r a.zip dir/unzip a.zip
.gzgzip filegunzip file.gz

文档完成
本手册涵盖了 Linux 日常运维与开发中最常用的高频命令,建议配合实际环境多加练习以熟练掌握。