定位备忘录/工具书,全篇16645字,祝查阅愉快。
目录
1.系统目录
目录名称 | 作用 | 适用对象 | 备注 |
---|---|---|---|
/ (根目录) | 所有目录的起点,文件系统的根节点 | 系统 | 系统启动时挂载,通常不直接存储用户数据 |
/bin | 存放基本用户命令(如 ls , cp , mv ) | 所有用户 | 系统启动和修复必需 |
/sbin | 存放系统管理命令(如 ifconfig , fdisk ) | 管理员(root) | 普通用户可通过 sudo 执行 |
/usr/bin | 存放用户级应用程序(如 Python、浏览器) | 所有用户 | 系统软件包安装的主要位置 |
/usr/sbin | 存放系统服务管理命令(如 Apache/Nginx 工具) | 管理员(root) | |
/boot | 存放启动文件(内核、GRUB 配置等) | 系统 | 需确保足够磁盘空间,避免启动失败 |
/dev | 虚拟文件系统,包含硬件设备接口文件(如 /dev/sda , /dev/tty ) | 系统 | 通过文件操作访问硬件设备 |
/etc | 全局配置文件(网络、用户账户等) | 管理员(root) | 修改可能影响系统行为,需谨慎 |
/home | 普通用户的主目录(如 /home/user1 ) | 所有用户 | 存储用户数据(文档、下载等) |
/root | 管理员(root 用户)的主目录 | 管理员(root) | |
/lib | 系统和应用程序依赖的共享库文件 | 系统 | 与 /usr/lib 类似,缺失可能导致程序无法运行 |
/media | 自动挂载可移动设备(如 U 盘、光盘) | 所有用户 | |
/mnt | 临时手动挂载文件系统(如外部硬盘) | 管理员(root) | |
/opt | 存放第三方软件或非标准安装的应用程序 | 所有用户 | 如自行编译的软件 |
/proc | 虚拟文件系统,显示内核和进程信息(如 /proc/cpuinfo ) | 系统 | 数据存储在内存中,不占用磁盘空间 |
/run | 存储运行时数据(如进程 PID 文件) | 系统 | 重启后清空 |
/srv | 存放服务相关数据(如 Web 服务器网站文件) | 管理员(root) | 示例:Apache 网页目录可能位于 /srv/www |
/sys | 虚拟文件系统,提供内核设备树的接口 | 系统 | |
/tmp | 临时文件存放处,系统重启时可能清空 | 所有用户 | 所有用户可读写 |
/var | 经常变化的文件(日志 /var/log 、缓存 /var/cache 等) | 系统 | 需定期清理或扩展磁盘空间 |
/lost+found | 文件系统损坏恢复时存放找回的文件碎片 | 系统 | 通常在非法关机或磁盘错误后出现 |
2.常用快捷键
1.命令行编辑快捷键
快捷键 | 功能 | 示例场景 |
---|---|---|
Ctrl + A | 跳转到行首 | 快速删除行首内容 |
Ctrl + E | 跳转到行尾 | 快速追加内容到行末 |
Ctrl + K | 删除光标后的所有字符 | 删除光标后的整段文本 |
Ctrl + U | 删除光标前的所有字符 | 快速清除当前输入行的前半部分 |
Ctrl + W | 删除光标前的一个单词 | 删除前一个单词(以空格分隔) |
Alt + B | 向后移动一个单词(以空格分隔) | 跳转到上一个单词的开头 |
Alt + F | 向前移动一个单词 | 跳转到下一个单词的开头 |
Ctrl + Y | 粘贴之前删除的内容 | 恢复被 Ctrl+U/W 删除的内容 |
Ctrl + T | 交换光标前两个字符 | 交换 ab 为 ba |
2.命令历史操作
快捷键 | 功能 | 示例场景 |
---|---|---|
↑ / ↓ | 浏览上一条/下一条历史命令 | 快速查找之前执行的命令 |
Ctrl + R | 反向搜索历史命令 | 输入 error 查找包含 error 的命令 |
Ctrl + G | 退出反向搜索模式 | 结束搜索后返回普通模式 |
!! | 执行上一条命令 | 快速重复执行 sudo apt update |
!<命令首字母> | 执行最近一条以指定字母开头的命令 | !apt 执行最近的 apt 命令 |
3.进程与信号控制
快捷键 | 功能 | 使用场景 |
---|---|---|
Ctrl + C | 终止当前进程 | 强制停止卡死的程序 |
Ctrl + Z | 挂起当前进程(暂停运行) | 将进程放到后台,稍后恢复 |
jobs | 查看后台运行的进程列表 | jobs 显示所有后台任务 |
fg | 将后台进程切换到前台运行 | fg %1 恢复第一个后台任务 |
bg | 将挂起的进程放到后台继续运行 | bg %1 让挂起的任务在后台运行 |
4.终端窗口管理
快捷键(通用) | 功能 | 适用终端模拟器(如 GNOME/Konsole) |
---|---|---|
Ctrl + Shift + T | 新建标签页 | 大多数终端支持 |
Ctrl + Shift + W | 关闭当前标签页 | |
Ctrl + PageUp/PageDown | 切换标签页 | |
Alt + 数字键 | 切换到指定编号的标签页 | 例如 Alt+1 切换到第一页 |
Ctrl + L | 清空终端屏幕(保留历史输出) | 替代 clear 命令 |
Ctrl + Shift + C | 复制选中内容 | 需启用鼠标支持(如 xterm ) |
Ctrl + Shift + V | 粘贴剪贴板内容 |
5.系统级快捷键
快捷键 | 功能 | 适用场景 |
---|---|---|
Ctrl + Alt + Del | 重启系统(需配置) | 紧急重启(默认行为可能不同) |
Ctrl + Alt + F1~F6 | 切换到虚拟终端(TTY1~TTY6) | 系统无响应时修复问题 |
Ctrl + Alt + F7 | 返回图形界面(Xorg/Wayland) | 从 TTY 切回桌面 |
Ctrl + Alt + L | 锁屏(需桌面环境支持) | 保护隐私 |
6.其他实用快捷键
快捷键 | 功能 | 示例场景 |
---|---|---|
Ctrl + S | 暂停终端输出(冻结滚动) | 查看快速滚动的日志时暂停 |
Ctrl + Q | 恢复终端输出(解冻滚动) | 继续查看日志 |
Ctrl + D | 退出终端(关闭当前会话) | 退出 SSH 或本地终端 |
Alt + F4 | 关闭当前终端窗口 | 在图形界面中关闭标签页 |
7.vim快捷键
1. 模式切换
-
Esc
:从插入模式/命令模式返回命令模式(必要操作!)。 -
i
:在光标前进入插入模式(Insert Mode)。 -
a
:在光标后进入插入模式。 -
o
:在当前行下方插入新行并进入插入模式。 -
I
:在光标所在行的行首进入插入模式。 -
A
:在光标所在行的行尾进入插入模式。 -
O
:在当前行上方插入新行并进入插入模式。
2. 插入模式
- 常规操作(直接输入字符即可)。
- 退格键:删除光标前字符。
- 方向键:移动光标(在插入模式下)。
3. 删除操作(命令模式)
命令 | 作用 | 示例 |
---|---|---|
x | 删除光标处的字符 | 按 x 删除当前字符 |
dd | 删除整行 | 按 dd 删除当前行 |
dw | 删除光标开始的单词(直到空格) | 按 dw 删除当前单词 |
db | 删除光标前的单词 | 按 db 删除前一个单词 |
d$ | 删除光标到行尾的内容 | 按 d$ 删除到行尾 |
D | 同 d$ (删除到行尾) | 快捷键 D |
dG | 删除从当前行到文件末尾的所有行 | 按 dG |
3dd | 删除当前行及下方 2 行(数字可替换) | 按 3dd |
4. 定位操作(命令模式)
命令 | 作用 | 示例 |
---|---|---|
gg | 跳转到文件第一行 | 按 gg |
G | 跳转到文件最后一行 | 按 G |
行号 + G | 跳转到指定行(如 10G 跳转第 10 行) | 按 10G |
/关键词 | 向下搜索关键词(如 /error ) | 按 /error + Enter |
n | 查找下一个匹配项 | 按 n |
$ | 跳转到当前行行尾 | 按 $ |
^ | 跳转到当前行行首 | 按 ^ |
Ctrl + f | 向下翻页 | 按 Ctrl + f |
Ctrl + b | 向上翻页 | 按 Ctrl + b |
5. 复制、剪切与粘贴
命令 | 作用 | 示例 |
---|---|---|
yy | 复制整行 | 按 yy |
dd | 剪切(删除)整行 | 按 dd |
yw | 复制光标开始的单词 | 按 yw |
dw | 剪切光标开始的单词 | 按 dw |
p | 在光标后粘贴 | 按 p |
P | 在光标前粘贴 | 按 P |
u | 撤销上一步操作 | 按 u |
Ctrl + r | 重做被撤销的操作 | 按 Ctrl + r |
6. 保存与退出
命令 | 作用 |
---|---|
:w | 保存文件(不退出) |
:q | 退出(未修改时可用) |
:wq | 保存并退出 |
:q! | 强制退出(不保存修改) |
:w filename | 另存为新文件(如 :w new.txt ) |
3.常用命令
1.文件与目录操作
命令 | 功能 | 示例 |
---|---|---|
| 列出目录内容 |
|
| 切换目录 | cd ~/docs cd .. (返回上级)cd - (返回上一次目录)cd /path/to/dir (绝对路径) |
| 显示当前路径 | pwd (默认输出)pwd -P (显示物理路径,解析符号链接) |
| 创建目录 | mkdir -p parent/child (递归创建)mkdir -v dir (显示创建过程)mkdir -m 755 dir (设置权限) |
| 删除空目录 | rmdir empty_dir rmdir -p parent/empty_dir (递归删除空父目录) |
| 删除文件/目录 | rm -rf dir rm -i file (交互确认)rm -v file (显示删除过程)rm --preserve-root (防止误删根目录) |
| 复制文件/目录 | cp file.txt backup/ cp -r dir1 dir2 cp -v file1 file2 (显示进度)cp -p file (保留时间戳) |
| 移动/重命名文件 | mv old.txt new.txt mv file.txt /backup/ mv dir1 dir2 (重命名目录) |
| 创建空文件或更新时间戳 | touch newfile touch -a file (仅修改访问时间)touch -m file (仅修改修改时间) |
| 查看/合并文件 | cat file1 file2 > merged.txt cat -n file (显示行号)cat -b file (仅显示非空行号) |
| 分页查看大文件 | less large.log less -N large.log (显示行号)less +G large.log (跳转到文件末尾) |
| 查看文件头部内容 | head -n 10 file (显示前10行)head -c 200 file (显示前200字节) |
| 查看文件尾部内容 | tail -f log.txt (实时跟踪)tail -n 20 log.txt (显示最后20行)tail -F log.txt (跟踪并自动重连) |
rm
安全提示
-
-i
:删除前询问确认(建议高风险操作时使用)。 -
--preserve-root
:禁止递归删除根目录(默认启用)。
cp
高级用法
-
-a
:归档模式(保留权限、时间戳等,等同于-rp
)。 -
-u
:仅复制更新过的文件(增量备份)。
mv
注意事项
- 若目标路径是目录且存在,文件会被移动到该目录下。
- 若目标路径是文件名,原文件会被重命名。
常用组合示例
- 批量重命名文件:
for file in *.txt; do mv "$file" "new_$file"; done
- 强制递归复制并保留属性:
cp -a source_dir/ destination_dir/
- 安全删除目录:
rm -ri dir_to_delete # 递归删除,交互确认
2.系统管理与权限
命令 | 功能 | 示例 |
---|---|---|
| 修改文件权限 |
|
| 修改文件所有者 |
|
| 查看进程状态 |
ps -e 同aux ps -f 显示完整格式(含PPID) ps --forest 显示进程树 |
| 实时监控系统资源 |
htop 增强版 鼠标操作 |
| 终止进程 | kill -1 重启进程 kill -2 终端进程(Ctrl+c) kill -9 强行终止 kill -15 优雅终止 killall nginx 终止所有进程 kill -15 8888 终止进程8888(PID) |
| 关机/重启 |
shutdown -c 取消关机计划 |
| 以管理员权限执行 | -u root 以root用户身份执行 -l 列出可执行命令 -k 清除缓存密码 |
| 修改密码 |
|
参数对比与安全提示
chmod
符号 vs 数字模式
- 符号模式(如
u+x
):更直观,适合精细化调整权限。 - 数字模式(如
755
):快速设置权限,但需计算数值(r=4
,w=2
,x=1
)。
kill
信号优先级
- 优先使用
-15
(SIGTERM
),若无效再尝试-9
(SIGKILL
),避免数据丢失。
sudo
安全建议
- 避免滥用
sudo su
,改用sudo -i
或sudo command
。 - 通过
visudo
配置免密码执行特定命令(需谨慎)。
实用组合示例
- 批量修改目录权限:
chmod -R 755 /var/www # 递归设置目录权限
- 强制终止进程并释放资源:
kill -9 $(pgrep -f "hung_process") # 查找并强制终止进程
- 定时关机:
shutdown -h +30 # 30分钟后关机
3.网络配置与工具
命令 | 功能 | 示例 |
---|---|---|
| 查看网络接口 |
ip addr add 192.168.1.1/24 dev eth0 手动分配IP |
| 测试网络连通性 |
-c 4 发送4次请求后停止 -i 2 发送间隔两秒 -W 5 超时时间5秒 |
| 下载文件或请求API |
|
| 查看网络连接 |
-p 显示进程PID ss -tulpn 监听TCP/UDP端口 -r 尝试解析数字地图/端口 |
| 远程登录 |
|
| 安全复制文件 |
|
| 追踪路由路径 |
|
参数对比与安全提示
ping
场景建议
- 基础连通性:
ping -c 4 host
- 网络延迟:
ping -i 0.5 host
(高频率测试) - 防火墙测试:
ping -s 1472 host
(测试MTU,-s
指定数据包大小)
curl
高级用法
- 下载断点续传:
curl -C - -O http://example.com/largefile.zip
- 模拟浏览器请求:
curl -A "Mozilla/5.0" https://example.com
- 上传文件:
curl -F "file=@test.txt" http://example.com/upload
ssh
安全建议
- 优先使用密钥认证(
ssh-keygen
+ssh-copy-id
)。 - 避免使用
ssh user@host
直接登录,改用配置文件(~/.ssh/config
)简化命令。
scp
注意事项
- 使用
-P
指定端口(注意是大写)。 - 限制带宽避免占用过多资源(
-l 500
限制为500kbps)。
实用组合示例
- 批量测试多主机连通性:
for ip in 192.168.1.{1..254}; do ping -c 1 -W 1 $ip | grep "64 bytes"; done
- 监控实时网络流量:
sudo ss -tunp | grep ESTAB # 查看已建立的TCP/UDP连接
- 通过SSH隧道访问内网服务:
ssh -N -L 8888:localhost:3306 user@remote-server # 本地访问 localhost:8888 即连内网MySQL
4.文本处理与搜索
命令 | 功能 | 示例 |
---|---|---|
| 文本搜索 |
|
| 流编辑器(替换文本) |
|
| 文本处理与分析 |
(统计第三列总和) (筛选第五列大于100的行) - |
vi /vim | 文本编辑器 | 见上 |
| 简易文本编辑器 |
-
|
| 排序文本 |
|
| 去重 | `sort file.txt - |
参数对比与实用技巧
grep
高级技巧
- 匹配整个单词:
grep -w "error" log.txt
(避免匹配errors
或terror
)。 - 统计匹配次数:
grep -c "success" log.txt
(显示匹配行数)。 - Pcre 正则:
grep -P "(?<=ERROR ).+" log.txt
(匹配ERROR
后的内容,需支持PCRE)。
sed
文件修改警告
- 使用
-i
直接修改文件时,建议先备份:sed -i.bak 's/foo/bar/g' file.txt
。
awk
复杂数据处理
- 多条件过滤:
awk '$2 == "admin" && $5 > 100 {print $0}' data.csv
(筛选第二列为admin
且第五列大于100的行)。 - 计算字段:
awk '{sum += $3} END {avg = sum/NR; print avg}' numbers.txt
(计算第三列平均值)。
sort
与 uniq
组合
- 统计词频:
cat words.txt | tr ' ' '\n' | sort | uniq -c | sort -nr
(统计单词频率并降序排列)。
组合命令示例
-
1.提取日志中的高频错误:
grep "ERROR" app.log | awk '{print $5}' | sort | uniq -c | sort -nr | head -n 10
(提取
ERROR
行的第五列,统计并显示前10个高频错误) -
2.清理重复数据并排序:
sort data.csv | uniq -u > cleaned_data.csv
-
3.快速分析CSV文件:
awk -F ',' 'NR==1 {print "Header"} NR>1 {sum+=$3} END {print "Total:", sum}' sales.csv
(保留表头,计算第三列总和)
5.软件包管理
命令 | 功能 | 示例 |
---|---|---|
| Debian/Ubuntu 软件包管理 |
|
| CentOS/RHEL 软件包管理 |
(查找配置文件所属包)
|
| 通用软件包管理(跨发行版) |
|
| RPM 包管理(Red Hat 系底层工具) |
- |
参数对比与安全提示
apt
vs yum
/dnf
-
apt
:更友好的交互界面,支持snap
和flatpak
等混合包管理。 -
yum
/dnf
:兼容性更强,支持旧版 CentOS/RHEL 系统。
snap
注意事项
- 默认启用自动更新,可通过
snap refresh --hold
暂停特定包更新。 - 部分系统需安装
snapd
服务(如 Ubuntu)。
rpm
依赖管理
- 不推荐直接使用
rpm
:建议优先使用yum
/dnf
处理依赖。 - 强制安装风险:
--nodeps
或--force
可能导致软件无法运行。
实用组合示例
- 清理旧内核(Ubuntu):
sudo apt autoremove --purge # 删除旧内核及配置
- 批量卸载不需要的包(CentOS):
sudo yum list installed | grep unused | awk '{print $1}' | xargs sudo yum remove -y
- 验证 RPM 包安全性:
rpm -K httpd-2.4.6-97.el7.centos.x86_64.rpm #
6.磁盘与存储管理
命令 | 功能 | 示例 |
---|---|---|
| 查看磁盘空间 |
|
| 查看目录大小 |
|
| 挂载/卸载设备 |
|
| 列出块设备 |
|
| 分区工具 |
(初始化 GPT 分区表) (创建逻辑分区) - |
参数对比与安全提示
df
与 du
差异
-
df
:显示文件系统级别的磁盘使用情况(基于超级块统计)。 -
du
:基于文件实际占用空间统计(可能因稀疏文件或硬链接产生差异)。
mount
高级用法
- 绑定挂载:
mount --bind /source /target
(将目录挂载到另一位置)。 - 临时文件系统:
mount -t tmpfs tmpfs /mnt/ramdisk
(挂载内存文件系统)。
分区工具选择
-
fdisk
:适用于 MBR 分区(≤2TB),交互式操作简单。 -
parted
:支持 GPT 分区(>2TB),功能更强大(如调整分区对齐)。
实用组合示例
- 快速清理临时文件:
du -sh /tmp/* # 查看 /tmp 下各文件/目录大小 rm -rf /tmp/*.log # 删除临时日志文件
- 挂载 ISO 镜像:
sudo mount -t iso9660 -o loop ubuntu.iso /mnt/iso
- 迁移分区表:
sudo sfdisk -d /dev/sda | sudo sfdisk /dev/sdb # 复制磁盘分区表
7.压缩与归档
命令 | 功能 | 示例 |
---|---|---|
| 打包/解包 |
(排除临时文件)- |
| 压缩/解压文件 |
|
| ZIP压缩/解压 | zip -r backup.zip folder/ -x "*.log"
|
参数对比与实用技巧
tar
与压缩格式选择
-
.tar.gz
:通用压缩格式,适合大多数场景(-z
)。 -
.tar.bz2
:更高压缩率,但速度较慢(-j
)。 -
.tar.xz
:最佳压缩率,适合大文件(-J
)。
gzip
注意事项
- 仅压缩单个文件,生成
.gz
文件,原文件被删除(除非用-k
保留)。 - 常与
tar
结合使用(如tar -czvf
)。
zip
密码安全
- 避免使用
-P password
(明文传输密码),改用交互式输入:zip -r secure.zip folder/ unzip secure.zip # 输入密码时不会显示
组合命令示例
-
分卷压缩(适合大文件传输):
tar -czvf - project/ | split -d -b 200M - project.tar.gz.part # 解压:cat project.tar.gz.part* | tar -xzvf -
-
批量解压 ZIP 文件:
for zipfile in *.zip; do unzip "$zipfile" -d "${zipfile%.zip}"; done
-
排除多个文件类型:
tar -czvf backup.tar.gz --exclude="*.tmp" --exclude="*.log" /data
8.系统监控与日志
命令 | 功能 | 示例 |
---|---|---|
| 内存/CPU统计 |
|
| 磁盘I/O统计 |
|
| 查看系统日志 |
|
| 实时跟踪日志 |
|
参数对比与实用技巧
vmstat
vs iostat
-
vmstat
:侧重全局资源监控(内存、CPU、进程、I/O)。 -
iostat
:专攻磁盘 I/O 性能分析(如await
表示 I/O 平均等待时间)。
journalctl
高级用法
- 按优先级过滤:
journalctl -p emerg..err # 显示紧急到错误级别的日志
- 查看内核日志:
journalctl -k # 等价于 dmesg
- 限制输出行数:
journalctl -u nginx.service -n 100 # 查看 Nginx 最后100条日志
tail
实时跟踪优化
- 结合
grep
过滤:tail -f /var/log/nginx/access.log | grep "404"
- 多文件跟踪:
tail -f /var/log/{syslog,auth.log} # 同时跟踪多个日志
组合命令示例
- 监控系统资源瓶颈:
vmstat 1 3 && iostat -x 1 2 # 先检查内存/CPU,再监控磁盘 I/O
- 排查磁盘性能问题:
iostat -dxm 1 # 查看磁盘设备详细 I/O 统计(MB单位)
- 分析服务日志异常:
(查找 MySQL 服务过去1小时内的超时错误)journalctl -u mysql.service -p err --since "1 hour ago" | grep "timeout"
9.用户与组管理
命令 | 功能 | 示例 |
---|---|---|
| 添加/删除用户 |
(创建用户并指定 Shell) (添加到
|
| 修改用户属性 |
(将用户添加到 (修改家目录并迁移旧数据)
|
| 查看用户所属组 |
- |
参数对比与安全提示
useradd
与 usermod
关键区别
-
useradd
:创建新用户,需一次性定义账户属性。 -
usermod
:修改现有用户属性(如组、家目录、Shell)。
userdel -r
注意事项
- 数据丢失风险:删除用户主目录和邮件文件后无法恢复,建议提前备份。
- 残留文件:若用户创建过其他文件(如
/var/www
),需手动清理。
usermod
组操作陷阱
-
-G
与-aG
差异:-G group1,group2
:覆盖用户原有附加组。-aG group1,group2
:保留原有组,追加新组(推荐使用)。
实用组合示例
-
批量创建用户并分配组:
for user in user1 user2 user3; do sudo useradd -m -s /bin/bash -G developers $user echo "user:$user:123456" | sudo tee -a /etc/shadow done
(批量创建用户,添加到
developers
组,设置初始密码) -
迁移用户家目录:
sudo usermod -d /new/home -m alice # -m 自动迁移旧家目录内容
-
排查用户组权限问题:
groups alice # 确认用户是否在所需组中(如 `docker` 组)
10.实用工具
命令 | 功能 | 示例 |
---|---|---|
| 查看命令历史 | `history
|
| 创建命令别名 |
- |
| 显示系统时间 |
|
| 查看日历 |
|
| 查看命令手册 |
|
参数对比与实用技巧
history
高级用法
- 执行历史命令片段:
!apt # 执行最近一条以 `apt` 开头的命令
- 批量删除历史记录:
history -d 100-200 # 删除历史记录中100到200行
alias
安全提示
- 避免覆盖危险命令:
alias rm='rm -i' # 添加确认提示(但可能被 `rm -f` 绕过)
- 永久生效:需写入 shell 配置文件(如
~/.bashrc
)并执行source ~/.bashrc
。
date
设置时间权限
- 需
sudo
权限修改系统时间,普通用户只能查看。
cal
周数计算
- 不同地区对周起始日定义不同(如欧美习惯周日,中国习惯周一)。
组合命令示例
- 快速创建临时别名:
alias temp='ssh user@remote-server' # 临时定义SSH快捷连接
- 批量清理历史记录:
history -c && history -w # 清空内存历史并写入文件
- 自动化时间戳记录:
alias logtime='echo "$(date +"%Y-%m-%d %H:%M:%S") - Task completed" >> logfile.txt'