这是本节的多页打印视图。 .
其他
- 1: Linux 常用命令速查
- 2: Markdown 语法速查
- 3: MySQL 常用 SQL 语句速查
- 4: SSH 密钥配置指南
- 5: VSCode 配置机制完整笔记
- 6: MacOS 系统降级流程
- 7: Front Matter 规范
- 8: 修复 Git 提交时间无法显示
系统命令、云原生、开发工具这些暂时没单独分出去的笔记,都先放这里。
1 - Linux 常用命令速查
列出日常使用频率最高的命令。更多可参考 Linux 命令大全 | 菜鸟教程
系统信息
| 命令 | 说明 |
|---|---|
uname -a | 显示操作系统名称、内核版本、主机名等详细信息 |
who -b | 显示系统上次启动时间 |
uptime | 显示系统运行时长和负载 |
hostnamectl | 查看或修改主机名 |
shutdown -h now | 立即关机 |
shutdown -h 10 | 10 分钟后关机 |
reboot | 重启服务器 |
文件与目录
| 命令 | 说明 |
|---|---|
pwd | 显示当前工作目录 |
cd <路径> | 切换目录 |
ls | 列出当前目录的文件和子目录 |
ls -la | 列出所有文件(含隐藏文件)及详细信息 |
mkdir <目录名> | 创建目录 |
rmdir <目录名> | 删除空目录 |
cp <源> <目标> | 复制文件或目录 |
mv <源> <目标> | 移动或重命名 |
rm <文件> | 删除文件 |
rm -rf <目录> | 强制递归删除目录(慎用) |
touch <文件> | 创建空文件或更新文件时间戳 |
cat <文件> | 查看文件全部内容 |
less <文件> | 分页查看文件内容(按 q 退出) |
head -n 20 <文件> | 查看文件前 20 行 |
tail -n 20 <文件> | 查看文件最后 20 行 |
tail -f <文件> | 实时追踪文件新增内容(如日志) |
文件查找与内容搜索
| 命令 | 说明 |
|---|---|
find <目录> -name "*.py" | 按文件名递归查找 |
grep "关键词" <文件> | 在文件中搜索文本 |
grep -r "关键词" <目录> | 递归搜索目录下所有文件 |
wc <文件> | 统计文件行数、单词数、字节数 |
wc -l <文件> | 仅统计文件行数 |
sort <文件> | 对文件内容排序 |
进程管理
| 命令 | 说明 |
|---|---|
ps aux | 查看所有运行中的进程 |
ps -ef | 查看所有进程(另一格式) |
top | 实时显示进程和系统资源占用 |
htop | top 的增强版(需安装) |
kill <PID> | 终止指定进程 |
kill -9 <PID> | 强制终止进程 |
nohup <命令> & | 后台运行命令(退出终端后继续) |
磁盘与内存
| 命令 | 说明 |
|---|---|
df -h | 查看磁盘分区使用情况(人类可读) |
du -sh <目录> | 查看目录总大小 |
free -h | 查看内存使用情况 |
free -m | 以 MB 为单位显示内存 |
网络
| 命令 | 说明 |
|---|---|
ping <地址> | 测试网络连通性 |
curl <URL> | 发送 HTTP 请求 |
wget <URL> | 下载文件 |
ss -tlnp | 查看监听端口和对应进程 |
netstat -tlnp | 查看监听端口(ss 的替代) |
ip addr | 查看网络接口和 IP 地址 |
ifconfig | 查看网络配置(需安装 net-tools) |
文件权限
| 命令 | 说明 |
|---|---|
chmod 755 <文件> | 设置文件权限 |
chmod +x <文件> | 给文件添加可执行权限 |
chown <用户>:<组> <文件> | 修改文件所属用户和组 |
压缩与归档
| 命令 | 说明 |
|---|---|
tar -czf 包名.tar.gz <目录> | 打包并压缩为 tar.gz |
tar -xzf 包名.tar.gz | 解压 tar.gz |
unzip <文件>.zip | 解压 zip 文件 |
zip -r 包名.zip <目录> | 压缩为 zip |
包管理(Debian/Ubuntu)
| 命令 | 说明 |
|---|---|
apt update | 更新软件包索引 |
apt upgrade | 升级所有可升级的软件包 |
apt install <包名> | 安装软件包 |
apt remove <包名> | 卸载软件包 |
apt search <关键词> | 搜索软件包 |
2 - Markdown 语法速查
语法速查表
| 功能 | Markdown 语法 | 效果预览 |
|---|---|---|
| 一级标题 | # 标题内容 | 最大的标题 |
| 二级标题 | ## 标题内容 | |
| 三级标题 | ### 标题内容 | (依此类推,可到六级) |
| 加粗 | **需要加粗的文字** | 需要加粗的文字 |
| 斜体 | *需要倾斜的文字* | 需要倾斜的文字 |
| 加粗并斜体 | ***又粗又斜的文字*** | 又粗又斜的文字 |
~~被删除的文字~~ | ||
| 无序列表 | - 列表项 或 * 列表项 | • 列表项 |
| 有序列表 | 1. 列表项一2. 列表项二 | 1. 列表项一 2. 列表项二 |
| 任务列表 | - [ ] 未完成- [x] 已完成 | ☐ 未完成 ☑ 已完成 |
| 引用 | > 这是一段引用的文字 | > 这是一段引用的文字 |
| 行内代码 | `code` | 用于突出显示变量或命令 |
| 代码块 | ```pythonprint("Hello")``` | 用于显示多行代码 |
| 链接 | [显示的文字](https://example.com) | 显示的文字 |
| 图片 |  | 直接显示图片 |
| 水平分割线 | --- 或 *** | 一条横跨页面的线 |
标题
注意:所有符号都是英文输入法下的符号。井号加空格,几个井号就是几级标题,一级标题字体最大。
文本
列表
无序列表: 减号/加号/星号 + 空格,三个符号均可,建议用减号。
有序列表: 数字 + 点 + 空格。
任务列表: 方括号内空格代表未完成,x 代表已完成。
引用
链接
图片
表格
竖线分隔单元格,分隔行至少三个减号,冒号控制对齐。
代码
行内代码:用反引号包裹,如 `code`。
代码块:用三个反引号包裹,可指定语言。
脚注
分割线
三个或以上的减号、星号、下划线均可。
注意事项
- 所有符号都是英文输入法下的符号
- 井号
#后要加空格才是标题
3 - MySQL 常用 SQL 语句速查
数据库操作
数据表操作
数据行操作
条件与排序
聚合与分组
索引
用户管理
常用数据类型
数值类型
| 数据类型 | 说明 | 取值范围 | 适用场景 |
|---|---|---|---|
INT | 普通整数 | −21亿 ~ 21亿 | 用户ID、文章数量、年份 |
BIGINT | 大整数 | −922亿亿 ~ 922亿亿 | 订单号、日志ID、超大数据量 |
FLOAT | 单精度浮点数 | 约 7 位有效数字 | 科学计算、百分比 |
DOUBLE | 双精度浮点数 | 约 15 位有效数字 | 科学计算、高精度要求 |
DECIMAL | 定点数(精确) | 取决于定义 | 金额、价格(必须用这个,避免精度丢失) |
FLOAT(M,D)/DOUBLE(M,D)/DECIMAL(M,D)中的(M,D)表示总长度 M 位,其中 D 位是小数。例如DECIMAL(10,2)总长 10 位,小数 2 位,整数 8 位。
字符串类型
| 数据类型 | 说明 | 最大长度 | 适用场景 |
|---|---|---|---|
VARCHAR | 可变长度字符串 | 65535 字符 | 用户名、邮箱、标题(短文本首选) |
TEXT | 长文本 | 65535 字符 | 文章正文、评论内容、日志详情 |
日期和时间类型
| 数据类型 | 说明 | 取值范围 | 适用场景 |
|---|---|---|---|
DATETIME | 日期和时间 | 1000 ~ 9999 年 | 创建时间、更新时间(通用场景) |
TIMESTAMP | 时间戳 | 1970 年起 | 记录日志时间,受时区影响(自动转换为当前时区) |
DATETIME和TIMESTAMP的区别:TIMESTAMP会自动转换为当前时区;DATETIME不受时区影响。日常场景首选DATETIME。
JSON 类型
| 数据类型 | 说明 | 适用场景 |
|---|---|---|
JSON | 存储 JSON 格式数据 | 配置信息、动态属性、非结构化数据存储 |
4 - SSH 密钥配置指南
简介
SSH 密钥(SSH Key)是一种用于安全登录远程服务器的"钥匙",它由一对公钥和私钥组成。与密码相比,SSH 密钥更安全,也更方便。
- 公钥(Public Key):放在远程服务器上,可以公开。
- 私钥(Private Key):保存在本地电脑,必须保密,不能泄露。
可以将其类比为钥匙(私钥)和锁芯(公钥),公钥放在远程服务器上,私钥保存在本地电脑里,相互配对才能正确打开。
生成密钥
在终端内执行:
- 使用 ed25519 算法(推荐):
ssh-keygen -t ed25519 -C "备注" - 使用 rsa 算法(兼容性好):
ssh-keygen -t rsa -b 4096 -C "备注"
执行后,会让你确认密钥保存在哪里,是否需要再加一个密码。在一路回车的默认情况下,会在 ~/.ssh 目录下生成两个文件:
- id_ed25519 或 id_rsa 即私钥
- id_ed25519.pub 或 id_rsa.pub 即公钥
然后将公钥与远程服务器绑定即可。
绑定公钥
进阶:使用 ~/.ssh/config
服务器多起来后,每次 SSH 都要记 IP 和端口很麻烦。可以在 ~/.ssh/config 中为常用服务器设置别名:
配置后直接 ssh my-server 即可登录,不用再记 IP 和端口。
5 - VSCode 配置机制完整笔记
一、.vscode 目录概述
.vscode 是 VS Code 的项目级配置目录,定义"当 VS Code 打开这个项目时,该如何表现"。
常见文件结构
二、配置层级与覆盖机制
三层架构(优先级由低到高)
关键区别
| 文件 | 机制 | 行为 |
|---|---|---|
settings.json | 增量覆盖 | 只写3项 → 继承用户级其余7项 |
extensions.json | 全量清单 | 只写a,b,c → 只推荐a,b,c,不继承其他 |
launch.json | 全量配置 | 只显示配置的调试方案 |
tasks.json | 全量配置 | 只显示定义的任务 |
snippets/*.json | 全量配置 | 只提供定义的代码片段 |
示例对比
settings.json(增量)
extensions.json(全量)
三、配置存储位置
用户级配置
| 类型 | 路径(macOS/Linux) | 路径(Windows) |
|---|---|---|
| 设置文件 | ~/.config/Code/User/settings.json | %APPDATA%\Code\User\settings.json |
| 扩展目录 | ~/.vscode/extensions/ | %USERPROFILE%\.vscode\extensions\ |
| 快捷键 | ~/.config/Code/User/keybindings.json | 同左 |
| 代码片段 | ~/.config/Code/User/snippets/ | 同左 |
项目级配置
- 位置:
.vscode/目录下 - 作用范围:仅当前项目
- 版本控制:应提交到 Git,确保团队一致
四、扩展管理
用户级 vs 项目级
| 级别 | 存储位置 | 特点 |
|---|---|---|
| 用户级扩展 | ~/.vscode/extensions/ | 所有项目共享,物理安装在此 |
| 项目级推荐 | .vscode/extensions.json | 仅提示安装,不自动部署 |
| 真正隔离 | Dev Container | 容器内独立安装扩展 |
扩展推荐配置
多项目扩展隔离方案
场景:项目A用a,b,c,项目B用d,e,f,其他项目用a,b,c,d
| 方案 | 实现方式 | 适用场景 |
|---|---|---|
| 简单推荐 | extensions.json 分别配置 | 只是提示,不强制 |
| 禁用配置 | settings.json 中禁用对方扩展 | 扩展有冲突时 |
| 彻底隔离 | --user-data-dir 启动独立实例 | 需要完全隔离 |
五、跨平台路径处理
核心原则
能用相对不用绝对,能用变量不用字符串
内置变量
| 变量 | 含义 | 跨平台效果 |
|---|---|---|
${workspaceFolder} | 项目根目录 | 自动适配 Windows/macOS/Linux 路径格式 |
${userHome} | 用户主目录 | Windows: C:\Users\123, macOS: /Users/123 |
${workspaceFolderBasename} | 项目文件夹名 | 如 project |
${env:NAME} | 环境变量 | 如 ${env:HOME} |
正确 vs 错误示例
特殊情况处理
如果路径完全无关(如 Windows D:\project1\123 vs macOS Documents/project1/123):
| 方案 | 做法 |
|---|---|
| 推荐 | 把系统特定路径放用户级 settings.json,项目级保持通用 |
| 备选 | 使用环境变量 ${env:PROJECT1_PATH} |
| 避免 | 硬编码不同系统的绝对路径到项目配置 |
六、VS Code 设置同步
同步内容
- ✅ 用户级
settings.json - ✅ 扩展列表(自动重新安装)
- ✅ 键盘快捷键
- ✅ 用户级代码片段
- ✅ UI 状态
不同步内容
- ❌ 项目级
.vscode/目录(需 Git 管理) - ❌ 扩展的本地数据/缓存
分工明确
| 机制 | 用途 |
|---|---|
| 设置同步 | 个人习惯跟着账号走(跨设备) |
.vscode + Git | 团队规范跟着代码走(跨成员) |
七、最佳实践总结
1. 配置原则
- 项目级(
.vscode/):放团队共享、通用、跨平台的配置 - 用户级(
~/settings.json):放个人偏好、系统特定的配置
2. 路径原则
- 优先使用
${workspaceFolder}(项目内) - 其次使用
${userHome}(用户目录) - 避免硬编码盘符(如
D:\、/Volumes/)
3. 扩展原则
- 项目必需的扩展 →
extensions.json推荐 - 个人辅助扩展 → 用户级安装,不同步到项目
4. 调试/任务原则
- 通用任务 →
.vscode/tasks.json(全量定义) - 个人调试习惯 → 用户级
launch.json
八、快速参考命令
| 操作 | 命令面板(Ctrl+Shift+P) |
|---|---|
| 打开用户级设置(UI) | Preferences: Open User Settings |
| 打开用户级设置(JSON) | Preferences: Open User Settings (JSON) |
| 打开工作区设置(JSON) | Preferences: Open Workspace Settings (JSON) |
| 打开扩展目录 | Extensions: Open Extensions Folder |
| 打开键盘快捷键 | Preferences: Open Keyboard Shortcuts (JSON) |
6 - MacOS 系统降级流程
本文介绍如何将 Intel 芯片的 MacOS 从 13.x 版本降级到 10.15 或 12.x 版本(已实测),其他版本仅供参考。
降级过程会格式化全部磁盘内容,请务必提前备份所有重要数据,并在多处进行备份!
参考链接
- 视频教程:经验分享|macOS|如何创建可引导的macOS安装器并重装macOS系统
- 官方文档:创建可引导的 macOS 安装器 - 官方 Apple 支持 (中国)
- 官方文档:如何下载和安装 macOS - 官方 Apple 支持 (中国)
MacOS 版本推荐
以下版本信息针对 2017 MacBook Pro 设备:
- Ventura 13——最后一个支持的版本
- Monterey 12——稳定性一般,兼容性较好
- Catalina 10.15——稳定性最佳,兼容性一般
操作步骤
1. 准备工作
- 备份所有重要数据
- 退出系统的 Apple ID
- 准备一个 14GB 以上的 USB 闪存盘
2. 下载 MacOS
- 在 本页面 通过 App Store 下载所需的系统版本(如 Monterey 12)
- 下载完毕后,若自动打开安装程序,直接关闭退出
- 确保应用程序文件夹内有名为
安装macOS Monterey的安装器
3. 创建 macOS 安装器
- 插入准备的 USB 闪存盘
- 使用系统自带的
磁盘工具应用,将其全盘抹掉并格式化:- 名称:
MyVolume(建议使用此名称,方便后续操作) - 格式:
Mac OS拓展(日志式)(是否区分大小写不影响)
- 名称:
- 启动终端,根据所需的系统版本输入命令(命令来源):
- Catalina:
sudo /Applications/Install\ macOS\ Catalina.app/Contents/Resources/createinstallmedia --volume /Volumes/MyVolume - Monterey:
sudo /Applications/Install\ macOS\ Monterey.app/Contents/Resources/createinstallmedia --volume /Volumes/MyVolume
- Catalina:
- 根据终端提示完成安装:
- 输入登录密码(输入时终端无字符提示)
- 输入
Y确认全部抹掉 USB 闪存盘(弹出允许终端访问可移动宗卷的提示时点击允许) - 耐心等待,过程较为漫长
- 安装完成后,USB 闪存盘名称将改为类似
Install macOS Monterey的名称
4. 启动 MacOS 安装程序
- 重启设备后,立刻按住
Option键,直到出现可引导安装器的宗卷(即Install macOS Monterey) - 通过方向键选择安装器(若无法启动,需确保“启动安全性实用工具”已设为允许从外部或可移动介质启动)
5. 安装 MacOS
- 进入安装器后,启动磁盘工具,抹掉内置的整个硬盘(通常被命名为
Macintosh HD):- 名称:
Macintosh HD - 格式:
APFS
- 名称:
- 关闭磁盘工具,返回选择
安装macOS Monterey - 选择安装到
Macintosh HD - 耐心等待,过程较为漫长
6. 完成安装
安装完成后,剩余步骤为初始化新的 MacOS 系统流程。
7 - Front Matter 规范
本站约定
title是唯一必填字段,没有它 Hugo 无法渲染页面。- 日期使用本站自定义的
created/updated字段,由hugo.yml的frontmatter映射到 Hugo 原生的date/lastmod。 updated一般不写——页面「最后修改」由:git(最后一次 commit 时间)自动填充;手动写updated才会覆盖。- 编辑器可能对
created/updated报 schema 错误,这是误报,勿改名(改名会破坏日期映射)。 - 字段取值优先级:页面 front matter → 上级
cascade→hugo.yml站点参数。
文章页字段
| 字段 | 作用 |
|---|---|
title | 必需。页面标题,Hugo 没有它无法渲染页面 |
created | 创建日期,YYYY-MM-DD,页面显示为「创建于」 |
tags | 标签数组,如 [Docker, NAS],Hugo 自动生成标签页 |
description | 页面描述,用于搜索结果与社交分享;不写则自动截取正文前 70 字 |
updated | 手动指定更新日期;不写则由最后一次 commit 时间自动填充 |
weight | 列表内排序,数字越小越靠前 |
draft | true 则页面不构建,hugo server --buildDrafts 下可见 |
OINK 主题常用字段
| 字段 | 作用 |
|---|---|
linkTitle | 短标题,用于侧栏、面包屑与翻页器(正文大标题不变) |
icon | Font Awesome 图标类(如 fa-solid fa-rocket),用于侧栏与栏目卡片 |
categories | 分类,与 tags 同为 taxonomy,Hugo 自动生成分类页 |
series | 系列名;series_weight 决定在系列中的顺序 |
images | 封面图,第一项兼作社交分享卡片 |
sidebar_enabled | false 隐藏左侧栏,独立页面常用 |
breadcrumb | false 隐藏面包屑导航;博客分区默认关,其余默认开 |
notoc | true 则不显示右栏页面目录 |
pager | false 关闭本页底部上一页/下一页 |
backlinks | false 隐藏右栏「反链」组(本站已在站点级开启) |
comments | 评论开关:站点级已关闭 |
aliases | 旧路径重定向到本页,页面改名时用于保住旧评论串与外链 |
完整字段表见 OINK Front Matter 官方文档。
文章页模板
索引页
各分区的 _index.md:
| 字段 | 作用 |
|---|---|
title | 必需。分区名称 |
description | 分区描述,用于栏目卡片与 SEO |
weight | 该分区在父级列表中的排序 |
日期机制
hugo.yml 中配置了 front matter 的取值优先级:
- 创建日期:Hugo 从
created取值。 - 更新日期:默认由
:git自动填充(最后一次 commit 时间),如需手动指定,在 front matter 中写updated即可覆盖。
8 - 修复 Git 提交时间无法显示
问题现象
文章页面底部的"最后更新"时间始终不显示,检查 Hugo 模板发现 .GitInfo 和 .Lastmod 均为空值。
原因
当文件路径包含中文等非 ASCII 字符时(如 content/docs/实践笔记/Docker 重启策略详解.md),Git 默认会对路径做转义处理,导致 Hugo 的 Git 集成无法正确匹配文件路径,.GitInfo 返回 nil,.Lastmod 随之失效。
这是 Hugo 的已知问题,umlauts(ä、ö、ü)等路径也会触发。
解决方案
本地开发
在仓库根目录执行一次:
然后删除 .hugo_build.lock(缓存了旧状态),重新构建即可。
CI/CD 构建
.cnb.yml 中在 hugo 命令之前加上同一行:
验证
构建后检查页面 HTML,如果出现 hx:mt-12 而非 hx:mt-16,说明更新日期已正常显示。