《Linux Command Line and Shell Scripting Bible, 3E》 ------Richard Blum Christine Bresnahan 著
本书是关于Linux命令行与shell脚本编程的全方位教程,主要包括四大部分:Linux命令行,shell脚本编程,高级shell脚本编程,如何创建实用的shell脚本编程。
第一章、初识Linux shell
1.1 什么是Linux
Linux可划分为以下四个部分:
Linux内核、GNU工具、图形化桌面环境、应用软件
1.1.1 深入探究Linux内核
内核主要负责以下四个功能:
系统内存管理、软件程序管理,硬件程序管理、文件系统管理
1.系统内存管理
操作系统内核的主要功能之一就是内存管理。内核不仅管理服务器上的物理内存,还可创建和管理虚拟内存(实际并不存在的内存)
内核通过硬盘上的存储空间实现虚拟内存,这块区域称为交换空间(swap space)。内核不断地在交换空间和实际物理内存之间反复交换虚拟内存中的内容。这使得系统以为它拥有比物理内存更多的可用内存。
2.软件程序管理
Linnux操作系统将运行中的程序称为进程。进程可以在前台运行,显示在屏幕上,也可在后台运行,隐藏到幕后。内存控制着Linux系统如何管理运行在系统上的所有进程。
内核创建了第一个进程(称为init进程)来启动系统上所有其他进程时,都会在虚拟内存中给新进程分配一块专有区域来存储该进程用到的数据和代码。
一些Linux发行版使用一张表来管理系统开机时要启动的进程。这张表通常位于专门文件/etc/inittab中。
3.硬件设备管理
内核的另一职责是负责管理硬件设备。任何Linux系统需要与之通信的设备,都需要在内核代码中加入其驱动程序代码。驱动程序代码相当于应用程序和硬件设备的中间人,允许内核设备之间交换数据。在Linux内核中有两种方法用于插入设备驱动代码:
以前,插入设备驱动代码的唯一途径是重新编译内核;这个过程效率过低。Linux开发人员设计出了一种更好的将代码插入运行中的内核的方法。
开发人员提出了内核模块的概念。它允许将驱动代码插入运行中的内核。
Linux系统将硬件设备当成特殊的文件,称为设备文件。设备文件有3种分类:
字符型设备文件是指处理数据时每次只能处理一个字符的设备。
块设备文件是指处理数据时每次能处理大块数据的设备。
网络设备文件是指采用数据包发送和接收数据的设备。
Linux为系统上每个设备都创建一种称为节点的特殊文件。与设备的所有通信都通过设备节点完成。
4.文件管理系统
不同于其他一些操作系统,Linux内核支持通过不同类型的文件系统从硬盘中读写数据。内核必须在编译时就加入对所有可能用到的文件系统的支持。
Linux服务器所访问的所有磁盘都必须格式化成表1-1所列文件系统类型中的一种。
Linux内核采用虚拟文件系统(Virtual File System, VFS)作为和每个文件交互的接口。
1.1.2 GNU工具
除了由内核控制硬件设备外,操作系统还需要工具来执行一些标准功能,比如控制文件和程序。Linux在创建Linux系统内核时,并没有可用的系统工具。
GNU组织(GNU是GNU‘s Not Unix的缩写)开发了一套完整的Unix工具,但没有可以运行它们的内核系统。这些工具是在名为开源软件(open source software, OOS)的软件理念下开发的。
1.核心GNU工具
GNU项目的主旨在于为Unix系统管理员设计出一套类似于Unix的环境。这个目标促使该项目移植了很多常见的Unix系统命令行工具。供Linux系统使用的这组核心工具被称为coreutils(core utilities)软件包。
GNU coreutils软件包由三部分构成:
2.shell
GNU/Linux shell是一种特殊的交互式工具。它为用户提供了启动程序、管理文件系统中的文件以及运行在Linux系统上的进程的途径。shell的核心是命令行提示符。命令行提示符是shell负责交互的部分。它允许你输入文本命令,然后解释命令,并在内核中执行。
在Linux系统上,通常有好几种Linux shell可用。不同的shell有不同的特性,有些更利于创建脚本,有些则更利于管理进程。所有Linux发行版默认的shell都是bash shell。bash shell由GNU项目开发,被当作标准Unix shell——Bourne shell(以创建者的名字命名)的替代品。bash shell的名称就是针对Bourne shell的拼写所玩的一个文字游戏,称为Bourne again shell。
除了bash shell,本书还将介绍其他几种常见的shell。1.1.3 Linux桌面环境
随着Microsoft Windows的普及,电脑用户已不再满足对于老式文本界面工作了。Linux图形化桌面环境应运而生。
1 X Windows系统
两个要素决定了视频环境:显卡和显示器。要在电脑上显示绚丽的画面,Linux软件就得知道如何与两者互通。X Window软件是图形显示的核心部分。
X Window软件是直接和PC上的显卡及显示器打交道的底层程序。他控制着Linux程序如何在电脑上显示出漂亮的窗口和图形。
核心的X Windows软件可以产生图形显示环境,但仅此而已。虽然对于独立应用已经足够,但在日常PC使用中却不是那么有用。它没有桌面环境供用户操作文件或是打开程序,因此,你需要一个建立在X Window 系统软件之上的桌面环境。
2.KDE桌面
KDE(K Desktop Environment,K桌面环境)。它会生成一个类似于Microsoft Windows的图形化桌面环境。
3.GNOME(the GNU Network Object Model Environment,GNU网络对象模型环境)是另一个流行的Linux桌面环境。
4.Unity桌面
负责开发Ubuntu的公司决定采用自己的一套叫做Unity的Linux桌面环境。
5.其他桌面
可在配置较低的PC和笔记本电脑上运行的轻量级Linux图形化桌面环境。