要想真正高效地使用Linux,就必须全面掌握shell和命令行。通常必须购买两本书才能达到精通的目的:一本关于Linux基本概念和技术的指南,再加上一个单独的参考手册。更糟糕的是,大多数Linux参考手册只是对man手册页的稍加整理。而现在有了一个好得多的解决方案。知名Linux专家Mark Sobell编写的这本书,为系统管理员、开发人员和高级用户提供了最需要的全面的深入指导,同时还是一个卓越的日常参考手册。\r\n 本书与具体版本无关,可以在任何Linux系统上使用。更重要的是,书中包含数百个高质量的示例,这些示例要比其他任何一本Linux手册中的示例要实用得多。本书全面介绍了Linux:为从文件系统到shell、从编辑器到工具以及从编程工具到正则表达式等方面提供了最清晰的讲解和最有用的知识。并且,当需要立即得到答案时,可以翻到本书的命令参考部分,这部分内容经过精心组织和标注,非常易于快速查找!
第Ⅰ部分 Linux操作系统\r\n 第1章 欢迎进入Linux世界 \r\n 1.1 GNU-Linux联姻 \r\n 1.1.1 GNU-Linux的历史 \r\n 1.1.2 自由代码 \r\n 1.1.3 Linux的关键 \r\n 1.2 Linux的起源:UNIX \r\n 1.3 Linux的优点 \r\n 1.3.1 Linux在硬件公司和开发者中流行的原因 \r\n 1.3.2 Linux的可移植性 \r\n 1.3.3 标准 \r\n 1.3.4 C编程语言 \r\n 1.4 Linux概述 \r\n 1.4.1 Linux具有内核编程接口 \r\n 1.4.2 Linux支持多用户 \r\n 1.4.3 Linux支持多任务 \r\n 1.4.4 Linux支持安全的分层文件系统 \r\n 1.4.5 shell:命令解释器和编程语言 \r\n 1.4.6 大量有用的工具集 \r\n 1.4.7 进程间的通信 \r\n 1.4.8 系统管理 \r\n 1.5 Linux的其他特性 \r\n 1.5.1 GUI \r\n 1.5.2 (互联)网络工具 \r\n 1.5.3 软件开发 \r\n 1.6 本章小结 \r\n 练习 \r\n 第2章 入门 \r\n 2.1 本书约定 \r\n 2.2 登录 \r\n 2.2.1 终端登录 \r\n 2.2.2 远程登录:终端模拟、ssh和telnet \r\n 2.3 shell \r\n 2.3.1 识别当前运行的是哪种shell \r\n 2.3.2 校正错误 \r\n 2.4 慎用超级用户权限 \r\n 2.5 文档 \r\n 2.5.1 --help选项 \r\n 2.5.2 man:显示系统手册页 \r\n 2.5.3 info:显示工具信息 \r\n 2.5.4 HOWTO文档 \r\n 2.5.5 利用Internet获取帮助 \r\n 2.6 登录的更多方面 \r\n 2.6.1 如何处理登录失败 \r\n 2.6.2 退出 \r\n 2.6.3 虚拟控制台 \r\n 2.6.4 更改密码 \r\n 2.7 本章小结 \r\n 练习 \r\n 高级练习 \r\n 第3章 命令行工具 \r\n 3.1 特殊字符 \r\n 3.2 基本工具 \r\n 3.2.1 ls:显示文件名 \r\n 3.2.2 cat:显示文本文件内容 \r\n 3.2.3 rm:删除文件 \r\n 3.2.4 less或more:分屏显示文件 \r\n 3.2.5 hostname:显示系统名 \r\n 3.3 文件操作 \r\n 3.3.1 cp:复制文件 \r\n 3.3.2 mv:更改文件名 \r\n 3.3.3 lpr:打印文件 \r\n 3.3.4 grep:查找字符串 \r\n 3.3.5 head:显示文件头部 \r\n 3.3.6 tail:显示文件尾部 \r\n 3.3.7 sort:按顺序显示文件内容 \r\n 3.3.8 uniq:忽略文件中的重复行 \r\n 3.3.9 diff:比较两个文件 \r\n 3.3.10 file:测试文件内容 \r\n 3.4 |(管道):实现进程间的通信 \r\n 3.5 4个有用的工具 \r\n 3.5.1 echo:显示文本 \r\n 3.5.2 date:显示日期和时间 \r\n 3.5.3 script:记录Linux会话信息 \r\n 3.5.4 unix2dos:将Linux文件转换为Windows格式 \r\n 3.6 压缩和归档文件 \r\n 3.6.1 bzip2:压缩文件 \r\n 3.6.2 bunzip2和bzcat:解压缩文件 \r\n 3.6.3 gzip:压缩文件 \r\n 3.6.4 tar:打包和解包文件 \r\n 3.7 定位命令 \r\n 3.7.1 which和whereis:定位工具 \r\n 3.7.2 apropos:搜索关键字 \r\n 3.7.3 slocate:搜索文件 \r\n 3.8 获取用户和系统信息 \r\n 3.8.1 who:列出系统上的用户 \r\n 3.8.2 finger:列出系统上的用户 \r\n 3.8.3 w:列出系统上的用户 \r\n 3.9 与其他用户通信 \r\n 3.9.1 write:发送消息 \r\n 3.9.2 mesg:拒绝或接受消息 \r\n 3.10 电子邮件 \r\n 3.11 本章小结 \r\n 练习 \r\n 高级练习 \r\n 第4章 Linux文件系统 \r\n 4.1 分层文件系统 \r\n 4.2 目录文件和普通文件 \r\n 4.2.1 文件名 \r\n 4.2.2 mkdir:创建目录 \r\n 4.2.3 工作目录 \r\n 4.2.4 主目录 \r\n 4.2.5 绝对路径名 \r\n 4.2.6 相对路径名 \r\n 4.2.7 重要的标准目录和文件 \r\n 4.3 目录操作 \r\n 4.3.1 rmdir:删除目录 \r\n 4.3.2 路径名 \r\n 4.3.3 mv/cp:移动/复制文件 \r\n 4.3.4 mv:移动目录 \r\n 4.4 访问权限 \r\n 4.4.1 ls -l:显示访问权限 \r\n 4.4.2 chmod:改变访问权限 \r\n 4.4.3 setuid和setgid权限 \r\n 4.4.4 目录访问权限 \r\n 4.5 链接 \r\n 4.5.1 硬链接 \r\n 4.5.2 符号链接 \r\n 4.5.3 rm:删除链接 \r\n 4.6 本章小结 \r\n 练习 \r\n 高级练习 \r\n 第5章 shell \r\n 5.1 命令行 \r\n 5.1.1 语法 \r\n 5.1.2 处理命令行\r\n ……\r\n第Ⅱ部分 编辑器\r\n 第6章 vim编辑器\r\n 第7章 emacs编辑器\r\n第Ⅲ部分 shell\r\n 第8章 Bourne Again Shell\r\n 第9章 TC Shell\r\n第Ⅳ部分 编程工具\r\n 第10章 C的编程 \r\n 第11章 BASH程序设计\r\n 第12章 gawk模式处理语言\r\n 第13章 sed编辑器\r\n第Ⅴ部分 命令参考\r\n 第14章 命令参考\r\n第Ⅵ部分 附录\r\n 附录A 正则表达式 \r\n 附录B 获取帮助 \r\n 附录C 保持系统最新获取帮助 \r\n 附录D 术语表
Mark G.Sobell是Sobell Associates 公司的主席,该公司是一个专于UNLX/Linux 培训、技术支持和用户软件开发的咨询公司。Sobell是多本UNIX和Linux畅销书的作者,著有Prentice Hall PTR出版社出版的A Prac-tical Guide to Red Hat Linux,Second Edition一书,以及Addison-Wesley出版社出版的A Practical Guide to UNIX System,Hands-on UNIX和A Practical Guide to Solaris。Sobell具有超过25年使用UNIX和Linux的经验。
前 言
本书阐述了如何通过命令行方式使用Linux操作系统。本书前几章面向没有计算机使用经验的读者,阅读这部分内容将能够使其快速上手。剩余部分则主要针对熟练的计算机用户。本书并不针对特定的Linux版本或者某个发行版本,而是适用于所有近期发布的Linux版本。
命令行接口 在计算机刚诞生的时候,只有命令行(文本)界面(Command Line Interface,CLI),可以通过命令行向Linux输入命令。那时还没有鼠标和图标,也就不能通过拖放方式进行操作。某些程序(像emacs)使用ASCII字符集中非常有限的图形字符实现了基本的窗口。反白显示技术可将计算机屏幕分割成几个区域。Linux就是在这样的环境中诞生和发展起来的。
很自然地,早期的Linux工具都通过命令行方式调用。Linux的真正威力还是体现在这样的环境中,这也是很多Linux专家非命令行不用的原因。本书通过清晰的阐述和详实的示例,向读者展示了如何通过命令行方式最有效地使用Linux系统。
Linux发行版 Linux发行版包括了Linux内核、工具以及应用程序。目前已有多个发行版,包括Debian、Red Hat、Fedora Core、SUSE、Mandriva(前身为Mandrake)、KNOPPIX和Slackware等。尽管这些发行版之间有着各种各样的差别,但它们都依赖于Linux内核、工具和应用程序。本书阐述的内容将基于那些在绝大多数发行版上通用的程序。因此,无论使用的Linux发行版是什么,读者都可以使用这些程序。
内容重叠 如果读者读过A Practical Guide to Red Hat Linux: Fedora Core and Red Hat Enterprise Linux第2版或者后续版本,那么将会发现该书的内容和本书有所交叠。两本书的简介、正则表达式附录以及关于工具的章节(本书第3章,而不是第Ⅴ部分)、文件系统和编程工具非常类似。本书扩展并重写了Bourne Against Shell(bash),还包括了A Practical Guide to Red Hat Linux第2版中没有的几章:关于vim和emacs编辑器、TC Shell(tcsh)、gawk和sed脚本语言,以及第Ⅴ部分。其中第Ⅴ部分详细描述了80多个最常用的Linux工具。
面向读者 本书适合于不同层次的读者。尽管具备一些使用通用计算机的经验将有助于读者更好地理解本书内容,但本书不要求读者具备编程能力。本书适合于下列读者:
● 学生 上课时要用到Linux。
● 高级用户 希望学习如何通过命令行使用Linux。
● 专家 日常工作中使用Linux。
● 系统管理员 需要对Linux和用到的工具进行深入的理解。
● 计算机系的学生 学习Linux操作系统。
● 程序员 需要了解Linux编程环境。
● 技术主管 需要Linux基础知识。
优势 本书将使读者对如何使用Linux命令行有一个深入的认识。无论读者的背景如何,本书都将为读者提供工作中将会用到的知识:脱离本书,读者将知道如何使用Linux,并且在未来数年中,本书都将是一本有用的参考书。
本书特色
本书经过精心组织,以便读者在不同的条件下都可以方便地阅读。举例来说,读者可以逐页地阅读本书,从基本内容开始学习Linux命令行。此外,一旦读者能够熟练地使用Linux,本书将会成为一本参考书:从目录中或者通过索引查找感兴趣的部分,然后开始阅读。又或者,可以查阅本书第Ⅴ部分中所包含的工具。读者还可以将本书作为Linux主题目录:翻开本书直到找到自己想看到的主题。本书还给出了很多Web站点的链接,读者可以获取其他信息:可以将Web视为本书内容的延伸。
本书具备以下特色:
● 可选章节:读者可以在不同阶段阅读本书,当读者可以应付那些更加复杂的内容时再回过头来阅读。
● 警告框:针对那些容易出错的地方,本书将突出显示,这样就可以在读者遇到麻烦之前给予指导。
● 提示框:本书中一些被突出的内容将提示读者可以使用不同的方式更加高效地完成某个任务;或者这些内容很有用,或者仅仅为读者提供一些有趣的信息。
● 安全提示框:指出可以使系统更加安全的方法。
● Web网站支持:www.sobell.com包括了本书的勘误表、书中可下载的示例、一些有用的Web网站的链接以及偶数编号题目的解答。
● 整本书通过实例讲解各种概念。
● 书中包含了许多有用的URL(Internet地址),从这些网站中读者可以找到软件和相关信息。
● 每章都有一个“本章小结”,用于回顾该章包含的重要知识点。
● 每章后面都有练习题,读者可用来巩固所学技能。www.sobell.com网站上有偶数编号练习题的解答。
● 本书详细描述了一些重要的GNU工具,如gcc、gdb、GNU配置和构建系统、make、gzip和很多其他工具。
● 书中还包含了一些有用的知识,有助于读者从很多资源(包括本地系统和Internet)获取在线文档。
本书内容
本节将描述每章所包含的内容,并解释这些信息如何有助于发挥Linux的威力。可以浏览目录以获取更加详细的信息。
第Ⅰ部分:Linux操作系统
熟练的用户可能希望跳过第Ⅰ部分
提示 如果读者以前使用过UNIX或Linux系统,可能想直接跳过第Ⅰ部分的部分章节或者全部章节。所有读者都应该看一下“本书约定”(这部分解释了本书使用的排版约定)以及第2.5节(可以找到Linux文档的本地资源和远程资源)。
第Ⅰ部分介绍了Linux并教读者如何开始使用它。
第1章 欢迎进入Linux世界
第1章介绍了Linux的背景知识。该章包括Linux的历史,阐述了GNU项目如何帮助启动了Linux,并讨论了Linux区别于其他操作系统的一些重要特性。
第2章 入门
第2章解释了本书使用的版式约定。这些版式使得描述更加清晰,更加便于读者阅读。该章给出了一些基本知识,并解释了如何登录系统和修改密码,还讲述了在shell中输入Linux命令以及查找系统文档的方法。
第3章 命令行工具
第3章讲解了命令行接口(CLI),并简要介绍了超过30个命令行工具。阅读该章,读者将对Linux有一个认识,同时该章还介绍了那些每天都要用到的一些工具。本章介绍的工具包括:
● grep 在文件中搜索字符串。
● unix2dos 将Linux文本文件转换成Windows格式。
● tar 创建包含多个文件的存档文件。
● bzip2和gzip 压缩文件以节省磁盘空间,并且可以在网络上更加快速地传输。
● diff 显示两个文本文件的差异。
第4章 Linux文件系统
第4章讨论了Linux层次式文件系统,包括文件、文件名、路径名、使用目录、访问权限、物理链接和符号连接。理解文件系统将有助于组织数据,以便快速地查找信息。还可以与其他用户共享某些文件,同时保持其他文件为私有文件。
第5章 shell
第5章阐述了如何使用shell的特性,以更加高效、方便地工作。该章讲述的内容包括bash和tcsh的使用。该章将讨论:
● 使用命令行选项改变某个命令的工作方式。
● 如何在一个命令行中进行少量修改就可以将一个命令的输入从键盘输入重定向到文件。
● 如何将命令行的输出从屏幕重定向到文件。
● 使用管道将一个工具的输出直接发送到另一个工具,这样就可以用命令行解决问题了。
● 在后台运行程序,这样Linux可以在执行一个任务的情况下,还可以同时执行另一个任务。
● 使用shell自动生成文件名,这样可以节省输入时间,同时在用户不记得文件的精确文件名时也非常有用。
第Ⅱ部分:编辑器
第Ⅱ部分包括两个经典的强大的Linux命令行文本编辑器。绝大多数Linux发行版均包含了vim文本编辑器,它是广泛使用的vi编辑器和同样流行的GNU emacs编辑器的“增强”版。使用文本编辑器可创建和修改文本文件,这些文本文件包括程序源代码、shell脚本、备忘录以及文本格式化程序的输入数据。因为Linux系统管理中涉及编辑基于文本的配置文件,所以那些有经验的Linux管理员可以很熟练地使用这些文本编辑器。
第6章 vim编辑器
第6章首先将介绍vim编辑器的使用手册,然后阐述了如何使用vim的许多高级功能,包括在搜索串中的特殊字符、通用缓冲区和命名缓冲区、参数、标记以及在vim中执行命令。该章末尾总结了vim命令。
第7章 emacs编辑器
第7章将首先介绍emacs使用手册,然后再介绍emacs编辑器的很多高级功能,还包括META、ALT和ESCAPE键的使用。该章还包括键绑定、缓冲区以及字符串和正则表达式的渐增式搜索和完全搜索。另外,该章还详细讲解了指针、光标、标记和区域的关联。同时还介绍了如何利用emacs具有的大量在线帮助。其他主题包括:剪切和粘贴、多窗口多帧的使用以及emacs模式的使用(特别是C模式,可以辅助程序员编写和调试C代码)。第7章末尾总结了emacs命令。
第Ⅲ部分:shell
第Ⅲ部分更加详细地讲解了bash的用法并介绍了TC Shell(tcsh)。
第8章 Bourne Again Shell
第8章承接第5章,内容包括shell的更加高级的用法。所举例子中使用Bourne Again Shell即bash,系统shell脚本几乎只使用这个shell。第8章内容包括:
● 使用shell启动文件、shel
无封面