第 1 章 操作系统概述
1.1 认识操作系统
核心结论:
操作系统是计算机系统中最基础的软件,位于硬件之上,承担着资源管理与控制、为用户构建操作接口和运行环境的核心职责。
关键知识点:
计算机系统的资源可分为两大类:硬件资源(如 CPU、内存、外部设备)和信息资源(主要指文件数据)。
从不同角度理解操作系统:
- 作为资源管理者,负责协调和分配系统资源;
- 作为用户接口,隐藏底层硬件复杂性,提供易于使用的抽象计算平台;
- 作为系统基石,支撑上层各类软件的正常运行。
操作系统具备五大基本功能:
- 处理器管理:对 CPU 进行任务调度与分配;
- 存储器管理:合理分配内存空间,提供保护机制,并支持虚拟内存等扩展技术;
- 设备管理:统一控制输入输出设备,屏蔽具体操作细节;
- 文件管理:组织和管理存储在磁盘上的文件,实现共享与安全访问;
- 用户接口:提供命令行、图形界面以及程序调用接口供用户交互。
1.2 操作系统的发展与现状
核心结论:
操作系统的发展历程与硬件技术进步密切相关,经历了多个阶段的演进,逐步形成多样化的分类体系,以满足不同应用场景的需求。
关键知识点:
发展阶段划分如下:
- 第一代(电子管时代):尚无操作系统概念,采用手工操作或简单批处理方式,效率非常低下;
- 第二代(晶体管时代):出现批处理系统(监督程序雏形),以及执行程序系统,利用中断和通道技术实现 CPU 与外设并行工作;
- 第三代(集成电路时代):引入多道批处理提升资源利用率,分时系统支持多用户交互使用,实时系统则用于需要快速响应的工业控制场景;
- 第四代(大规模集成电路时代):个人计算机兴起,诞生了 PC 操作系统(单用户多任务、图形化界面),同时网络操作系统支持资源共享,嵌入式操作系统广泛应用于移动设备和智能控制系统。
常见的分类方式包括:
- 按处理模式划分:多道批处理系统(注重吞吐量,常见于大型主机)、分时系统(强调交互性,如 UNIX)、实时系统(要求限时响应,适用于航空航天等领域);
- 按规模与用途划分:主机操作系统(高可靠性、高性能)、通用操作系统(结合分时与批处理特性,适合服务器环境)、个人操作系统(强调易用性,代表有 Windows、Mac OS、Android);
- 按体系结构划分:网络操作系统(具备网络通信能力)、分布式操作系统(多个节点协同完成任务)、嵌入式操作系统(体积小、高效可靠,如 iOS、嵌入式 Linux)。
1.3 Linux 操作系统概述
核心结论:
Linux 是一种基于 UNIX 架构设计的开源自由操作系统,继承了 UNIX 的稳定性与高效性,已在服务器、桌面、嵌入式等多个领域广泛应用。
关键知识点:

