linux手册(持续更新...)
2026年5月15日
·
约 25 分钟
·
技术版
Linux 使用手册
目录
第一章:Linux 基础概念
1.1 文件系统层次结构(FHS)
text
复制
/ # 根目录
├── /bin # 基本命令二进制文件(已链接到 /usr/bin)
├── /boot # 内核和启动文件
├── /dev # 设备文件
├── /etc # 系统配置文件
├── /home # 用户主目录
├── /lib # 库文件(已链接到 /usr/lib)
├── /media # 可移动设备挂载点
├── /mnt # 临时挂载点
├── /opt # 第三方应用软件
├── /proc # 进程和内核信息(虚拟文件系统)
├── /root # root 用户家目录
├── /run # 运行时临时文件(tmpfs)
├── /sbin # 系统管理命令(已链接到 /usr/sbin)
├── /srv # 服务数据
├── /sys # 内核和硬件信息(虚拟文件系统)
├── /tmp # 临时文件(重启后可能清除)
├── /usr # 用户程序和数据
│ ├── /usr/bin
│ ├── /usr/lib
│ ├── /usr/local # 本地编译安装的软件
│ └── /usr/share # 架构无关的共享数据
└── /var # 可变数据(日志、缓存、数据库等)
├── /var/log # 日志文件
└── /var/tmp # 重启后保留的临时文件
1.2 文件类型
标识
类型
示例
-
普通文件
-rw-r--r--
d
目录
drwxr-xr-x
l
符号链接
lrwxrwxrwx
b
块设备
brw-rw----
c
字符设备
crw-rw----
p
命名管道
prw-r--r--
s
套接字
srw-rw-rw-
1.3 Shell 类型
常见的 Shell 及其配置文件:
Shell
配置文件(交互式登录)
配置文件(交互式非登录)
bash
~/.bash_profile, ~/.bash_login, ~/.profile
~/.bashrc
zsh
~/.zprofile, ~/.zlogin
~/.zshrc
fish
~/.config/fish/config.fish
同左
第二章:常用命令
2.1 文件与目录操作
ls — 列出目录内容
bash
复制
ls -l # 详细列表
ls -a # 显示所有文件(含隐藏文件)
ls -lh # 人类可读的文件大小
ls -lt # 按修改时间排序
ls -lrt # 按时间倒序,最新在最后
ls -R # 递归列出子目录
ls -i # 显示 inode 号
cd — 切换目录
bash
复制
cd /path/to/dir # 切换到指定目录
cd ~ # 回到 home 目录
cd - # 回到上次所在目录
cd .. # 上级目录
文件创建与删除
bash
复制
touch file.txt # 创建空文件(或更新文件时间戳)
mkdir dir1 dir2 # 创建目录
mkdir -p a/b/c # 递归创建多级目录
rm file.txt # 删除文件
rm -r dir/ # 递归删除目录
rm -rf dir/ # 强制递归删除(危险,不提示确认)
rmdir dir/ # 删除空目录
文件复制与移动
bash
复制
cp source.txt dest.txt # 复制文件
cp -r source_dir/ dest_dir/ # 递归复制目录
cp -p source.txt dest.txt # 保留权限和时间戳
cp -a source_dir/ dest_dir/ # 归档模式(等同于 -dpR)
mv old_name.txt new_name.txt # 移动/重命名
mv -i source.txt dest/ # 覆盖前提示
文件查看
bash
复制
cat file.txt # 显示全部内容
cat -n file.txt # 显示行号
less file.txt # 分页查看(支持上下翻页、搜索)
more file.txt # 分页查看(仅向下翻页)
head -n 20 file.txt # 显示前 20 行(默认 10 行)
tail -n 20 file.txt # 显示后 20 行
tail -f log.txt # 持续追踪文件末尾(查看日志必备)
nl file.txt # 带行号显示
链接
bash
复制
ln -s /path/to/target link_name # 创建软链接(符号链接)
ln /path/to/target hard_link_name # 创建硬链接(不能跨文件系统,不能链接目录)
查找文件
bash
复制
find /path -name "*.log" # 按名称查找
find /path -type f -size +100M # 查找大于 100M 的文件
find /path -type f -mtime -7 # 最近 7 天修改的文件
find /path -type f -mmin -60 # 最近 60 分钟修改的文件
find /path -type d -empty # 查找空目录
find /path -name "*.tmp" -delete # 查找并删除
find /path -name "*.sh" -exec chmod +x {} \; # 对找到的文件执行命令
locate filename # 从数据库中快速查找(需 updatedb 更新数据库)
which command # 显示命令的完整路径
whereis command # 显示命令的二进制、源码、手册位置
2.2 文件权限
权限表示
text
复制
- rw- r-- r--
| | | |
| | | └── 其他用户权限 (other)
| | └─────── 用户组权限 (group)
| └──────────── 所有者权限 (owner)
└──────────────── 文件类型 (-/d/l/b/c/p/s)
权限数字:
r (read) = 4 读取
w (write) = 2 写入
x (execute) = 1 执行
例如:755 = rwxr-xr-x(所有者全权限,组和其他人只读执行)
644 = rw-r--r--(所有者读写,组和其他人只读)
chmod — 修改权限
bash
复制
chmod 755 script.sh # 数字方式
chmod u+x script.sh # 符号方式(所有者加执行权限)
chmod g-w file.txt # 移除组写权限
chmod o = file.txt # 清除其他用户所有权限
chmod -R 755 dir/ # 递归修改目录
chmod u = rwx,g= rx,o= script.sh # 同时设置多组权限
chown / chgrp — 修改所有者/组
bash
复制
chown user:group file.txt # 同时修改所有者和组
chown -R user:group dir/ # 递归修改
chgrp group file.txt # 只修改组
特殊权限
bash
复制
chmod u+s /path/to/executable # SUID:以文件所有者的身份执行
chmod g+s /path/to/dir # SGID:目录内新建文件继承目录组
chmod +t /path/to/dir # Sticky Bit:只有文件所有者能删除(如 /tmp 目录)
2.3 文件压缩与归档
tar — 归档
bash
复制
tar -cvf archive.tar dir/ # 创建归档(不压缩)
tar -xvf archive.tar # 解压归档
tar -czvf archive.tar.gz dir/ # 创建 gzip 压缩归档
tar -xzvf archive.tar.gz # 解压 gzip 归档
tar -cjvf archive.tar.bz2 dir/ # 创建 bzip2 压缩归档(更高压缩率)
tar -xjvf archive.tar.bz2 # 解压 bzip2 归档
tar -cJvf archive.tar.xz dir/ # 创建 xz 压缩归档(最高压缩率)
tar -xJvf archive.tar.xz # 解压 xz 归档
tar -czvf archive.tar.gz --exclude= "*.log" dir/ # 排除特定文件
tar -tzvf archive.tar.gz # 列出归档内容(不解压)
其他压缩工具
bash
复制
gzip file.txt # 压缩为 .gz
gunzip file.txt.gz # 解压 .gz
bzip2 file.txt # 压缩为 .bz2
bunzip2 file.txt.bz2 # 解压 .bz2
xz file.txt # 压缩为 .xz
unxz file.txt.xz # 解压 .xz
zip -r archive.zip dir/ # 创建 zip 压缩
unzip archive.zip # 解压 zip
7z a archive.7z dir/ # 创建 7z 压缩(需安装 p7zip)
7z x archive.7z # 解压 7z
2.4 系统信息
bash
复制
uname -a # 内核版本及系统架构
uname -r # 仅内核版本
hostnamectl # 主机名详细信息
lsb_release -a # 发行版信息
cat /etc/os-release # 发行版信息(通用方式)
cat /proc/cpuinfo # CPU 信息
cat /proc/meminfo # 内存信息
free -h # 内存使用情况(人类可读)
df -h # 磁盘分区使用情况
df -i # inode 使用情况
du -sh dir/ # 目录总大小
du -sh * | sort -hr | head -10 # 当前目录下最大的 10 个文件/目录
uptime # 系统运行时间、负载
cat /proc/loadavg # 负载平均值
lscpu # CPU 详细信息
lsblk # 列出块设备
lsblk -f # 列出块设备及文件系统类型
lspci # PCI 设备列表
lsusb # USB 设备列表
dmidecode -t memory # 物理内存信息(需 root)
dmidecode -t system # 系统制造商和型号
2.5 日期和时间
bash
复制
date # 当前日期和时间
date +"%Y-%m-%d %H:%M:%S" # 自定义格式
date -d "@1700000000" # 将时间戳转为日期
date +%s # 当前时间戳(秒)
cal # 当前月份日历
cal 2026 # 全年日历
timedatectl # 时区和时间同步状态
timedatectl list-timezones # 列出所有时区
sudo timedatectl set-timezone Asia/Shanghai # 设置时区
第三章:文本处理
3.1 grep — 文本搜索
bash
复制
grep "pattern" file.txt # 搜索匹配行
grep -i "pattern" file.txt # 忽略大小写
grep -v "pattern" file.txt # 反向匹配(排除)
grep -r "pattern" dir/ # 递归搜索目录
grep -n "pattern" file.txt # 显示行号
grep -c "pattern" file.txt # 统计匹配行数
grep -A 3 "pattern" file.txt # 显示匹配行及之后 3 行
grep -B 3 "pattern" file.txt # 显示匹配行及之前 3 行
grep -C 3 "pattern" file.txt # 显示匹配行及前后各 3 行
grep -E "pattern1|pattern2" file.txt # 扩展正则(等同于 egrep)
grep -P "\d{3}-\d{4}" file.txt # Perl 正则(PCRE)
grep -o "pattern" file.txt # 只输出匹配的部分
grep -l "pattern" *.txt # 只显示包含匹配的文件名
grep -w "word" file.txt # 匹配整个单词
3.2 sed — 流编辑器
bash
复制
# 替换
sed 's/old/new/' file.txt # 每行替换第一个匹配
sed 's/old/new/g' file.txt # 全局替换
sed 's/old/new/gi' file.txt # 忽略大小写全局替换
sed 's/^/PREFIX: /' file.txt # 每行开头添加
sed 's/$/ :SUFFIX/' file.txt # 每行末尾添加
sed '3s/old/new/' file.txt # 只替换第 3 行
# 删除
sed '3d' file.txt # 删除第 3 行
sed '3,5d' file.txt # 删除第 3-5 行
sed '/pattern/d' file.txt # 删除匹配行
sed '/^$/d' file.txt # 删除空行
# 打印
sed -n '5,10p' file.txt # 打印第 5-10 行
sed -n '/pattern/p' file.txt # 打印匹配行
# 插入/追加
sed '3i\New line before line 3' file.txt # 在第 3 行前插入
sed '3a\New line after line 3' file.txt # 在第 3 行后追加
# 原地修改
sed -i 's/old/new/g' file.txt # 直接修改文件
sed -i.bak 's/old/new/g' file.txt # 修改前备份为 .bak
3.3 awk — 文本处理语言
bash
复制
# 基本语法
awk '{print $1}' file.txt # 打印第 1 列
awk '{print $1, $3}' file.txt # 打印第 1, 3 列
awk '{print $NF}' file.txt # 打印最后一列
awk '{print $(NF-1)}' file.txt # 打印倒数第 2 列
awk -F':' '{print $1}' /etc/passwd # 指定冒号为分隔符
awk -F',' '{print NF}' file.csv # 打印列数
# 条件过滤
awk '$3 > 100' file.txt # 第 3 列大于 100 的行
awk '$1 == "error"' file.txt # 第 1 列等于 error
awk '$1 ~ /pattern/' file.txt # 第 1 列匹配正则
awk '$1 !~ /pattern/' file.txt # 第 1 列不匹配
awk 'NR>=5 && NR<=10' file.txt # 第 5-10 行
awk 'NF > 0' file.txt # 跳过空行
# 计算
awk '{sum += $3} END {print sum}' file.txt # 第 3 列求和
awk '{sum += $3} END {print sum/NR}' file.txt # 第 3 列平均值
awk '{total+=$3; count++} END {print total/count}' # 同上,更精确
# 格式化输出
awk '{printf "%-20s %10d\n", $1, $2}' file.txt # 左对齐字符串 + 右对齐数字
# 关联数组
awk '{count[$1]++} END {for (k in count) print k, count[k]}' file.txt # 分组计数
3.4 排序、去重与统计
bash
复制
sort file.txt # 升序排列
sort -r file.txt # 降序排列
sort -n file.txt # 按数值排序(而非字典序)
sort -k2 file.txt # 按第 2 列排序
sort -k2,2 -k3,3n file.txt # 先按第 2 列字典序,再按第 3 列数值
sort -t',' -k2 file.csv # 逗号分隔,按第 2 列排序
sort -u file.txt # 排序并去重
uniq file.txt # 去重(仅相邻重复行)
sort file.txt | uniq # 全局去重(先排序)
sort file.txt | uniq -c # 去重并统计出现次数
sort file.txt | uniq -d # 只显示重复行
wc file.txt # 行数、单词数、字节数
wc -l file.txt # 仅行数
wc -w file.txt # 仅单词数
wc -c file.txt # 仅字节数
3.5 cut / paste / tr
bash
复制
cut -d':' -f1 /etc/passwd # 指定分隔符,取第 1 列
cut -d',' -f1,3 file.csv # 取第 1 和第 3 列
cut -c1-10 file.txt # 取每行前 10 个字符
paste file1.txt file2.txt # 横向合并文件
paste -d',' file1.txt file2.txt # 指定分隔符合并
tr 'a-z' 'A-Z' < file.txt # 小写转大写
tr -d '\r' < dosfile.txt > unixfile.txt # 删除回车符
tr -s ' ' < file.txt # 压缩连续空格为单个空格
echo "a,b,c" | tr ',' '\n' # 逗号替换为换行
3.6 diff / comm — 文件比较
bash
复制
diff file1.txt file2.txt # 差异比较
diff -u file1.txt file2.txt # 统一格式(git diff 风格)
diff -r dir1/ dir2/ # 递归比较目录
diff <( ls dir1) <( ls dir2) # 比较两个命令的输出
comm file1.txt file2.txt # 逐行比较(需先排序)
comm -12 file1.txt file2.txt # 显示两文件共有行
comm -23 file1.txt file2.txt # 显示仅在 file1 中的行
第四章:用户与权限管理
4.1 用户管理
bash
复制
# 查看用户信息
whoami # 当前用户名
id # 当前用户 UID、GID、组
id username # 查看指定用户信息
who # 当前登录用户
w # 当前登录用户及其在做什么
last # 最近登录记录
lastb # 最近登录失败记录
# 用户管理(需 root)
useradd username # 添加用户
useradd -m -s /bin/bash username # 添加用户并创建家目录、指定 shell
useradd -u 1500 -g groupname username # 指定 UID 和主组
usermod -aG sudo username # 将用户加入 sudo 组
usermod -s /bin/zsh username # 修改用户默认 shell
usermod -L username # 锁定用户
usermod -U username # 解锁用户
userdel username # 删除用户
userdel -r username # 删除用户及家目录和邮件
passwd username # 设置/修改用户密码
passwd -l username # 锁定用户密码
chage -l username # 查看密码过期信息
# 批量创建用户
newusers users.txt # users.txt 格式同 /etc/passwd
4.2 组管理
bash
复制
groupadd groupname # 创建组
groupadd -g 2000 groupname # 指定 GID
groupmod -n newname oldname # 重命名组
groupdel groupname # 删除组
gpasswd -d username groupname # 从组中移除用户
groups username # 查看用户所属的所有组
4.3 sudo 配置
bash
复制
visudo # 安全编辑 /etc/sudoers(语法校验)
# 常用配置示例:
# username ALL=(ALL:ALL) ALL # 用户拥有完全 sudo 权限
# %group ALL=(ALL) NOPASSWD: ALL # 组成员免密码 sudo
# username ALL=(ALL) /usr/bin/systemctl # 限制只能执行特定命令
4.4 ACL(访问控制列表)
bash
复制
# 查看 ACL
getfacl file.txt
# 设置 ACL
setfacl -m u:username:rwx file.txt # 给特定用户添加权限
setfacl -m g:groupname:rx file.txt # 给特定组添加权限
setfacl -x u:username file.txt # 移除用户的 ACL
setfacl -b file.txt # 清除所有 ACL
setfacl -R -m u:username:rwx dir/ # 递归设置
第五章:进程管理
5.1 进程查看
bash
复制
ps aux # 显示所有进程(BSD 风格)
ps -ef # 显示所有进程(Unix 风格)
ps -ef --forest # 树形显示进程关系
ps -eo pid,ppid,cmd,%mem,%cpu --sort= -%mem # 自定义输出格式,按内存排序
ps -p 1234 -o pid,ppid,cmd # 查看指定 PID 的进程
# 进程树
pstree -p # 带 PID 的进程树
pstree -u username # 某用户的进程树
# 实时监控
top # 交互式进程监控
htop # top 增强版(更友好的界面,需安装)
atop # 高级系统和进程监控(需安装)
5.2 top 交互命令
按键
功能
1
显示每个 CPU 核心
P
按 CPU 使用率排序
M
按内存使用率排序
T
按运行时间排序
k
结束进程(输入 PID)
r
renice 进程
c
切换显示完整命令
V
森林视图
f
管理显示的列
o
添加过滤器
q
退出
5.3 进程控制
bash
复制
# 前台/后台
command & # 在后台运行
Ctrl + Z # 暂停当前前台进程
jobs # 查看后台任务
fg %1 # 将任务 1 调回前台
bg %1 # 在后台继续运行任务 1
disown -h %1 # 使任务不受 shell 退出影响
# nohup — 后台运行且不挂断
nohup long_running_command & # 输出默认写入 nohup.out
nohup command > /dev/null 2>& 1 & # 丢弃所有输出
# 信号
kill PID # 发送 TERM 信号(优雅终止)
kill -9 PID # 发送 KILL 信号(强制终止)
kill -HUP PID # 发送 HUP 信号(重新加载配置)
kill -STOP PID # 暂停进程
kill -CONT PID # 恢复进程
killall process_name # 按名称终止进程
pkill -f "pattern" # 按命令行模式匹配终止
pkill -u username # 终止某用户的所有进程
# 优先级
nice -n 10 command # 以较低优先级启动(-20 最高,19 最低)
renice -n 5 -p PID # 修改运行中进程的优先级
5.4 lsof — 列出打开的文件
bash
复制
lsof -p PID # 进程打开的文件
lsof -i :80 # 使用 80 端口的进程
lsof -i tcp # 所有 TCP 连接
lsof -u username # 某用户打开的文件
lsof /path/to/file # 哪些进程在使用此文件
lsof +D /path/to/dir # 目录下被打开的文件
5.5 /proc 文件系统
bash
复制
cat /proc/cpuinfo # CPU 详细信息
cat /proc/meminfo # 内存详细信息
cat /proc/PID/cmdline # 进程的完整命令行
cat /proc/PID/environ # 进程的环境变量
cat /proc/PID/status # 进程状态
cat /proc/PID/limits # 进程资源限制
cat /proc/PID/fd/ # 进程打开的文件描述符
cat /proc/sys/ # 内核运行时参数
cat /proc/version # 内核版本
cat /proc/uptime # 系统运行时间
第六章:磁盘与存储管理
6.1 分区管理
bash
复制
# 查看磁盘和分区
lsblk # 树形查看块设备
lsblk -f # 包含文件系统信息
fdisk -l # 列出所有磁盘分区
parted -l # 另一种分区查看
blkid # 查看 UUID 和文件系统类型
# 分区工具
fdisk /dev/sdb # MBR 分区工具
gdisk /dev/sdb # GPT 分区工具
parted /dev/sdb # 通用分区工具
6.2 文件系统
bash
复制
# 创建文件系统
mkfs.ext4 /dev/sdb1 # 格式化为 ext4
mkfs.xfs /dev/sdb1 # 格式化为 xfs
mkfs.btrfs /dev/sdb1 # 格式化为 btrfs
mkfs.vfat -F32 /dev/sdb1 # 格式化为 FAT32
mkswap /dev/sdb2 # 创建 swap
# 挂载
mount /dev/sdb1 /mnt/data # 挂载
mount -t ext4 /dev/sdb1 /mnt/data # 指定文件系统类型
mount -o remount,rw /mnt/data # 重新挂载(如只读变读写)
umount /mnt/data # 卸载
umount -l /mnt/data # 懒卸载(忙时延迟卸载)
fuser -km /mnt/data # 强制结束使用挂载点的进程
# 自动挂载 — 编辑 /etc/fstab
# 格式:设备 挂载点 文件系统 选项 dump pass
# UUID=xxx-xxx /data ext4 defaults,noatime 0 2
# 验证 fstab
mount -a # 挂载 fstab 中所有条目
findmnt --verify # 验证 fstab 语法
6.3 磁盘空间管理
bash
复制
df -h # 磁盘使用概览
df -i # inode 使用情况
du -sh directory/ # 目录总大小
du -h --max-depth= 1 / # 根目录一级子目录大小
du -sh * | sort -hr # 按大小排序
ncdu # 交互式磁盘使用分析器(需安装)
# 查找大文件
find / -type f -size +1G 2>/dev/null # 查找 >1GB 的文件
find / -type f -size +100M -mtime +30 # >100MB 且超过 30 天未修改
6.4 LVM(逻辑卷管理)
bash
复制
# 物理卷
pvcreate /dev/sdb1 # 创建物理卷
pvdisplay # 查看物理卷
# 卷组
vgcreate vg_data /dev/sdb1 # 创建卷组
vgextend vg_data /dev/sdc1 # 扩展卷组
vgdisplay # 查看卷组
# 逻辑卷
lvcreate -L 10G -n lv_app vg_data # 创建逻辑卷(指定大小)
lvcreate -l 100%FREE -n lv_app vg_data # 使用全部剩余空间
lvextend -L +5G /dev/vg_data/lv_app # 扩展逻辑卷
resize2fs /dev/vg_data/lv_app # 调整文件系统大小(ext4)
xfs_growfs /mnt/app # 调整文件系统大小(xfs)
lvs # 查看逻辑卷
# 快照
lvcreate -L 1G -s -n snap_app /dev/vg_data/lv_app # 创建快照
lvconvert --merge /dev/vg_data/snap_app # 恢复快照
6.5 RAID
bash
复制
# 软件 RAID(mdadm)
mdadm --create /dev/md0 --level= 1 --raid-devices= 2 /dev/sdb1 /dev/sdc1
mdadm --detail /dev/md0 # 查看 RAID 详情
cat /proc/mdstat # RAID 状态
# RAID 级别
# RAID 0 — 条带化(性能高,无冗余)
# RAID 1 — 镜像(冗余,容量减半)
# RAID 5 — 分布式奇偶校验(至少 3 盘,允许坏 1 块)
# RAID 6 — 双奇偶校验(至少 4 盘,允许坏 2 块)
# RAID 10 — RAID 1 + RAID 0(先镜像再条带,至少 4 盘)
第七章:网络管理
7.1 网络信息查看
bash
复制
ip addr # 查看 IP 地址(现代命令,替代 ifconfig)
ip link show # 查看网络接口状态
ip route # 查看路由表
ip neigh # 查看 ARP 表
ss -tlnp # 查看 TCP 监听端口
ss -tulnp # 查看所有监听端口(TCP + UDP)
ss -s # 统计摘要
netstat -tlnp # 传统命令(部分发行版需安装 net-tools)
route -n # 查看路由表
arp -n # 查看 ARP 缓存
hostname -I # 显示本机所有 IP
7.2 网络配置
bash
复制
# NetworkManager(桌面发行版常用)
nmcli device status # 设备状态
nmcli connection show # 连接列表
nmcli device wifi list # WiFi 列表
nmcli device wifi connect "SSID" password "密码" # 连接 WiFi
nmtui # 终端图形界面
# systemd-networkd(服务器发行版常用)
# 配置文件:/etc/systemd/network/
systemctl restart systemd-networkd
# 手动配置(临时生效)
ip addr add 192.168.1.100/24 dev eth0 # 添加 IP
ip link set eth0 up # 启用接口
ip link set eth0 down # 禁用接口
ip route add default via 192.168.1.1 # 添加默认网关
# DNS
cat /etc/resolv.conf # 查看 DNS 配置
systemd-resolve --status # systemd-resolved 状态
7.3 网络诊断
bash
复制
ping -c 4 google.com # 发送 4 个 ICMP 包
ping -i 0.5 google.com # 间隔 0.5 秒发送
traceroute google.com # 路由追踪(需安装)
tracepath google.com # 路由追踪(无需安装,使用 UDP)
mtr google.com # 动态路由追踪(需安装,my traceroute)
# DNS 诊断
nslookup domain.com # DNS 查询
dig domain.com # 详细 DNS 查询
dig +short domain.com # 简洁输出
dig -x 8.8.8.8 # 反向查询
dig domain.com MX # 查询邮件记录
host domain.com # 简单 DNS 查询
# 连接测试
curl -I https://example.com # 获取 HTTP 头
curl -X POST -d "key=value" https://api.example.com # POST 请求
curl -o file.zip https://example.com/file.zip # 下载文件
curl -L https://example.com # 跟随重定向
curl -k https://self-signed.example.com # 忽略证书验证
wget https://example.com/file.zip # 下载文件
wget -r -l 2 https://example.com # 递归下载(深度 2 层)
# 端口与连接
nc -zv 192.168.1.100 22 # 测试端口是否开放(netcat/ncat)
nc -l -p 8080 # 监听端口
telnet 192.168.1.100 80 # 测试 TCP 连接
7.4 防火墙
bash
复制
# iptables(传统)
iptables -L -n -v # 查看规则
iptables -A INPUT -p tcp --dport 22 -j ACCEPT # 允许 SSH
iptables -A INPUT -j DROP # 默认丢弃入站
iptables-save > /etc/iptables/rules.v4 # 保存规则
# ufw(Ubuntu/Debian 上的 iptables 前端,更友好)
ufw status # 查看状态
ufw enable # 启用防火墙
ufw allow 22/tcp # 允许 SSH
ufw allow from 192.168.1.0/24 to any port 3306 # 允许网段访问 MySQL
ufw delete 3 # 删除第 3 条规则
ufw logging on # 启用日志
# firewalld(RHEL/CentOS/Fedora 默认)
firewall-cmd --state # 查看状态
firewall-cmd --list-all # 列出所有规则
firewall-cmd --add-service= http --permanent # 永久添加 HTTP 服务
firewall-cmd --add-port= 8080/tcp --permanent# 永久添加端口
firewall-cmd --reload # 重新加载规则
firewall-cmd --get-default-zone # 查看默认区域
7.5 SSH
bash
复制
# 基本用法
ssh user@host # 连接到远程主机
ssh -p 2222 user@host # 指定端口
ssh -i ~/.ssh/id_rsa user@host # 使用密钥文件
ssh -L 8080:localhost:80 user@host # 本地端口转发
ssh -R 8080:localhost:80 user@host # 远程端口转发
ssh -D 1080 user@host # SOCKS 代理
# 密钥管理
ssh-keygen -t ed25519 -C "comment" # 生成 ED25519 密钥(推荐)
ssh-keygen -t rsa -b 4096 -C "comment" # 生成 RSA 4096 密钥
ssh-copy-id user@host # 复制公钥到远程主机
# SCP / SFTP
scp file.txt user@host:/path/ # 复制文件到远程
scp -r dir/ user@host:/path/ # 递归复制目录
scp user@host:/path/file.txt ./ # 从远程下载
sftp user@host # 交互式文件传输
# rsync — 增量同步
rsync -avz source/ user@host:/dest/ # 归档模式同步(保留属性)
rsync -avz --delete source/ dest/ # 镜像同步(删除目标多余文件)
rsync -avz --exclude= "*.log" source/ dest/ # 排除特定文件
rsync -avz -e "ssh -p 2222" source/ dest/ # 指定 SSH 端口
7.6 数据下载与传输
bash
复制
# wget — 下载工具
wget https://example.com/file.iso # 下载文件
wget -c https://example.com/file.iso # 断点续传
wget -b https://example.com/file.iso # 后台下载
wget -i urls.txt # 批量下载(从文件读取 URL)
# aria2 — 多线程下载
aria2c -x 16 https://example.com/file.iso # 16 线程下载
aria2c -c https://example.com/file.iso # 断点续传
第八章:Shell 脚本编程
8.1 脚本基础
bash
复制
#!/bin/bash
set -euo pipefail # 严格模式:遇错退出、未定义变量报错、管道错误
# 变量
name = "world" # 赋值(等号两边不能有空格)
echo "Hello, $name " # 双引号内可展开变量
echo 'Hello, $name' # 单引号原样输出
echo "Hello, ${ name } " # 花括号明确变量边界
# 特殊变量
echo "脚本名: $0 "
echo "参数个数: $# "
echo "所有参数: $@ "
echo "所有参数(单字符串): $* "
echo "退出码: $? "
echo "当前 PID: $$ "
echo "上一个后台 PID: $! "
# 数组
arr =( "a" "b" "c" ) # 定义数组
echo " ${ arr [0] } " # 第一个元素
echo " ${ arr [@] } " # 所有元素
echo " ${# arr [@] } " # 数组长度
arr +=( "d" ) # 追加元素
8.2 条件判断
bash
复制
# if 语句
if [ " $a " -eq " $b " ] ; then
echo "相等"
elif [ " $a " -gt " $b " ] ; then
echo "a 大于 b"
else
echo "a 小于 b"
fi
# 数值比较:[ -eq / -ne / -gt / -lt / -ge / -le ]
# 字符串比较:[ = / != / -z(为空) / -n(不为空) ]
# 文件测试:[ -f(是文件) / -d(是目录) / -x(可执行) / -r(可读) / -w(可写) / -e(存在) ]
# [[ ]] 增强版(支持正则和逻辑运算符)
if [[ " $str " = ~ ^[ 0-9] +$ ]] ; then # 正则匹配
echo "是数字"
fi
if [[ -f config.yml && -r config.yml ]] ; then # 逻辑与
echo "配置文件可读"
fi
# case 语句
case " $OS " in
Linux)
echo "Linux" ;;
Darwin)
echo "macOS" ;;
*)
echo "Unknown" ;;
esac
8.3 循环
bash
复制
# for 循环
for i in { 1..10} ; do
echo "Number: $i "
done
for file in *.txt; do
echo "Processing: $file "
done
# while 循环
while read -r line; do
echo " $line "
done < file.txt
count = 0
while [ $count -lt 10 ] ; do
echo " $count "
(( count++))
done
# until 循环(条件为假时执行)
until ping -c1 google.com > /dev/null 2>& 1; do
echo "等待网络..."
sleep 5
done
8.4 函数
bash
复制
# 定义函数
log() {
local level = " $1 " # local 限定作用域
local message = " $2 "
echo "[ $( date '+%Y-%m-%d %H:%M:%S' ) ] [ $level ] $message "
}
log "INFO" "脚本开始执行"
# 返回值(return 只能返回 0-255 的整数)
is_root() {
[ " $( id -u) " -eq 0 ] && return 0 || return 1
}
# 函数输出作为返回值
get_config() {
local key = " $1 "
grep "^ ${ key } =" /etc/myapp.conf | cut -d'=' -f2
}
value = $( get_config "database_host" )
8.5 常用模式
bash
复制
# 遍历文件逐行处理
while IFS = read -r line || [ -n " $line " ] ; do
echo " $line "
done < file.txt
# 处理命令输出
while IFS = read -r file; do
echo "-> $file "
done < <( find . -name "*.log" )
# 临时文件安全创建
tmpfile = $( mktemp /tmp/myscript.XXXXXX)
trap "rm -f $tmpfile " EXIT # 脚本退出时自动清理
# 彩色输出
RED = '\033[0;31m' ; GREEN = '\033[0;32m' ; NC = '\033[0m'
echo -e " ${ GREEN } [OK] ${ NC } 操作成功"
echo -e " ${ RED } [FAIL] ${ NC } 操作失败"
# 参数解析
while getopts "h:u:p:" opt; do
case $opt in
h) host = " $OPTARG " ;;
u) user = " $OPTARG " ;;
p) pass = " $OPTARG " ;;
*) echo "用法: $0 -h host -u user -p pass" ; exit 1;;
esac
done
第九章:高级命令与技巧
9.1 xargs — 参数构建
bash
复制
find . -name "*.tmp" | xargs rm # 删除找到的文件
find . -name "*.log" -print0 | xargs -0 rm # 处理包含空格的文件名(安全方式)
echo "file1 file2 file3" | xargs -n 1 # 每次传递 1 个参数
seq 1 10 | xargs -P 4 -I {} echo "Processing {}" # 4 进程并行处理
find . -name "*.txt" | xargs grep "pattern" # 在找到的文件中搜索
9.2 重定向与管道进阶
bash
复制
# 标准流
# stdin = 0, stdout = 1, stderr = 2
command > file.txt # 覆盖写入 stdout
command >> file.txt # 追加写入 stdout
command 2> error.txt # 重定向 stderr
command 2>& 1 # stderr 合并到 stdout
command > /dev/null 2>& 1 # 静默所有输出
command > file.txt 2>& 1 # stdout 和 stderr 写入同一文件
# 管道
command1 | command2 # 将 stdout 传给下一个命令
command1 2>& 1 | command2 # 将 stdout 和 stderr 都传给下一个
command1 | tee output.txt # 同时输出到文件和 stdout
command1 | tee -a output.txt # 追加模式
# 进程替换
diff <( ls dir1) <( ls dir2) # 比较两个命令的输出
command1 > >( gzip > file.gz) # 输出到压缩文件
# Here Document
cat <<EOF > config.txt
line1
line2
EOF
# Here String
grep "pattern" <<< "some string to search"
9.3 计划任务
bash
复制
# cron 格式:分 时 日 月 周
crontab -e # 编辑当前用户 cron
crontab -l # 列出当前用户 cron
crontab -u username -e # 编辑指定用户 cron(需 root)
# 示例(在 /var/spool/cron/ 或 /etc/crontab)
# */5 * * * * /path/to/script.sh # 每 5 分钟执行
# 0 2 * * * /path/to/backup.sh # 每天凌晨 2 点
# 0 9 * * 1-5 /path/to/script.sh # 工作日早 9 点
# @daily /path/to/script.sh # 每天一次
# @reboot /path/to/script.sh # 开机启动
# /etc/cron.d/ — 系统级 cron 任务
# /etc/cron.daily/ — 每天执行的脚本
# /etc/cron.hourly/ — 每小时执行的脚本
# /etc/cron.weekly/ — 每周执行的脚本
# /etc/cron.monthly/ — 每月执行的脚本
# systemd timer(systemd 发行版推荐替代 cron)
systemctl list-timers # 查看所有定时器
9.4 systemd 服务管理
bash
复制
# 服务状态
systemctl status nginx # 查看服务状态
systemctl is-active nginx # 是否运行中
systemctl is-enabled nginx # 是否开机自启
systemctl list-units --type= service # 所有服务单元
systemctl list-units --type= service --state= failed # 失败的服务
# 服务控制
systemctl start| stop| restart nginx # 启动/停止/重启
systemctl reload nginx # 重新加载配置(无需重启)
systemctl enable| disable nginx # 设置/取消开机自启
systemctl mask| unmask nginx # 屏蔽/取消屏蔽(禁止手动启动)
# 查看日志
journalctl -u nginx # 某服务的日志
journalctl -u nginx -f # 持续追踪
journalctl -u nginx --since "2026-05-15" # 从指定日期
journalctl -u nginx --since "1 hour ago" # 最近 1 小时
journalctl -u nginx -p err # 只看错误级别
journalctl --disk-usage # 日志占用空间
journalctl --vacuum-size= 500M # 清理日志至 500M 以下
# 分析启动时间
systemd-analyze # 总启动时间
systemd-analyze blame # 各服务启动时间排序
systemd-analyze critical-chain # 关键启动链
9.5 journald 持久化配置
bash
复制
# /etc/systemd/journald.conf
# Storage=persistent # 持久化到磁盘(默认 /var/log/journal/)
# SystemMaxUse=1G # 最大占用空间
第十章:软件包管理
10.1 包管理器对比
功能
Debian/Ubuntu (apt/dpkg)
RHEL/CentOS/Fedora (dnf/yum/rpm)
Arch (pacman)
Alpine (apk)
openSUSE (zypper)
搜索软件
apt search pkg
dnf search pkg
pacman -Ss pkg
apk search pkg
zypper search pkg
安装
apt install pkg
dnf install pkg
pacman -S pkg
apk add pkg
zypper install pkg
卸载
apt remove pkg
dnf remove pkg
pacman -R pkg
apk del pkg
zypper remove pkg
更新列表
apt update
dnf check-update
pacman -Sy
apk update
zypper refresh
升级所有
apt upgrade
dnf upgrade
pacman -Su
apk upgrade
zypper update
本地安装
dpkg -i file.deb
rpm -ivh file.rpm
pacman -U file.pkg.tar.zst
apk add --allow-untrusted file.apk
zypper install file.rpm
列出已安装
dpkg -l
rpm -qa
pacman -Q
apk info
zypper packages --installed-only
文件属于哪个包
dpkg -S /path/file
rpm -qf /path/file
pacman -Qo /path/file
apk info --who-owns /path/file
zypper search --provides /path/file
包包含哪些文件
dpkg -L pkg
rpm -ql pkg
pacman -Ql pkg
apk info -L pkg
rpm -ql pkg
清理缓存
apt clean
dnf clean all
pacman -Sc
apk cache clean
zypper clean
10.2 APT 详细操作(Debian/Ubuntu)
bash
复制
# 源配置
# 主源文件:/etc/apt/sources.list
# 附加源:/etc/apt/sources.list.d/*.list
# 常用命令
apt update # 更新包索引
apt list --upgradable # 查看可升级的包
apt upgrade # 升级所有包(不删除旧包)
apt full-upgrade # 完整升级(可能删除冲突包)
apt autoremove # 删除不再需要的依赖
apt purge pkg # 彻底删除(含配置文件)
apt show pkg # 查看包详细信息
apt edit-sources # 编辑源列表
apt-mark hold pkg # 锁定包版本(禁止升级)
apt-mark unhold pkg # 解锁
# PPA(Ubuntu 特性)
add-apt-repository ppa:user/name # 添加 PPA 源
add-apt-repository -r ppa:user/name # 移除 PPA 源
10.3 DNF/YUM 详细操作(RHEL/CentOS/Fedora)
bash
复制
# RHEL 8+ / CentOS 8+ / Fedora 使用 DNF(YUM 的下一代)
# RHEL 7 / CentOS 7 使用 YUM
# 仓库管理
dnf repolist # 列出已启用的仓库
dnf repolist all # 列出所有仓库
dnf config-manager --add-repo url # 添加仓库
# 包管理
dnf search pkg # 搜索
dnf info pkg # 查看信息
dnf install pkg # 安装
dnf remove pkg # 卸载
dnf upgrade # 升级
dnf autoremove # 删除孤立依赖
dnf history # DNF 操作历史
dnf history undo 5 # 回滚第 5 次操作
# 包组
dnf group list # 列出包组
dnf group install "Development Tools" # 安装包组
10.4 Pacman 详细操作(Arch)
bash
复制
# 配置:/etc/pacman.conf
# 镜像:/etc/pacman.d/mirrorlist
pacman -Syu # 更新并升级(日常推荐)
pacman -S pkg # 安装
pacman -R pkg # 删除(保留依赖)
pacman -Rs pkg # 删除(含不再需要的依赖)
pacman -Rns pkg # 删除(含依赖和配置文件)
pacman -Qdt # 列出孤立包
pacman -Qe # 列出显式安装的包
pacman -Qm # 列出外来包(非官方仓库)
paccache -r # 清理包缓存(保留最近 3 个版本)
# AUR 助手(非官方,推荐 yay 或 paru)
yay -S pkg # 安装(含 AUR)
yay -Sua # 仅升级 AUR 包
10.5 通用二进制包管理
bash
复制
# Flatpak(跨发行版桌面应用)
flatpak search appname # 搜索
flatpak install flathub org.app.Name # 安装
flatpak run org.app.Name # 运行
flatpak list # 列出已安装
flatpak update # 更新所有
# Snap(Ubuntu 推广的通用包格式)
snap find appname # 搜索
snap install appname # 安装
snap list # 列出已安装
snap refresh # 更新所有
# AppImage(免安装运行)
chmod +x app.AppImage # 赋予执行权限
./app.AppImage # 直接运行
第十一章:系统性能与排错
11.1 性能监控
bash
复制
# CPU
top / htop
mpstat 1 # 每个 CPU 使用率(sysstat 包)
sar -u 1 10 # CPU 历史统计
# 内存
free -h
vmstat 1 # 虚拟内存统计
sar -r 1 10 # 内存历史统计
# IO
iostat -x 1 # 磁盘 IO 统计(sysstat 包)
iotop # IO 进程排行(需安装)
sar -b 1 10 # IO 历史统计
# 网络
iftop # 网络流量监控(需安装)
nethogs # 按进程查看网络流量(需安装)
sar -n DEV 1 10 # 网络历史统计
# 综合
dstat # 替代 vmstat、iostat、netstat(需安装)
glances # Web/终端综合监控(需安装)
11.2 内存与 OOM 排错
bash
复制
dmesg | grep -i oom # 查看 OOM Killer 日志
dmesg | grep -i "killed process" # 被杀的进程
cat /proc/PID/oom_score # OOM 分数(越高越可能被杀)
cat /proc/PID/oom_score_adj # OOM 调整值(-1000 排除)
# 限制应用内存
systemd-run --scope -p MemoryMax = 500M ./myapp
cgexec -g memory:limit_group ./myapp
11.3 日志管理
bash
复制
# 传统 syslog
cat /var/log/syslog # Debian/Ubuntu 系统日志
cat /var/log/messages # RHEL/CentOS 系统日志
cat /var/log/auth.log # 认证日志(Debian/Ubuntu)
cat /var/log/secure # 认证日志(RHEL/CentOS)
cat /var/log/kern.log # 内核日志
# journald(systemd 系统)
journalctl -b # 本次启动以来的日志
journalctl -b -1 # 上次启动的日志
journalctl -k # 内核日志
journalctl -p err # 只看错误及以上级别
journalctl _PID = 1234 # 特定 PID 的日志
# 日志轮转
# 配置:/etc/logrotate.conf 和 /etc/logrotate.d/
logrotate -f /etc/logrotate.conf # 强制执行轮转
11.4 启动与恢复
bash
复制
# GRUB 恢复模式
# 开机时在 GRUB 菜单按 'e' 编辑启动参数
# 在 linux 行末尾添加:single 或 init=/bin/bash
# 或添加 systemd.unit=rescue.target
# 单用户模式
systemctl rescue # 救援模式(需 root 密码)
systemctl emergency # 紧急模式(最小环境)
# 修复文件系统
fsck /dev/sdb1 # 检查文件系统(需卸载)
fsck -y /dev/sdb1 # 自动修复
tune2fs -l /dev/sdb1 # 查看 ext 文件系统信息
# 重置 root 密码
# 1. GRUB 编辑启动项,添加 init=/bin/bash
# 2. mount -o remount,rw /
# 3. passwd root
# 4. reboot -f
第十二章:发行版对比
12.1 主流发行版家族总览
text
复制
Linux 发行版家族树(简化版):
Debian ──┬── Debian Stable/Testing/Unstable
├── Ubuntu ──┬── Ubuntu Desktop/Server
│ ├── Linux Mint
│ ├── Pop!_OS
│ └── Elementary OS
└── Kali Linux(安全审计)
RHEL ────┬── Red Hat Enterprise Linux
├── CentOS / CentOS Stream
├── Fedora
├── AlmaLinux
└── Rocky Linux
Arch ────┬── Arch Linux
├── Manjaro
└── EndeavourOS
SUSE ────┬── openSUSE Leap
└── openSUSE Tumbleweed
独立系 ──┬── Gentoo Linux(源码编译)
├── Alpine Linux(轻量,基于 musl/BusyBox)
├── NixOS(声明式配置)
├── Void Linux(独立开发)
└── Solus(独立开发)
12.2 核心差异对照表
特性
Debian/Ubuntu
RHEL/CentOS/Fedora
Arch Linux
Alpine
openSUSE
包格式
.deb
.rpm
.pkg.tar.zst
.apk
.rpm
包管理器
apt/dpkg
dnf/rpm/yum
pacman
apk
zypper
默认防火墙
ufw
firewalld
iptables/nftables
iptables
firewalld
C 库
glibc
glibc
glibc
musl
glibc
核心工具
GNU coreutils
GNU coreutils
GNU coreutils
BusyBox
GNU coreutils
init 系统
systemd
systemd
systemd
OpenRC
systemd
默认文件系统
ext4
xfs (RHEL8+)
ext4
ext4
btrfs
SELinux/AppArmor
AppArmor
SELinux
无(可选)
无
AppArmor
Python 默认
python3
python3 (RHEL8+)
python3
默认不安装
python3
默认 Shell
bash
bash
bash
ash (BusyBox)
bash
软件源规模
极大(Ubuntu PPA)
小(EPEL 扩展)
极大(AUR)
极小
中等
更新策略
稳定版/保守
稳定版/保守
滚动更新
稳定版/保守
Leap(稳定) / Tumbleweed(滚动)
12.3 包管理器命令对照(详细版)
text
复制
操作 Debian/Ubuntu RHEL/CentOS 7 RHEL 8+/Fedora Arch Alpine openSUSE
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
更新索引 apt update yum makecache dnf makecache pacman -Sy apk update zypper refresh
升级所有包 apt upgrade yum update dnf upgrade pacman -Su apk upgrade zypper update
安装包 apt install pkg yum install pkg dnf install pkg pacman -S pkg apk add pkg zypper install pkg
卸载包 apt remove pkg yum remove pkg dnf remove pkg pacman -R pkg apk del pkg zypper remove pkg
清除配置卸载 apt purge pkg yum erase pkg dnf remove --purge pkg pacman -Rn pkg apk del --purge pkg zypper remove --clean-deps pkg
搜索包 apt search keyword yum search keyword dnf search keyword pacman -Ss keyword apk search keyword zypper search keyword
包详情 apt show pkg yum info pkg dnf info pkg pacman -Si pkg apk info pkg zypper info pkg
列出已安装 dpkg -l / apt list --installed rpm -qa rpm -qa / dnf list --installed pacman -Q apk info zypper packages --installed-only
文件属于哪个包 dpkg -S /path/file rpm -qf /path/file rpm -qf /path/file pacman -Qo /path/file apk info --who-owns rpm -qf /path/file
包包含哪些文件 dpkg -L pkg rpm -ql pkg rpm -ql pkg pacman -Ql pkg apk info -L pkg rpm -ql pkg
清理缓存 apt clean / apt autoclean yum clean all dnf clean all pacman -Sc / paccache -r apk cache clean zypper clean
锁定版本 apt-mark hold pkg yum versionlock pkg dnf versionlock pkg (编辑 pacman.conf) apk add pkg=version zypper addlock pkg
12.4 服务管理对比
text
复制
操作 SysV Init systemd (当前主流) OpenRC (Alpine/Gentoo)
─────────────────────────────────────────────────────────────────────────────────
启动服务 service nginx start systemctl start nginx rc-service nginx start
停止服务 service nginx stop systemctl stop nginx rc-service nginx stop
重启服务 service nginx restart systemctl restart nginx rc-service nginx restart
状态 service nginx status systemctl status nginx rc-service nginx status
开机自启 chkconfig nginx on systemctl enable nginx rc-update add nginx
禁用自启 chkconfig nginx off systemctl disable nginx rc-update del nginx
列出所有服务 chkconfig --list systemctl list-units rc-status
12.5 配置文件位置差异
配置项
Debian/Ubuntu
RHEL/CentOS/Fedora
Arch
Alpine
网络接口
/etc/network/interfaces
/etc/sysconfig/network-scripts/ifcfg-*
/etc/systemd/network/
/etc/network/interfaces
DNS
/etc/resolv.conf (或 resolvconf)
/etc/resolv.conf (NetworkManager 管理)
/etc/resolv.conf (systemd-resolved)
/etc/resolv.conf
软件源
/etc/apt/sources.list
/etc/yum.repos.d/*.repo
/etc/pacman.d/mirrorlist
/etc/apk/repositories
时区
/etc/timezone + /etc/localtime
/etc/localtime (systemd: timedatectl)
/etc/localtime
/etc/timezone + /etc/localtime
主机名
/etc/hostname
/etc/hostname
/etc/hostname
/etc/hostname
locale
/etc/default/locale
/etc/locale.conf
/etc/locale.conf
/etc/locale
SSH 配置
/etc/ssh/sshd_config
/etc/ssh/sshd_config
/etc/ssh/sshd_config
/etc/ssh/sshd_config
12.6 各发行版特点与适用场景
Debian 系
Debian Stable :极致稳定,适合服务器;软件版本偏旧
Ubuntu LTS :平衡稳定和新特性,最广泛的社区支持,适合学习和生产
Ubuntu 非 LTS :较新特性,适合桌面用户
Linux Mint :开箱即用的桌面体验,对新手友好
Kali Linux :预装大量安全工具,仅适合安全测试
RHEL 系
RHEL :企业级商业支持,适合大型企业生产环境
CentOS Stream :RHEL 的上游滚动版,预览下一版 RHEL
AlmaLinux / Rocky Linux :RHEL 的免费兼容克隆(CentOS 替代)
Fedora :前沿技术,适合开发者和爱好者,每 6 个月发布新版
Arch 系
Arch Linux :滚动更新,DIY 精神,适合有经验的用户(需从命令行手动安装)
Manjaro :开箱即用的 Arch,适合想用 AUR 但不想折腾的用户
AUR(Arch User Repository) :用户维护的庞大软件库,几乎所有 Linux 软件都能找到
其他
Alpine Linux :超轻量(约 5MB),基于 musl libc 和 BusyBox,Docker 容器首选基础镜像
openSUSE :YaST 配置工具体验独特,Leap(稳定版)和 Tumbleweed(滚动版)双轨
NixOS :声明式系统配置,可复现构建,适合 DevOps 和开发环境管理
Gentoo :源码编译发行版,极致可定制,适合学习和追求极致性能的用户
12.7 相同点汇总
无论使用哪个发行版,以下内容保持一致或高度通用:
Linux 内核 :核心相同,只是版本新旧有别
FHS 文件系统结构 :所有发行版遵循同一标准
GNU 工具链 :coreutils、grep、sed、awk、find 等用法完全一致(Alpine 使用 BusyBox,参数略有精简)
POSIX 兼容 :基础 Shell 语法和系统调用接口一致
编程语言 :Python、Perl、Ruby、Node.js 等运行时行为一致
X11/Wayland :图形协议栈相同
systemd :除少数发行版(Alpine、Gentoo、Void)外,init 系统统一
SSH 配置 :/etc/ssh/sshd_config 格式和选项完全一致
内核参数 :/proc/sys/ 和 /etc/sysctl.conf 相同
日志位置(传统syslog) :/var/log/ 结构基本一致
cron 语法 :所有发行版 crontab 格式相同
LVM/mdadm/文件系统工具 :底层磁盘管理命令完全一致
第十三章:常用快捷键与技巧汇总
13.1 Bash 快捷键
快捷键
功能
Ctrl + A
光标移到行首
Ctrl + E
光标移到行尾
Ctrl + U
删除光标前所有内容
Ctrl + K
删除光标后所有内容
Ctrl + W
删除前一个单词
Ctrl + L
清屏(等同于 clear)
Ctrl + R
搜索命令历史
Ctrl + D
退出 shell / 发送 EOF
Ctrl + C
终止当前命令
Ctrl + Z
暂停当前命令
13.2 Vim 基础(救急备忘)
操作
命令
进入编辑模式
i (光标前) / a (光标后) / o (下一行)
退出编辑模式
Esc
保存并退出
:wq 或 ZZ
不保存退出
:q!
仅保存
:w
撤销
u
搜索
/keyword → n 下一个
查找替换
:%s/old/new/g
跳转到行
:行号 如 :50
跳转到末尾
G
跳转到开头
gg
复制一行
yy
粘贴
p
删除一行
dd
删除 10 行
d10d
13.3 tmux 基础
bash
复制
tmux new -s session_name # 创建新会话
tmux attach -t session_name # 重新连接会话
tmux ls # 列出所有会话
# 默认前缀键:Ctrl + b
Ctrl+b % # 垂直分割窗格
Ctrl+b " # 水平分割窗格
Ctrl+b 方向键 # 切换窗格
Ctrl+b x # 关闭窗格
Ctrl+b d # 脱离会话(后台运行)
Ctrl+b c # 新建窗口
Ctrl+b n / p # 下一个/上一个窗口
Ctrl+b [ # 进入滚动模式(PgUp/Down 翻页)
13.4 最佳实践速查
bash
复制
# 安全习惯
alias rm = 'rm -i' # 删除前确认
alias cp = 'cp -i' # 覆盖前确认
alias mv = 'mv -i' # 覆盖前确认
# 历史记录增强
export HISTSIZE = 10000 # 增加历史条数
export HISTFILESIZE = 20000
export HISTTIMEFORMAT = "%F %T " # 显示时间戳
export HISTCONTROL = ignoredups:erasedups # 去重
# 有用的别名
alias ll = 'ls -alF'
alias la = 'ls -A'
alias l = 'ls -CF'
alias grep = 'grep --color=auto'
alias df = 'df -h'
alias du = 'du -h'
alias free = 'free -h'
alias ..= 'cd ..'
alias ...= 'cd ../..'
# 偶尔使用的长时间命令备忘
alias untar = 'tar -xzvf'
alias ports = 'ss -tlnp'
alias myip = 'curl -s ifconfig.me'
手册版本:v1.0 | 持续更新