前言

随着Linux操作系统的流行和普及,以及工程化教育活动的蓬勃开展,许多拥有计算机技能却没有Linux操作系统经验的学生和初学者,特别是软件工程专业的学生和初学者,都迫切希望全面而系统地学习和掌握Linux操作系统的使用技巧,并快速而高效地提升自己在Linux操作系统下进行应用编程的能力。本书就是为这些学生和初学者而编写的。

本书虽然涉及许多操作系统的基础知识,但并不详细介绍操作系统原理,而是假设读者已经具备了操作系统原理的基本知识。本书是一本引导读者入门 Linux操作系统的书,涵盖Linux用户独立完成大部分日常工作所必需的内容。书中各章通过大量的实例引导读者快速上手实践,由浅入深逐步掌握相关内容,为读者进一步学习相关深入的课程和阅读更深入的参考书打下坚实的基础。提高读者基于Linux操作系统的工程实践能力是本书追求的目标。

本书编者都是多年从事Linux操作系统教学和应用开发的人员,书中各章的实例都是编者在讲授相关课程时使用的,各章末供读者复习思考的练习题和本书最后的实验题目也都是编者在实际教学工作中使用的。实践证明这些内容对读者理解Linux操作系统的基本概念、掌握相关使用方法和技巧、提高应用开发能力是大有帮助的。

本书共12章,具体内容如下。

第1章:Linux操作系统基础

本章主要介绍Linux操作系统的基本概念、发展历程、主要组成部分、运行模式、功能特征、操作流程、命令基础,以及文件与进程的基本概念等,让读者对Linux操作系统有初步的认识,为后文的学习打下基础。

第2章:Linux文件系统

本章主要介绍Linux文件系统,包括文件系统的结构、文件的定义与分类、目录与文件的操作命令、文件的权限管理等。

第3章:vi编辑器

本章主要介绍Linux操作系统中基本的编辑工具vi,包括其中的屏编功能和行编功能,以及在屏编和行编模式下常用的编辑命令。

第4章:Shell的交互功能和进程管理

本章主要介绍Shell如何接收、解释执行和控制用户的各种类型的键盘命令,包括Shell的功能与分类、Shell的内部命令、标准输入/输出重定向、Shell的变量、Shell 的引用符、进程的状态和监控等内容。这些内容一方面是用户在使用 Shell的命令解释器功能时要直接用到的知识,另一方面也是学习第5章的基础。

第5章:Shell程序设计

本章主要阐述Shell这种解释型高级程序设计语言的功能,介绍Shell语句的分类、Shell的流程控制语句、Shell函数,以及系统中各类功能命令和编写脚本程序的方法。

第6章:数据查找和筛选工具

本章主要介绍Linux操作系统中处理文本数据时常用的正则表达式和两个可编程数据处理工具——流编辑器sed和数据处理器awk的功能及其应用编程方法,使读者在Shell编程的基础上应用这两个工具来编写功能更加完善和灵活的应用脚本。

第7章:多模块链接与集成编译工具GNU make

本章主要介绍Linux操作系统中常用的自动管理和构建程序系统的开发工具GNU make,包括GNU make的工作方式和Makefile的规则等。

第8章:文件管理与输入/输出调用

本章主要介绍Linux操作系统中虚拟文件系统的基本结构,以及通过函数调用的形式来对文件系统进行相关操作的方法。

第9章:进程控制

本章主要介绍Linux操作系统中进程的基本概念和进程的相关操作,包括进程的创建、运行、等待、退出和属性调整等方面的系统调用,使读者学习本章后能够编写多进程运行环境下对进程进行控制的程序。

第10章:进程间通信

本章主要介绍Linux操作系统中进程间通信的几种形式,包括管道、信号灯、消息队列、信号量和共享存储等。

第11章:线程及线程控制

本章主要介绍线程的概念、线程与进程之间的区别与联系、线程的创建和终止、线程的同步与互斥,以及线程间的同步机制等相关内容。

第12章:综合实验

本章针对Linux操作系统开发设计了多个综合实验。通过这些实验,读者能够进一步理解Linux操作系统的功能特征,并掌握在Linux操作系统下开发应用程序的方法,提高实践动手能力。

本书的第1章、第2章和第3章由陈佳编写,第4章、第5章和第6章由刘玓编写,第7章、第8章和第12章由肖堃编写,第9章、第10章和第11章由丁熠编写,最后由刘玓对全书进行统稿。

本书的编写得到了电子科技大学信息与软件工程学院“核心课程平台建设”项目的资助。

由于编者的水平有限,书中难免存在不足之处,希望广大读者批评指正,我们将不胜感谢!

编者

2021年1月于电子科技大学