Linux 的发展背景涉及多个重要因素:
- UNIX 系统采用 C 语言编写,源码公开,奠定了可移植性的基础;
- Minix 是一个教学用微型 UNIX 系统,启发了 Linux 的设计理念;
- Internet 的普及促进了全球开发者的协作;
- GNU 计划致力于推动自由软件运动,提供了大量核心工具(如 gcc、gdb),为 Linux 成熟奠定基础。
发展历程简述:
1991 年,Linus Torvalds 发布 Linux 内核 0.01 版;
1994 年发布 1.0 版本,正式遵循 GPL 开源协议;
1996 年 2.0 版推出后进入实用阶段,随后获得企业界广泛支持并迅速推广。
核心特点包括:
- 继承 UNIX 设计理念,系统稳定可靠;
- 遵循 GPL 协议,代码完全开放,允许自由修改与分发;
- 符合 POSIX 标准,具有良好兼容性;
- 可移植性强,大部分内核代码由 C 语言实现,便于跨平台移植;
- 内建强大的网络功能,性能优越;
- 安全机制完善,权限控制严格,漏洞修复响应迅速。
Linux 系统主要由三部分组成:
- 内核(Kernel):最核心的部分,直接管理硬件资源并调度程序运行;
- Shell:命令解释器,作为用户与系统之间的交互界面;
- 文件系统:组织和存储文件的层次结构集合。
版本类型说明:
- 内核版本格式为“主版本号.次版本号.修订号”,其中主版本和次版本标识核心系列,修订号表示补丁更新或驱动增强;
- 发行版本是在内核基础上集成图形界面、工具链及应用软件的完整操作系统发行包。主流发行版包括:
Red Hat 系列:RHEL、CentOS、Fedora(企业级推荐 RHEL/CentOS);
Debian 系列:Debian、Ubuntu、Linux Mint(初学者推荐 Ubuntu 或 Mint);
SUSE 系列:SUSE Linux Enterprise、openSUSE。
不同发行版针对不同用户群体进行优化配置。
第 2 章 Linux 操作基础
2.1 Linux 基本操作
核心结论:
Linux 是一个多用户多任务系统,必须通过身份认证登录才能使用,基本操作涵盖登录、密码修改、退出、关机与重启等日常维护动作。
关键知识点:
终端的类型可以从多个维度区分:
- 显示模式:字符终端(仅显示文本)与图形终端(支持窗口与鼠标操作);
- 连接方式:本地终端(物理连接的控制台)与远程终端(通过网络接入);
- 实现形式:物理终端、虚拟终端(通过 Ctrl+Alt+F1~F12 切换,最多可达 12 个)以及伪终端(图形环境中模拟的命令行终端,如 GNOME Terminal)。
登录方式主要包括:
- 本地登录:可通过虚拟终端进入字符或图形界面,支持同一用户在多个终端同时登录;
- 远程登录:使用 ssh 协议连接远程主机,借助仿真终端工具(例如 PuTTY)实现访问。
登录流程通常为:
login: 输入用户名
password: 输入对应口令(输入过程不显示字符)
常用核心操作命令:
- 修改密码:使用 passwd 命令,系统提示输入新密码并确认;
- 退出当前会话:执行 logout 命令或按下 Ctrl + D 快捷键;
- 关闭系统:运行 shutdown now 命令(需 root 权限,但桌面版通常允许普通用户执行);
- 重启系统:输入 reboot 命令即可。
2.2 Linux 命令
核心结论:
所有 Linux 命令均由 Shell 解释执行,掌握命令的基本语法结构、输入方法以及获取帮助的方式,是熟练使用 Linux 系统的前提。
关键知识点:
命令的标准格式为:
命令名 [选项] [参数]
其中,选项用于调整命令行为:
- 单字符选项以前缀 “-” 表示(如 -l);
- 多字符选项使用 “--” 开头(如 --help);
- 多个单字符选项可以合并书写(如 ls -la 等价于 ls -l -a)。
参数则是命令作用的对象(如文件名、目录路径等)。
命令的输入与执行过程:
用户在 Shell 提示符后输入完整命令,按回车键提交,Shell 将解析命令并调用相应程序执行。若命令不存在或语法错误,将返回错误信息。可通过 history 查看历史命令记录,使用上下箭头快速调用。

