前言

GNU/Linux是世界上最强大、最灵活的操作系统之一。在现代计算领域中,它可谓无处不在,从服务器、便携式计算机、移动电话、平板电脑到超级计算机,概莫能外。尽管配备了优美、时髦的图形用户界面,但shell依然是同Linux进行交互的最灵活的方式。

除了执行单独的命令,shell还可以执行命令脚本,所以非常易于实现各种任务的自动化操作,如生成报表、发送电子邮件、进行系统维护等。本书包含各式各样的攻略,演示了命令及shell脚本的实战用法。你可以将其作为参考,或是自己编写脚本时的灵感源泉。书中涉及的任务包括文本处理、网络运维、系统管理,不一而足。

和学习其他手艺一样,熟能生巧。待你成为shell脚本行家之日,方能完全发挥并驾驭shell的真力。本书会告诉你如何达成这一目标!

本书内容

第1章:小试牛刀。作为用于理解Bash的基本概念及特性的入门章节,这一章讨论了终端打印、数学运算以及其他一些简单的Bash功能。

第2章:命令之乐。这一章展示了GNU/Linux中的常用命令,历数了用户可能会遇到或是可以善加利用的各种实践用例。除了基础命令之外,在这一版中还讨论了加密散列命令(cryptographic hashing command)和尽可能并行执行命令的方法。

第3章:以文件之名。这一章包含了与文件及文件系统相关的多条攻略,讲解了如何生成大体积文件、将文件系统写入文件、挂载文件、创建ISO镜像。我们还探讨了查找并删除重复文件、统计文件行数、收集文件详细信息等操作。

第4章:让文本飞。这一章结合任务实例讲解了GNU/Linux下大部分命令行文本处理工具。此外还包含了一些补充内容,详细介绍了正则表达式以及sed/awk命令。本章对多数常见的文本处理任务逐一给出了解决方案。这些都是实战中不可不知的技巧。

第5章:一团乱麻?没这回事。这一章包含了多个同互联网服务相关的shell脚本,旨在帮助读者理解如何使用shell脚本与Web进行交互,以实现诸如Web页面数据采集、解析等任务的自动化操作。讲解了以POST和GET方式发送网页,提交客户数据到服务器的方法。在这一版中,就Twitter这类服务,采用了一种全新的授权机制——OAuth。

第6章:B计划。这一章演示了用于数据备份、归档、压缩等若干命令。除了更快的压缩技术,这一版还讨论了如何创建全盘镜像。

第7章:无网不利。这一章涵盖了Linux环境下的联网实践以及若干有助于编写网络shell脚本的命令。首先介绍了一些网络基础知识,随后讲解了ssh的用法,这可算得上是现代GNU/Linux系统中最强大的命令之一。除此之外,我们还讨论了高级端口转发、设置原始通信信道(raw communication channel)、防火墙配置等内容。

第8章:当个好管家。这一章介绍了Linux系统活动监视相关的攻略以及日志记录和报表生成,讲解了计算磁盘使用情况、监视用户访问、CPU占用等任务。在这一版中,我们还会讲述优化电源使用、检查磁盘和文件系统错误的方法。

第9章:管理重任。这一章涉及一系列系统管理方面的实战攻略,讲解了各种用于收集系统详细信息的命令以及使用脚本进行用户管理的方法,还讨论了大图片缩放、通过shell访问MySQL数据库。在这一版中,我们还会学习在不借助窗口管理器的情况下,如何使用GNU Screen来管理多个终端。

阅读本书要求

只要具备任何一种GNU/Linux平台的一般性使用经验,都能很轻松地阅读本书。我们已竭尽所能地确保书中的所有例子清晰明了、简单易懂。在Linux平台下学习的好奇心是你阅读本书所需的唯一条件。我们为你提供了循序渐进的辅导,助你解决书中有关脚本编写的难题。为了运行并测试书中的例子,我们推荐安装Ubuntu/Debian Linux。当然,其他的Linux发行版也足以胜任绝大多数任务。你会发现就编写shell脚本来说,本书绝对是一份通俗易懂的参考资料,同时也是一位助你编写高效脚本的良师益友。

