Linux 常见高频命令操作手册
适用系统: Ubuntu / Debian / CentOS / 通用 Linux
编写日期: 2026-06-27
目标: 覆盖日常运维与开发中最常用的高频命令,附带实用示例
目录
一、文件与目录操作
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 主进程 PID5.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 # 在后台继续运行作业 15.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 # 格式化为 FAT326.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 26.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 | 写 + 执行 |
| 4 | r-- | 读 |
| 5 | r-x | 读 + 执行 |
| 6 | rw- | 读 + 写 |
| 7 | rwx | 读 + 写 + 执行 |
常用组合:
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 |
网络速查
| 操作 | 命令 |
|---|---|
| 查看 IP | ip 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.gz | tar -czvf a.tar.gz dir/ | tar -xzvf a.tar.gz |
| .tar.bz2 | tar -cjvf a.tar.bz2 dir/ | tar -xjvf a.tar.bz2 |
| .tar.xz | tar -cJvf a.tar.xz dir/ | tar -xJvf a.tar.xz |
| .zip | zip -r a.zip dir/ | unzip a.zip |
| .gz | gzip file | gunzip file.gz |
文档完成
本手册涵盖了 Linux 日常运维与开发中最常用的高频命令,建议配合实际环境多加练习以熟练掌握。