编辑快捷键说明:
- Backspace 或 Delete:用于删除字符。
- Tab:实现命令自动补齐功能。
- 上下方向键:浏览历史输入的命令记录。
运行控制相关按键:
- Enter:提交并执行当前命令。
- Ctrl + c:中断正在运行的程序或命令。
- Ctrl + s:暂停屏幕滚动输出。
基础常用命令一览:
- who:列出当前已登录系统的用户信息。使用 -H 参数可显示表头,-q 参数则仅统计在线用户数量。
- echo:输出指定字符串内容。添加 -n 选项可禁止换行输出;若字符串中包含空格,需用引号包裹。
- date:查看或设置系统时间,支持自定义格式化输出,例如使用 +%Y-%m-%d %T 显示为“年-月-日 时:分:秒”格式。
- cal:显示日历信息,可通过参数指定具体月份和年份,如 cal 2 2024 可显示2024年2月的日历。
获取帮助的方式:
- --help 选项:多数命令支持此参数以展示简要使用说明(例如 date --help)。
- man 命令:查阅详细的联机手册页,按 q 键退出查看界面,输入 /关键字 可进行文本搜索。
- info 命令:用于浏览结构化的超文本帮助文档,提供更丰富的交互式帮助内容。
2.3 Linux 文件系统操作核心要点
总体结论:Linux 的文件体系基于树状层级结构,掌握文件与目录的基本操作是使用系统的基础,重点包括命名规范、权限机制及关键命令的熟练运用。
文件命名规则:
- 文件名最大长度为255个字符。
- 允许使用的字符包括字母、数字以及下划线 "_"、连字符 "-" 和点 "."。
- 以 "." 开头的文件被视为隐藏文件。
- 禁止使用斜杠 "/" 和空字符;建议避免在文件名中使用空格、分号 ";"、小于号 "<" 等具有特殊含义的 Shell 元字符。
- 名称严格区分大小写,例如 Readme 与 readme 被视为两个不同的文件。
通配符匹配规则:
- ?:匹配任意单个字符。例如 abc?? 可匹配 abc12、abcA9 等形式。
- *:匹配零个或多个任意字符(但不包含以 "." 开头的隐含文件前缀)。例如 *abc 表示所有以 abc 结尾的文件。
- []:用于匹配括号内的任意一个字符。如 [abc] 匹配 a、b 或 c;[a-z] 匹配任意小写字母;[!A-Z] 表示非大写字母的字符。
文件类型分类:
- - :普通文件(如文本、二进制程序等)
- d :目录文件
- c :字符设备文件(如终端设备)
- b :块设备文件(如硬盘分区)
- l :符号链接文件(软链接)
- p :管道文件(用于进程间通信)
文件归属与访问权限:
每个文件都具有两种归属属性:
- 属主:即文件的所有者用户。
- 属组:文件所属的用户组。
三种基本权限:
- r(读):对文件表示可读取内容;对目录表示可列出其中的文件列表。
- w(写):对文件表示可修改内容;对目录表示可在其中创建、删除或重命名文件。
- x(执行):对文件表示可作为程序运行;对目录表示可进入该目录。
- -:表示无对应权限。
权限适用对象分为四类:
- u(属主)、g(组用户)、o(其他用户)、a(所有用户)。
权限表示方式有两种:
- 字符形式:由文件类型和三组权限组成,例如 drwxr-xr-- 表示一个目录,属主有全部权限,组用户和其他用户仅有读和执行权限。
- 数字形式:r=4,w=2,x=1,组合相加得到权限值。例如 755 对应 rwxr-xr-x。
目录结构基础:
- /:根目录,整个文件系统的顶层起点,所有路径均由此展开。
- .:代表当前所在目录。
- ..:代表上级目录(父目录)。
- ~ 或 /home/用户名:表示用户的主目录。
- 绝对路径:从根目录开始的完整路径,如 /home/cherry/project。
- 相对路径:相对于当前目录的位置,如 ./project 或 ../data。
常用目录管理命令:
- pwd:打印当前工作目录的绝对路径。
- cd:切换当前目录。例如 cd ~ 进入用户主目录,cd .. 返回上一级目录。
- ls:列出目录内容。常用选项:-a 显示所有文件(含隐藏文件),-l 以长格式显示详细信息(权限、属主、大小、时间等),-R 递归显示子目录内容。
- mkdir:新建目录。-m 可设定初始权限,-p 支持创建多级嵌套目录。
- rmdir:删除空目录。配合 -p 可递归删除连续的空父目录。
常见文件操作命令:
- cat:显示文件全部内容。-n 添加行号,-s 合并连续的空白行为一行。
- more / less:分页查看大文件内容。more 使用空格翻页,less 支持上下箭头逐行滚动,功能更强大。
- cp:复制文件或目录。-i 在覆盖前提示确认,-r 递归复制整个目录结构,-b 自动备份将被覆盖的文件。
- rm:删除文件或目录。-i 提示确认操作,-r 递归删除目录及其内容,-f 强制删除(慎用)。
- mv:移动文件或重命名。-i 覆盖前询问,-b 若目标存在则先备份原文件。
- wc:统计文件中的字节数、单词数和行数。-c 统计字节,-w 统计词数,-l 统计行数。
- sort:对文件内容进行排序。-k n 指定按第 n 个字段排序,-r 实现逆序排列,-f 忽略大小写差异。
- chmod:更改文件权限。支持字符模式(如 u+x 给属主增加执行权限,多个操作可用逗号隔开),也支持数字模式(如 chmod 644 file)。
- touch:更新文件的时间戳;若文件不存在,则创建一个空文件。
- umask:设置或查看默认的文件创建权限掩码,影响新生成文件和目录的初始权限。
- find:按条件查找文件,支持根据文件名(-name)、所有者(-user)、类型(-type)、修改时间(-mtime)等筛选,并可通过 -exec 执行后续命令。
- grep:在文件中搜索指定字符串。-i 忽略大小写,-n 显示匹配行的行号,-r 递归搜索目录下所有文件,-v 输出不匹配的行。
2.4 输入输出重定向机制
核心结论:通过输入输出重定向,可以灵活地改变命令的数据来源和输出目标;结合管道技术,能够将多个命令串联起来,显著提升命令行操作效率。
标准 I/O 流说明:
- stdin(标准输入):默认来自键盘输入,文件描述符为 0。
- stdout(标准输出):默认输出到终端屏幕,文件描述符为 1。
- stderr(标准错误输出):错误信息默认也输出至屏幕,文件描述符为 2。
第 3 章 vi 文本编辑器
3.1 vi 文本编辑器概述
核心结论:vi 是 Linux 系统中默认的全屏文本编辑工具,具备多种工作模式,功能强大且兼容各种终端环境,广泛应用于程序编写与系统维护场景。
关键知识点:
- 主要特性:支持正则表达式搜索、宏操作;在所有 UNIX 和 Linux 系统中均预装;适应不同终端类型;命令简洁高效,便于快速操作。
- 三种基本模式:
- 命令模式:启动后默认进入此模式,用于执行光标移动、删除、复制等编辑指令,输入内容被视为命令而非文本。
- 插入模式:通过 i、I、a、A、o 或 O 等键进入,可进行文本输入,按 Esc 键返回命令模式。
- 末行模式:通过 :、? 或 ! 进入,用于执行文件保存、查找替换等全局性操作,执行完毕自动回到命令模式。
- 基本使用流程:运行 vi 并指定文件(如 vi filename)→ 处于命令模式 → 切换至插入模式输入内容 → 回到命令模式进行编辑 → 进入末行模式保存并退出(例如输入 :wq)。
3.2 vi 基本命令
核心结论:vi 提供了一套完整的基础编辑命令,涵盖光标控制、文本增删改查、复制粘贴及撤销重做等功能,命令设计精简高效,需熟练掌握以提升操作效率。
关键知识点:
- 光标定位与移动:
- 基础移动:h(左移)、j(下移)、k(上移)、l(右移),等效于方向键;0 表示跳转到行首,$ 表示行尾,^ 定位至行首第一个非空格字符。
- 高级跳转:w(移至下一个单词开头)、b(前一个单词开头)、e(当前单词结尾);((句首)、)(句尾)、{(段落起始)、}(段落结束);nG(跳转到第 n 行,单独 G 跳转至最后一行);n|(移动到第 n 列,| 可跳转至首列)。
- 文本输入与删除:
- 插入操作:i(在光标前插入)、I(在行首插入)、a(在光标后添加)、A(在行尾追加)、o(在当前行下方新建一行并插入)、O(在上方新建一行并插入)。
- 删除操作:x(删除光标所在字符)、X(删除前一个字符);dd(删除整行)、ndd(连续删除 n 行);结合定位符使用 d 命令,如 d0(删至行首)、d$(删至行尾)、dw(删除一个词)。
- 修改与替换:
- 修改命令:cc(替换整行内容)、ncw(修改 n 个词)、c + 定位符(如 c$ 修改从光标到行尾的内容)。
- 替换命令:r(替换单个字符)、R(进入连续替换模式,按 Esc 结束);s(替换当前字符并进入输入状态)、ns(替换接下来的 n 个字符)、S(替换整行)。
- 复制、粘贴与选择:
- 复制:yy(复制当前行)、nyy(复制 n 行)、y 加定位符(如 y$ 复制从光标到行尾)。
- 粘贴:p(粘贴到光标之后)、P(粘贴到光标之前)。
- 视觉选择:v(字符级选中)、V(整行选中)、Ctrl+v(块状区域选中),选中后可执行删除或复制操作。
- 撤销与重复:u(撤销上一步操作)、U(撤销对当前行的所有更改)、.(重复最后一次修改命令)。
3.3 vi 常用末行命令
核心结论:末行命令主要用于实现全局性任务,如搜索替换、文件管理、多行编辑等,是发挥 vi 高级功能的关键所在。
关键知识点:
- 查找与替换:
- 搜索功能:/pattern 向后搜索匹配项,按 n 继续向下查找;?pattern 向前搜索,N 继续向上查找。
- 替换语法::[n1,n2] s/p1/p2/[g][c],其中 n1,n2 指定作用行范围(% 代表全部行),p1 为原字符串,p2 为目标字符串,g 表示每行全部替换,c 表示每次替换前提示确认。示例:%s/the/The/gc 将全文中 "the" 替换为 "The" 并逐项确认。
- 全局处理命令:g/p1/命令 —— 对包含 p1 的每一行执行指定命令;g!/p1/命令 —— 对不包含 p1 的行执行命令。
- 文件操作与退出方式:
- 保存::w(保存当前文件)、:w newfile(另存为新文件)。
- 退出::q(无修改时正常退出)、:q!(强制退出不保存)、:wq 或 :x(保存并退出)。
- 其他操作::e filename(打开另一个文件)、:r filename(将指定文件内容读入当前光标位置)、:e!(放弃所有未保存的更改,恢复原始内容)。
- 常用行编辑命令:
- :n —— 跳转到第 n 行;
- :n1,n2co n3 —— 将第 n1 至 n2 行复制到第 n3 行之后;
- :n1,n2mo n3 —— 将第 n1 至 n2 行移动到第 n3 行之后;
- :n1,n2d —— 删除第 n1 到 n2 行。
输入与输出重定向及管道机制
输入重定向:使用符号 < 将命令的输入源设置为文件,例如 cat < afile 表示从文件 afile 中读取内容作为输入。
输出重定向:
- 标准输出重定向:命令 > 文件 —— 将正常输出写入文件,若文件已存在则覆盖原有内容。
- 追加输出重定向:命令 >> 文件 —— 将输出追加至文件末尾,保留原有数据。
- 错误输出重定向:命令 2> 文件 —— 捕获命令执行过程中产生的错误信息并保存至指定文件。
- 合并输出重定向:命令 &> 文件 —— 同时重定向标准输出和错误输出到同一文件。
典型应用场景:合并多个文件内容、快速创建空白文件、向文件追加数据、屏蔽不需要的输出信息等。
管道操作:利用 | 符号连接两个命令,形式为 命令1 | 命令2,表示将前一个命令的标准输出作为后一个命令的标准输入。
T形管道:使用 tee 命令实现分流,格式为 命令1 | tee file | 命令2,既能将中间结果保存到文件,又能继续传递给后续命令处理。
常见应用实例:
- 分页显示:ls /bin | more —— 分屏查看大量目录内容;
- 过滤查询:who | grep root —— 查找登录用户中的 root 用户;
- 统计行数:ls | wc -l —— 计算当前目录下文件数量;
- 文件合并:cat file1 file2 > file3 —— 将两个文件内容合并生成新文件。
第 4 章 Linux C 编程基础
4.1 Linux C 编程方法概述
核心结论:
在 Linux 环境下进行 C 语言编程,通常需要结合文本编辑器、编译器和调试工具,按照“编写代码 → 编译 → 调试 → 执行”的基本流程操作。整个过程并不强制要求预先学习操作系统原理课程即可上手。
关键知识点:
- 编辑工具:vi 和 emacs 是功能强大且高度可定制的命令行编辑器,适合熟练用户;gedit 则提供图形化界面,更适合初学者使用。
- 编译工具:gcc 是默认的 C 编译器,遵循 ANSI C 标准;make 工具用于管理包含多个源文件的项目构建过程。
- 调试工具:gdb 支持设置断点、查看变量值等高级调试功能;printf 语句则可用于简单的运行时信息输出调试。
- 程序执行方式:用户自定义程序需明确路径才能运行(例如使用 ./myprog);系统命令会自动在标准路径(如 /bin、/usr/bin)中查找。
- 帮助查询:man 命令是查阅系统调用、C 库函数等文档的核心工具,例如通过 man 3 printf 可查看 printf 函数的具体说明。
4.2 gcc 编译基础
核心结论:
gcc 的编译过程分为四个阶段:预处理、编译、汇编和链接。通过不同的选项可以控制每个阶段的行为,最终生成可执行程序。
关键知识点:
- 编译四阶段:
- 预处理(gcc -E):处理 #include、#define 等指令,输出 .i 文件。
- 编译(gcc -S):将预处理后的代码转换为汇编语言,生成 .s 文件。
- 汇编(gcc -c):把汇编代码翻译成机器码,形成目标文件 .o。
- 链接(gcc):将一个或多个目标文件与所需库文件合并,生成可执行文件,默认名为 a.out。
- 头文件搜索机制:
- 对于 #include <xxx.h> 形式,系统会在默认目录(如 /usr/include)中查找。
- 对于 #include "xxx.h" 形式,优先在当前目录查找,若未找到再搜索系统目录;可通过 -I 选项添加额外的搜索路径。
- 库文件连接方式:
- 静态库(.a 文件):在链接时将库代码直接嵌入可执行文件,导致体积较大,但运行时不依赖外部库文件。
- 共享库(.so 文件):仅记录函数引用,在程序运行时动态加载,节省空间,但要求目标系统存在对应库。
- 常用连接选项:
- -L 指定额外的库文件搜索目录。
- -l 后接库名(如 -lm 表示连接 libm.so 数学库)。
- -static 强制使用静态库进行链接。
- gcc 常用参数:
- 过程控制:-E(仅预处理)、-S(生成汇编代码)、-c(生成目标文件)。
- 输出控制:-o 指定输出文件名,-Wall 显示所有警告信息。
- 优化选项:-O(启用基础优化),-O2(更深入优化),-Os(以减小体积为目标优化)。
- 调试支持:-g 生成调试信息供 gdb 使用,-pg 生成性能分析数据。
应用实例:
- 单个源文件编译:
gcc -o hello hello.c—— 直接生成名为 hello 的可执行程序。 - 多文件项目处理:
gcc -c hello.c和gcc -c print.c分别生成目标文件,然后执行gcc -o hello hello.o print.o完成链接。 - 引入自定义头文件目录:
gcc -o hello -Iinclude hello.c print.c—— 使用 -I 指定 include 为头文件查找路径。 - 链接外部库文件:
gcc -o hello hello.c -lcurses—— 连接 curses 库以支持终端界面操作。
4.3 联机手册
核心结论:
man 手册是 Linux 下不可或缺的技术参考资源,内容按章节分类,便于开发者快速查找命令用法、系统调用及 C 标准库函数的详细说明。
关键知识点:
- 手册节划分:
- 第 1 节:常规 Linux 命令(如
man ls)。 - 第 2 节:系统调用接口(如
man 2 exit)。 - 第 3 节:C 语言库函数(如
man 3 printf)。 - 其他章节包括:设备文件(第 4 节)、配置文件格式(第 5 节)、游戏程序(第 6 节)、杂项说明(第 7 节)、系统管理命令(第 8 节)。
- 第 1 节:常规 Linux 命令(如
- man 命令实用选项:
-k 关键字:模糊搜索含有该关键字的所有手册条目,例如man -k exit。-f 名称:列出指定名称在各节中的手册信息,如man -f printf显示所有与 printf 相关的手册页。- 浏览操作:使用 PageUp 和 PageDown 上下翻页,输入 /string 进行关键词搜索,按 n 跳转到下一个匹配项,q 键退出查看。

此外,在 vi 编辑器中也可执行外部 Shell 命令,语法为::!命令,例如 :!ls 可列出当前目录下的文件内容。
关于编辑器设置的一些常用指令:
:set nu—— 开启行号显示;:set nonu—— 关闭行号显示;:set ai—— 启用自动缩进;:set noai—— 禁用自动缩进;:help—— 查看 vi 内置帮助文档。



雷达卡


京公网安备 11010802022788号