本书读者对象

如果你是一位初中级用户,希望通过掌握快速编写脚本的技巧来完成各类事务处理,而又不愿去逐页翻阅手册,那么本书就是写给你的。你不用了解任何shell脚本或Linux的工作原理,只需要参照书中类似的例子和描述就可以动手了。对于中高级用户以及系统管理员或程序员而言,本书则是在编码过程中寻求问题解决之道的一份绝佳参考资料。

本书约定

本书用多种不同格式的文本来区分不同种类的信息。下面是各类格式的例子及其所代表的含义。

正文中的代码片段像这样显示:“我们创建了名为repeat的函数,它包含了一个无限while循环,该循环尝试运行被作为函数参数(通过$@访问)传入的命令。”

代码块以如下形式显示:

if  [ $var -eq 0 ]; then echo "True"; fi

还可以写成:

if  test $var -eq 0 ; then echo "True"; fi

如果我们希望你注意代码块的某部分,那么会使用粗体显示相关的代码行或条目:

while  read line;
do  something
done  < filename

命令行输入或输出写成如下形式:

# mkdir /mnt/loopback
# mount -o loop loopbackfile.img /mnt/loopback

新术语重要的词句显示为粗体。

 警告或重要的提示出现在这里。

 

 建议和窍门则会以这种方式出现。

读者反馈

十分欢迎读者提供反馈意见。我们想知道你对本书的看法:喜欢哪些部分,不喜欢哪些部分。这些反馈对于协助我们编写出真正对读者有所裨益的书至关重要。1

1 读者也可以登录图灵社区,在本书的页面(ituring.com.cn/book/1170)下提交反馈意见、勘误以及下载本书示例代码。——编者注

你只需要向feedback@packtpub.com发送电子邮件,并在邮件标题中注明书名即可。如果你在某方面有所专长并且愿意参与图书编写或出版,请参阅我们的作者指南www.packtpub.com/authors

客户支持

现在你已经拥有了这本由Packt出版的图书,为了让此书尽可能地物有所值,我们还为你提供了其他诸多方面的服务。

下载示例代码

你可以在http://www.packtpub.com下载本书及你所购买的所有Packt图书的示例代码。如果你是在其他地方购买的本书的英文版,可以访问http://www.packtpub.com/support并注册,示例代码将用电子邮件发送给你。

勘误

尽管我们已经竭尽全力确保本书内容准确,但错误终难避免。如果你发现了书中的任何错误,无论是出现在正文还是代码中的,我们都非常乐于见到你将错误提交给我们。这样不仅能够减少其他读者的困惑,还能帮助我们改进本书后续版本的质量。如果需要提交勘误,请访问 http://www.packtpub.com/submit-errata,选择相应的书名,单击勘误提交表单链接,就可以开始输入详细的勘误信息了。一旦勘误得到确认,我们将接受你的提交,同时勘误内容也将被上传到我们的网站,或者被添加到对应书目勘误区的现有勘误表中。所有图书当前的勘误都可以通过 http://www.packtpub.com/support来查看。

举报盗版

各种媒体在网上一直饱受版权侵害的困扰。Packt坚持严格保护版权和授权。如果你在网上发现我社图书的任何形式的盗版,请立即为我们提供地址或网站名称,以便我们采取进一步的措施。

请将疑似侵权的网站链接发送至copyright@packtpub.com。

非常感谢你对保护作者知识产权所做的工作,我们将竭诚为读者提供有价值的内容。

疑难解答

如果你对本书的某方面抱有疑问,请通过questions@packtpub.com联系我们,我们会尽力为你解决。

目录

  • 版权声明
  • 献辞
  • 前言
  • 第 1 章 小试牛刀
  • 第 2 章 命令之乐
  • 第 3 章 以文件之名
  • 第 4 章 让文本飞
  • 第 5 章 一团乱麻?没这回事
  • 第 6 章 B 计划
  • 第 7 章 无网不利
  • 第 8 章 当个好管家
  • 第 9 章 管理重任