12
12
13
13
### 1. [ tmux:会话管理魔法] ( https://github.com/tmux/tmux )
14
14
15
+ ** 适用场景** :当你在服务器上工作时突然断网,所有任务都会丢失?tmux 能解决这个问题!
16
+
15
17
1 . 前置知识:窗口与会话
18
+
19
+ 许多初学者容易混淆终端、控制台、shell 和解释器这几个概念。我们来简单区分一下:
20
+
21
+ ** 终端(Terminal)** :是你看到的黑色窗口,允许你输入命令的界面。
22
+ ** Shell(壳程序)** :是一个命令解释器,运行在终端内,比如常见的 ` bash ` 、` zsh ` 。
23
+ ** 会话(Session)** :是 shell 或程序运行的实例,比如你登录系统后打开一个终端窗口,它就是一个会话。
16
24
17
- 简单来说,无论是使用 SSH 还是 Linux 桌面自带的命令行,你所看到的那个黑色的“框框”便是一个窗口;在窗口中,运行了一个 shell 解释器(bash,sh,zsh 等等)或者其他应用程序,每个运行的程序进程被称为一个“会话”。
25
+ !!! note
26
+ Shell 本身是一个程序,它负责解析你输入的命令并交由系统执行。不同的 shell 功能略有差异,比如 ` bash ` 是默认的,` zsh ` 更强大。
18
27
19
- !!! note
20
- 何为"解释器"?解释器是一个交互的,实时运行的命令环境。解释器可以使用很多语言,如 shell、powershell 和 python。
28
+ !!! note
29
+ 何为"解释器"?解释器是一个交互的,实时运行的命令环境。解释器可以使用很多语言,如 shell、powershell 和 python。
21
30
22
31
很多同学可能会认为"解释器是操作系统的一部分",这实际上是不准确的:在 Linux 中,各发行版通常都预装了一个解释器,但我们也完全可以自行安装更好的解释器。在 Windows 中,系统的确提供了一个底层解释器 cmd,但用户也可以选择使用 PowerShell、Git Bash 等其他解释器。
23
32
30
39
- 分离会话并在稍后重新连接,即在后台运行任务
31
40
- 创建分屏布局,同时查看多个会话
32
41
42
+ ``` mermaid
43
+ graph LR
44
+ A[SSH 连接] --> B[tmux 会话]
45
+ B --> C[关闭 SSH]
46
+ C --> D[重新连接]
47
+ D --> E[恢复工作状态]
48
+ ```
49
+
33
50
3 . tmux 的基本概念
34
51
35
52
tmux 有三个重要概念:
38
55
- ** 窗口(Window)** :类似于浏览器的标签页,每个窗口包含一个或多个窗格
39
56
- ** 窗格(Pane)** :窗口的分割部分,每个窗格运行一个 shell
40
57
58
+ !!! tip "新手理解"
59
+ 想象你正在用浏览器:
60
+
61
+ **窗口** = 浏览器窗口
62
+ **标签页** = tmux 的窗口 (Window)
63
+ **分屏浏览** = tmux 的窗格 (Pane)
64
+ **会话** = 保存所有标签页和分屏的完整工作状
65
+
41
66
当我们使用不带任何参数的` tmux ` 时,tmux 会为我们创建一个新的** 会话** ,这个会话中有一个** 窗口** ,窗口中有一个** 窗格** 。
42
67
43
68
我们可以通过 tmux 会话下方的信息条查看该会话中** 窗口** 的数量和名称。
70
95
tmux detach
71
96
```
72
97
98
+ !!! tip "什么是分离会话?"
99
+ 想象你在办公室工作到一半需要离开:
100
+ 1. 把文件留在桌上(分离会话)= ` Ctrl+b d `
101
+ 2. 下班回家(断开SSH)
102
+ 3. 第二天回来(重新连接SSH)
103
+ 4. 坐回桌前继续工作(连接会话)= ` tmux attach `
104
+ 你的工作状态完全保留,就像从未离开过!
105
+
106
+ !!! tip "重要提示"
107
+ tmux 的所有快捷键都需要先按** 前缀键** (默认是` Ctrl+b ` ),然后松开,再按功能键。例如:
108
+ - 分屏:先按` Ctrl+b ` ,松开,再按` % ` (垂直)或` " ` (水平)
109
+ - 切换窗口:先按` Ctrl+b ` ,松开,再按数字键` 0-9 `
110
+
111
+ 记忆技巧:把`Ctrl+b`想象成"告诉tmux我要发命令了"
112
+
73
113
以下是对** 窗格** 的操作快捷键:
74
114
75
115
- ` Ctrl+b + % ` :垂直分屏
87
127
- ` Ctrl+b + , ` :重命名窗口
88
128
- ` Ctrl+b + & ` :关闭当前窗口
89
129
90
- !!! example
91
- 如果我们想创建一个如下布局的窗口,我们需要执行以下操作:
92
- ![ tmux 示例] ( ../../assets/tmux_example.png )
130
+ !!! example
131
+ 如果我们想创建一个如下布局的窗口,我们需要执行以下操作:
132
+ ![ tmux 示例] ( ../../assets/tmux_example.png )
93
133
94
- ``` bash
95
- tmux # 进入 tmux 环境
134
+ ```bash
135
+ tmux # 进入 tmux 环境
96
136
97
- # Ctrl+b % 创建垂直分屏
98
- # Ctrl+b " 创建水平分屏
99
- # Ctrl+b ← 返回最初始的分屏
137
+ # Ctrl+b % 创建垂直分屏
138
+ # Ctrl+b " 创建水平分屏
139
+ # Ctrl+b ← 返回最初始的分屏
140
+ ```
100
141
101
- ```
142
+ !!! bug "新手常见问题"
143
+ 断开后如何恢复?
144
+
145
+ ```bash
146
+ # 列出所有会话
147
+ tmux ls
148
+ # 重新连接
149
+ tmux attach -t work
150
+ ```
102
151
103
152
### 2. [ Oh My Zsh:实用的 shell 解释器框架] ( https://ohmyz.sh/ )
104
153
105
- Oh My Zsh 是一个开源的、社区驱动的框架,用于管理 Zsh 配置。它提供了数百个插件和主题,让你的命令行体验更加强大和美观。
154
+ Oh My Zsh 是一个开源的、社区驱动的框架,用于管理 Zsh 配置。它提供了数百个插件和主题,让你的命令行体验更加强大和美观。同时自带错误纠正和智能提示。
106
155
107
156
1 . Oh My Zsh 的作用
108
157
@@ -139,6 +188,24 @@ Oh My Zsh 是一个开源的、社区驱动的框架,用于管理 Zsh 配置
139
188
140
189
3 . 实用插件推荐
141
190
191
+ 要启用插件,需要编辑 Zsh 配置文件:
192
+
193
+ ``` bash
194
+ nano ~ /.zshrc
195
+ ```
196
+
197
+ 找到 plugins=(git) 这行,添加你想要的插件:
198
+
199
+ ``` bash
200
+ plugins=(git sudo z extract autojump)
201
+ ```
202
+
203
+ 保存后运行:
204
+
205
+ ``` bash
206
+ source ~ /.zshrc
207
+ ```
208
+
142
209
``` bash
143
210
omz plugin list # 查看插件列表
144
211
@@ -149,11 +216,13 @@ Oh My Zsh 是一个开源的、社区驱动的框架,用于管理 Zsh 配置
149
216
150
217
常用插件介绍:
151
218
152
- - ** git** :提供 git 命令的别名和补全
153
- - ** sudo** :双击 ESC 键自动在命令前添加 sudo
154
- - ** z** :快速跳转到常访问的目录
155
- - ** extract** :智能解压各种格式的压缩文件
156
- - ** autojump** :基于历史记录的目录跳转
219
+ | 插件 | 功能 | 使用示例 |
220
+ | ------------| ------| ----------|
221
+ | ** git** | 提供 git 别名 | 输入` gst ` = ` git status ` <br >` gco main ` = ` git checkout main ` |
222
+ | ** sudo** | 快速提权 | 输入` apt update ` → 按两次` ESC ` → 自动变成` sudo apt update ` |
223
+ | ** z** | 目录跳转 | ` z doc ` → 跳转到` ~/Documents ` <br >` z down ` → 跳转到` ~/Downloads ` |
224
+ | ** extract** | 智能解压 | ` extract archive.zip ` 自动识别解压<br >` extract file.tar.gz ` 自动解压 |
225
+ | ** autojump** | 历史跳转 | ` j proj ` → 跳转到最近访问的包含"proj"的目录 |
157
226
158
227
4 . 主题配置
159
228
@@ -183,16 +252,16 @@ Oh My Zsh 是一个开源的、社区驱动的框架,用于管理 Zsh 配置
183
252
- ** Tab 补全** :支持文件名、命令、参数的智能补全
184
253
- ** 目录补全** :输入目录名的一部分,按 Tab 键自动补全
185
254
186
- !!! tip
187
- 配置完成后,重新加载配置文件:
255
+ !!! tip
256
+ 配置完成后,重新加载配置文件:
188
257
189
- ``` bash
190
- source ~ /.zshrc
191
- ```
258
+ ```bash
259
+ source ~/.zshrc
260
+ ```
192
261
193
262
### 3. [ uv:Python 包管理利器] ( https://github.com/astral-sh/uv )
194
263
195
- uv 是一个极快的 Python 包管理器和项目管理工具,由 Rust 编写,旨在替代或补充 pip、pipenv 等传统工具。
264
+ uv 是一个极快的 Python 包管理器和项目管理工具,由 Rust 编写,旨在替代或补充 pip、pipenv 等传统工具。其解决了 Python 包安装慢/冲突多的痛点。
196
265
197
266
1 . uv 的优势
198
267
@@ -205,6 +274,22 @@ uv 是一个极快的 Python 包管理器和项目管理工具,由 Rust 编写
205
274
206
275
2 . 安装和基本使用
207
276
277
+ !!! note "虚拟环境就像隔离的工作区"
278
+ - 想象你有两个项目:项目 A 需要 Python 3.8,项目 B 需要 Python 3.11
279
+ - 虚拟环境就是独立的"工作房间":
280
+
281
+ ```bash
282
+ uv venv projA-env # 创建 A 项目的房间
283
+ source projA-env/bin/activate # 进入 A 房间
284
+ uv add numpy==1.21 # 在 A 房间安装特定版本
285
+
286
+ uv venv projB-env # 创建 B 项目的房间
287
+ source projB-env/bin/activate # 进入 B 房间
288
+ uv add numpy==1.25 # 在 B 房间安装新版
289
+ ```
290
+
291
+ - 两个项目完全隔离,不会互相干扰!
292
+
208
293
安装 uv:
209
294
210
295
``` bash
@@ -301,13 +386,22 @@ btop 是一个漂亮且功能丰富的系统资源监视器,用于显示处理
301
386
302
387
4 . 常用快捷键
303
388
304
- - ` q ` :退出 btop
305
- - ` h ` :显示帮助
306
- - ` ↑/↓ ` :在进程列表中导航
307
- - ` F5 ` :选择排序方式
308
- - ` t ` :切换进程树视图
309
- - ` k ` :终止选中的进程
310
- - ` +/- ` :增加/减少更新间隔
389
+ | 按键 | 功能 | 新手用途 |
390
+ | ---------------| ---------------------| ------------------------------|
391
+ | ` q ` | 退出 btop | 关闭监控程序 |
392
+ | ` h ` 或 ` F1 ` | 显示帮助 | 查看完整快捷键指南 |
393
+ | ` ↑/↓ ` | 在进程列表中导航 | 上下移动选择进程 |
394
+ | ` F5 ` | 选择排序方式 | 按 CPU/内存/进程 ID 等排序 |
395
+ | ` t ` | 切换进程树视图 | 显示进程父子关系 |
396
+ | ` k ` | 终止选中的进程 | 结束卡死的程序 |
397
+ | ` + ` | 增加更新间隔 | 减慢刷新速度(节省资源) |
398
+ | ` - ` | 减少更新间隔 | 加快刷新速度(实时监控) |
399
+ | ` p ` | 进程管理 | 查看所有运行中的程序 |
400
+ | ` s ` | 磁盘监控 | 检查硬盘使用情况 |
401
+ | ` n ` | 网络监控 | 查看网络流量和连接 |
402
+ | ` ESC ` | 返回上级 | 退出当前菜单或操作 |
403
+ | ` 1-9 ` | 切换监控页面 | 快速查看不同资源(CPU/内存等)|
404
+ | ` TAB ` | 切换主区域 | 在进程列表和资源图表间切换 |
311
405
312
406
### 5. [ tldr:通俗易懂的 man] ( https://github.com/tldr-pages/tldr )
313
407
@@ -372,8 +466,8 @@ tldr(Too Long; Didn't Read)是一个社区维护的帮助页面集合,旨
372
466
# 输出:基本的 git 操作示例
373
467
```
374
468
375
- !!! tip
376
- 当你忘记某个命令的具体用法时,先试试` tldr ` ,它通常能比` man ` 更快地给你想要的答案。
469
+ !!! tip
470
+ 当你忘记某个命令的具体用法时,先试试` tldr ` ,它通常能比` man ` 更快地给你想要的答案。
377
471
378
472
### 6. [ better-commits:优雅的 Git 提交助手] ( https://github.com/Everduin94/better-commits )
379
473
@@ -419,11 +513,25 @@ better-commits 是一个交互式的 Git 提交工具,帮助开发者编写更
419
513
420
514
运行 ` bc ` 后,工具会引导你完成以下步骤:
421
515
422
- - ** 选择提交类型** :feat(新功能)、fix(修复)、docs(文档)等
423
- - ** 输入作用域** :变更影响的模块或组件(可选)
424
- - ** 编写描述** :简洁明了的变更描述
425
- - ** 详细说明** :更详细的变更内容(可选)
426
- - ** 破坏性变更** :是否包含不兼容变更(可选)
516
+ ** 选择提交类型** :
517
+ - 使用↑↓箭头选择,Enter 确认
518
+ - 最常用:` feat ` (新功能), ` fix ` (修复)
519
+
520
+ ** 输入作用域** (可选):
521
+ - 输入模块名如` login ` , ` payment `
522
+ - 按 Enter 跳过
523
+
524
+ ** 编写简短描述** :
525
+ - 要求:首字母小写,不加句号
526
+ - 示例:"add password validation"
527
+
528
+ ** 详细说明** (可选):
529
+ - 解释为什么做这个修改
530
+ - 按 Ctrl+D 结束输入
531
+
532
+ ** 破坏性变更确认** :
533
+ - 只有重大变更才选 Yes
534
+ - 会自动添加` ! ` 标记
427
535
428
536
5 . 配置自定义
429
537
@@ -449,9 +557,50 @@ better-commits 是一个交互式的 Git 提交工具,帮助开发者编写更
449
557
}
450
558
```
451
559
452
- !!! tip
453
- 使用 better-commits 可以让团队的 Git 提交历史更加规范,便于生成变更日志和版本发布说明。
560
+ !!! tip
561
+ 使用 better-commits 可以让团队的 Git 提交历史更加规范,便于生成变更日志和版本发布说明。
562
+
563
+ ``` mermaid
564
+ sequenceDiagram
565
+ participant 开发者
566
+ participant better-commits
567
+ 开发者->>better-commits: 输入 bc
568
+ better-commits-->>开发者: 引导选择提交类型
569
+ 开发者->>better-commits: 选择 feat (新功能)
570
+ better-commits-->>开发者: 提示输入描述
571
+ 开发者->>better-commits: 输入「添加登录功能」
572
+ better-commits->>Git: 生成标准提交: feat: 添加登录功能
573
+ ```
574
+
575
+ ## 工具选择流程图
576
+
577
+ ``` mermaid
578
+ graph TD
579
+ A[需要哪类工具?]
580
+ A --> B{防止工作丢失}
581
+ A --> C{美化/增强终端}
582
+ A --> D{Python开发}
583
+ A --> E{系统监控}
584
+ A --> F{命令帮助}
585
+ A --> G{Git提交}
586
+
587
+ B --> H[tmux]
588
+ C --> I[Oh My Zsh]
589
+ D --> J[uv]
590
+ E --> K[btop]
591
+ F --> L[tldr]
592
+ G --> M[better-commits]
593
+
594
+ style H fill:#9f9,stroke:#333
595
+ style I fill:#9f9,stroke:#333
596
+ style J fill:#9f9,stroke:#333
597
+ style K fill:#9f9,stroke:#333
598
+ style L fill:#9f9,stroke:#333
599
+ style M fill:#9f9,stroke:#333
600
+ ```
454
601
455
602
## 参考资料
456
603
457
604
- [ Tmux 使用教程] ( https://www.ruanyifeng.com/blog/2019/10/tmux.html )
605
+ - [ Linux 新手生存指南] ( https://linuxnewbieguide.org )
606
+ - [ 命令行艺术] ( https://github.com/jlevy/the-art-of-command-line )
0 commit comments