---
url: https://ain.hmgf.hxcn.space/lectures/lesson5-linux.md
---
# 讲座：Linux 基础入门

***

## 一、为什么要学 Linux

今天要讲的不是某个单独的软件，而是一套操作系统。它负责管理 CPU、内存、磁盘这些硬件资源，也负责让各种软件正常运行。

* **Linux 的起源**：它最初由芬兰人 **林纳斯·托瓦兹**（Linus Torvalds）在赫尔辛基大学读书时编写出内核。

* **核心优势**：相比 Windows，Linux 通常更轻量，资源利用率更高，也更方便按需要做定制。

* **广泛的应用**：它是自由传播的类 Unix 系统，支撑着全球 **90% 以上**的互联网服务器，在 AI、云计算和现代软件开发工具链里也很常见。很多开发环境、服务器和竞赛训练环境都离不开它。

***

## 二、准备工作和一个重要观念

### 1. 环境搭建：虚拟机 (VMware)

正式上手前，先准备一个实验环境。用虚拟机软件（如 **VMware**），可以在现有的 Windows 系统里模拟出一台独立电脑，再在里面安装 Linux。

* **优点**：虚拟机和宿主系统是隔离的。就算你把系统折腾坏了，也能靠“快照”恢复到之前的状态。

### 2. 核心哲学：“一切皆文件”

这是 Linux 里很重要的一个设计思路。

* **统一接口**：Linux 会把硬盘、键盘、系统状态等对象都抽象成“文件”，这样很多东西都能用同一套方式处理。

* **透明性**：很多系统信息都能通过查看对应文件拿到，这让排查问题和写程序都方便不少。

***

## 三、指令实战：常用命令

这部分是今天的重点。Linux 很多操作都在命令行里完成。

### 1. 基础生存指令（定位与查看）

| **命令**  | **全称**                | **功能描述**                  |
| --------- | ----------------------- | ----------------------------- |
| **`pwd`** | Print Working Directory | 打印当前工作目录的完整路径。 |
| **`ls`**  | List files              | 列出目录内容及文件名。 |
| **`cd`**  | Change directory        | 切换工作目录。 |
| **`man`** | Manual                  | 查看命令的参考手册。 |

* **`ls` 常用参数**：
  * `ls -a`：显示所有文件，包括以 `.` 开头的隐藏文件。
  * `ls -l`：以长格式显示文件权限、所有者、大小等信息。
* **路径概念**：
  * **绝对路径**：以 `/` 开头，起点是根目录。
  * **相对路径**：不以 `/` 开头，起点是当前所在目录。
  * `cd ..`：回到上一级目录。

### 2. 文与目录操作

* **`touch`**：创建空文件，或者更新文件时间属性。
* **`mkdir`**：创建目录。
* **`cp` (Copy)**：复制文件或目录。
* **`mv` (Move)**：移动文件或目录，也常用来**重命名**。
* **`rm` (Remove)**：删除文件或目录。**注意：Linux 没有回收站，删之前先确认。**
* **`ln` (Link)**：创建链接文件，类似 Windows 里的快捷方式。
* **读取内容**：
  * `cat`：从第一行开始正向读取并输出内容。
  * `tac`：从最后一行开始反向读取内容。

### 3. 权限与身份管理

Linux 是多用户系统，每个文件都有自己的权限位，例如 `-rwxr-xr--`。

* **权限解析**：
  * **第 1 位**：类型（`-` 为文件，`d` 为目录）。
  * **2-4 位**：所有者权限。
  * **5-7 位**：所属组权限。
  * **8-10 位**：其他用户权限。
* **`chmod`（修改权限）**：
  * **数字模式**：读(4)、写(2)、执行(1)。
  * *示例*：`chmod 777 filename` 代表给所有人读、写、执行权限。
* **身份指令**：
  * `useradd` / `userdel`：添加或删除系统用户。
  * `whoami`：查看当前登录用户名。

### 4. 软件管理与效率工具

* **`sudo`**：临时获取超级用户权限，用来执行需要更高权限的操作。

* **`apt`**：常用包管理器。输入 `sudo apt install [软件名]` 就可以安装软件。

* **`alias`**：给命令起简短别名，例如 `alias mk=mkdir`；用 `unalias` 取消别名。

* **趣味互动**：可以试试 `sudo apt install sl`，装一个会在终端里跑的小火车。

***

## 四、进阶工具：Vim

Vim 是很多程序员常用的文本编辑器，功能很多，上手门槛也不低。

> **提示**：刚接触 Vim 时大概率会不习惯，但把基本操作记住后，改文件会很顺手。

**三步走实战**：

1. **进入**：输入 `vim hello.c` 进入编辑器。
2. **编辑**：按 **`i` 键** 进入编辑模式编写代码。
3. **保存**：按 **Esc** 键，随后输入 **`:wq`**（冒号、w、q）保存并退出 。

**编译运行**：使用 `gcc hello.c -o hello` 编译，然后输入 `./hello` 执行程序。

***

## 五、遇到问题怎么办

学 Linux 时遇到报错很正常。比起死记命令，更重要的是会看问题、会排查。

1. **先看报错**：不要一报错就慌，很多时候提示信息已经把问题写明白了。
2. **再去搜索**：优先用 Google 或必应。百度广告多、信息杂；CSDN 也别无脑照抄，先判断文章是不是过时。
3. **善用 AI**：把报错日志、命令和环境信息一起给 AI，通常比只扔一句“跑不起来”有效得多。
4. **提问说清楚**：请教别人时，把系统环境、软件版本、执行过的命令和报错内容一起发出来，最好再带截图。

***

## 六、结语

这 40 分钟只能带大家先把门推开。后面真正有用的部分，还是自己多敲命令、多踩坑、多总结。先把常用命令练熟，后面的环境配置、开发和运维才会轻松很多。
