# Linux 基本使用补充

上一篇：[[13 Apache Web 服务与应用管理]]
返回目录：[[Linux 学习指南]]
下一篇：[[15 Linux 进程间通信]]

> [!info] 来源
> 整理自 [[Linux基本使用]] 与 [[操作系统课程设计指导书]] 的第 4.2 节。与已有笔记重复的内容只保留为入口，避免同一知识多处维护。

## 学习入口

- [[01 Linux 基础认知与实验环境]]：登录、图形界面与实验环境。
- [[02 终端、Shell 与 Vim]]：终端、Tab 补全、`man`、Vim。
- [[03 文件系统、路径与文件操作]]：路径和文件操作。
- [[06 进程、服务、计划任务与日志]]：`ps`、`pstree`、`top` 与进程管理。
- [[10 GCC 与 Makefile]]：GCC 编译流程与多文件编译。
- [[11 GDB 调试器]]：断点、单步与堆栈调试。

## 高频命令速查

| 目的 | 命令 | 说明 |
| --- | --- | --- |
| 查看当前位置 | `pwd` | 输出当前工作目录的绝对路径 |
| 查看登录用户 | `who` / `who am i` | 查看当前登录会话 |
| 修改密码 | `passwd` | 普通用户通常只能修改自己的密码 |
| 查看进程快照 | `ps aux` / `ps -ef` | 前者便于按资源查看，后者便于查看父子关系 |
| 动态监控进程 | `top` | `q` 退出，`P` 按 CPU 排序，`M` 按内存排序 |
| 查看进程树 | `pstree -p` | 显示进程及 PID 的层级关系 |
| 查阅手册 | `man command` | `/关键词` 搜索，`n` 查找下一个，`q` 退出 |

## vi/Vim 最小闭环

```text
vim file.txt   # 打开或创建文件
i              # 进入插入模式
Esc            # 回到普通模式
:wq            # 保存并退出
```

- 普通模式：移动、删除、复制和粘贴。
- 插入模式：输入文本；`i` 在光标前插入，`a` 在光标后插入，`o` 在下一行插入。
- 命令模式：`:w` 保存，`:q` 退出，`:q!` 放弃修改并退出。

## GCC 编译流程

```bash
gcc -Wall -g -o app main.c
./app
gcc -E main.c -o main.i  # 预处理
gcc -S main.c -o main.s  # 编译为汇编
gcc -c main.c -o main.o  # 编译并汇编为目标文件
```

典型流程是：预处理 -> 编译 -> 汇编 -> 链接。`-g` 为 GDB 生成调试信息；`-o` 指定输出文件；`-Wall` 打开常用警告。多文件程序可以直接使用 `gcc -o app main.c message.c`，或先分别生成 `.o` 再链接。

## 安全提醒

- `sudo`、`passwd -d`、`rm -rf` 等命令会改变系统状态，执行前确认目标和权限。
- `ps` 是瞬时快照；需要持续观察时使用 `top` 或其他监控工具。
- `exit` 退出当前 Shell，不等于关机；关机或重启应使用系统管理命令并确认权限。
