标题：Linux命令、编辑器与Shell编程
基本信息
作　者：王刚　等编著  
出 版 社：清华大学出版社
出版时间：2012-6-1
版　次：1
开　本：16开[1]
内容推荐
您已有Linux基础，想要进一步学习服务器架设？还想了解如何维护与管理您的服务器？《Linux命令、编辑器与Shell编程》是您最佳的选择。　　目前有关Linux架站的书籍大多只教导读者如何架设服务器，很少针对服务器的维护与管理，以及发生问题时的应对策略加以说明，以至于一旦服务器遭受攻击，眼见的就是一场手忙脚乱。因此，作者先从系统基础以及网络基础讲起，再谈到网络攻击与防火墙防护主机后，才进入服务器的架设。本书共分为四篇：第一篇，服务器搭建前的进修专区，主要介绍架设服务器之前必须具备的基本知识，看完这一篇，不论您的Linux是以何种方式进行Internet连接，都将不成问题；第二篇，主机的简易安全防护措施，这一篇将告诉您如何保护您的主机，以及如何养成良好的操作习惯，使您的主机能够百毒不侵，安然渡过一次次的考验；第三篇，局域网内常见服务器的搭建，介绍内部网络经常使用的远程连接服务（SSH、VNC、XRDP），网络参数设置服务（DHCP、NTP），网络磁盘服务（Samba、NFS、iSCSI），以及代理服务器等服务。其中SSH密钥系统，对于异地备份更是相当有帮助，您绝对不能错过；第四篇，常见因特网服务器的搭建，介绍DNS、WWW、FTP及Mail Server等常见的服务。
目录
第1篇 Linux命令
第1章 Linux简介与安装（教学视频：52分钟）2
1.1 Linux系统简介2
1.1.1 Linux能做什么2
1.1.2 Linux的主要发行版3
1.1.3 Linux系统的优势4
1.2 Linux的存储设备和目录结构5
1.2.1 Linux系统中的存储设备5
1.2.2 Linux系统中的目录结构7
1.3 虚拟化技术的应用8
1.3.1 虚拟化和VMware公司9
1.3.2 VMware Workstation简介10
1.3.3 VMware Workstation的网络连接方式11
1.3.4 VMware Workstation的使用技巧13
1.3.5 VMware ESX Server简介13
1.4 Linux安装过程14
1.4.1 安装前的准备工作14
1.4.2 创建虚拟机并使用光盘引导15
1.4.3 安装模式和光盘检测18
1.4.4 图形安装环境配置19
1.4.5 磁盘分区21
1.4.6 引导程序和网络配置23
1.4.7 设置时区和根用户密码25
1.4.8 定制软件包并开始安装26
1.4.9 第一次启动27
1.5 小结30
第2章 Linux系统入门（教学视频：109分钟）31
2.1 如何使用本书学习31
2.1.1 本书的知识结构和约定31
2.1.2 学习Linux系统的建议33
2.2 登录系统33
2.2.1 图形界面登录33
2.2.2 命令行登录35
2.2.3 SSH远程登录36
2.2.4 Telnet远程登录38
2.2.5 VNC远程登录38
2.2.6 SFTP登录39
2.3 关闭、重启系统41
2.3.1 关闭系统命令之shutdown41
2.3.2 关闭系统命令之poweroff41
2.3.3 挂起系统命令halt42
2.3.4 重启系统命令reboot42
2.3.5 切换系统运行级别命令init42
2.4 Linux命令基础及帮助43
2.4.1 Linux系统中的命令43
2.4.2 帮助之help命令和选项45
2.4.3 帮助之man手册46
2.4.4 帮助之info信息页48
2.5 系统与用户的交互程序Shell50
2.5.1 Shell分类50
2.5.2 更改默认Shell51
2.6 Bash中的命令基本操作54
2.6.1 命令行编辑功能54
2.6.2 绑定快捷键和命令55
2.6.3 命令行补全功能59
2.6.4 命令历史功能61
2.6.5 命令别名功能63
2.7 管道和输入/输出65
2.7.1 管道65
2.7.2 命令的输入/输出和错误66
2.7.3 重定向命令的输入/输出和错误66
2.8 小结69
第3章 常用命令（教学视频：115分钟）70
3.1 Linux基本命令70
3.1.1 切换工作目录命令cd70
3.1.2 查看当前路径命令pwd71
3.1.3 查看文件列表命令ls72
3.1.4 文件链接命令ln75
3.2 文件操作命令76
3.2.1 文件命名规则76
3.2.2 创建文件命令touch77
3.2.3 创建目录命令mkdir77
3.2.4 移动、重命名文件命令mv78
3.2.5 复制文件命令cp79
3.2.6 删除文件命令rm80
3.2.7 删除空目录命令rmdir81
3.2.8 查看文件类型命令file81
3.3 文本文件内容相关命令82
3.3.1 查看文本文件内容命令cat82
3.3.2 从文本尾查看文本内容命令tail83
3.3.3 从文本首行查看文本内容命令head84
3.3.4 分屏显示文本内容命令more和less85
3.3.5 文本内容比较命令diff87
3.3.6 文本统计命令wc89
3.4 日期时间命令89
3.4.1 查看日期时间命令date90
3.4.2 查看日历命令cal90
3.4.3 修改日期时间命令date和clock91
3.5 联线用户命令92
3.5.1 查看联线用户命令who、finger和w92
3.5.2 与联线用户通信的命令wall、write和mesg93
3.5.3 断开联线用户命令fuser94
3.6 切换用户命令94
3.6.1 临时切换用户命令su94
3.6.2 以root用户身份运行命令sudo95
3.7 定位和查找96
3.7.1 搜索命令 which96
3.7.2 文件搜索命令locate96
3.7.3 特殊文件搜索命令whereis97
3.7.4 关键字搜索命令apropos97
3.8 输入/输出相关命令98
3.8.1 回显命令echo98
3.8.2 接收用户输入命令read99
3.8.3 显示并保存文本命令tee102
3.8.4 邮件命令mail103
3.8.5 启动新Shell命令exec106
3.9 小结107
第4章 Linux命令中的特殊字符和正则表达式（教学视频：48分钟）108
4.1 命令中的特殊字符108
4.1.1 字符串引用符双引号和单引号108
4.1.2 命令引用符反引号110
4.1.3 变量引用和命令转换符美元符号111
4.1.4 反斜线屏蔽符111
4.2 文件名通配符111
4.2.1 单字符匹配元字符“?”112
4.2.2 多字符匹配元字符“*”112
4.2.3 字符范围匹配符“[]”113
4.2.4 排除范围匹配符“[!]”114
4.3 多条命令中的逻辑运算符和括号115
4.3.1 逻辑或“||”115
4.3.2 逻辑与“&&”116
4.3.3 括号116
4.4 命令中的正则表达式117
4.4.1 单字符匹配符“.”117
4.4.2 单字符或字符串重复匹配符“*”118
4.4.3 行首匹配符“^”118
4.4.4 行尾匹配符“$”119
4.4.5 反斜杠屏蔽符“\”119
4.4.6 范围匹配符“[]”和排除范围匹配符“[^]”120
4.4.7 词首、词尾匹配符“\<”和“\>”120
4.4.8 重复次数匹配符“x\{\}”120
4.4.9 组合并使用正则表达式121
4.5 小结121
第5章 查找和筛选工具（教学视频：93分钟）123
5.1 查找文件工具find123
5.1.1 find的基本格式123
5.1.2 按文件名称查找125
5.1.3 按文件权限查找125
5.1.4 按文件类型查找126
5.1.5 按文件的时间戳记和大小查找126
5.1.6 按文件属主或属组查找127
5.1.7 find工具的其他参数128
5.1.8 使用exec和ok处理查找到的文件128
5.1.9 使用xargs命令处理查找到的文件129
5.1.10 find工具应用实例130
5.2 查找文本工具grep131
5.2.1 grep的基本格式131
5.2.2 使用grep查找文本132
5.2.3 行首、行尾匹配查找134
5.2.4 配合常用的正则表达式查找135
5.2.5 使用或、与多匹配模式查找136
5.2.6 grep工具应用实例137
5.3 流编辑器sed138
5.3.1 sed基本格式138
5.3.2 显示和删除行140
5.3.3 插入和修改文本142
5.3.4 替换文本和其他编辑指令145
5.3.5 处理文本中的控制字符148
5.3.6 分支结构149
5.4 格式化文本数据抽取工具awk152
5.4.1 awk命令基本格式152
5.4.2 正则表达、元字符、运算符和关系运算符153
5.4.3 在awk命令中使用变量156
5.4.4 在awk命令中使用流程控制159
5.4.5 awk命令中的函数162
5.5 转换和删除重复命令tr170
5.5.1 tr命令的基本格式170
5.5.2 字符转换171
5.5.3 删除字符172
5.6 合并和分割工具173
5.6.1 排序命令sort174
5.6.2 数据剪切命令cut179
5.6.3 数据粘贴命令paste181
5.6.4 数据连接命令join183
5.6.5 去除重复命令uniq186
5.6.6 分割文件命令split188
5.7 小结190
第6章 用户和文件权限管理（教学视频：73分钟）191
6.1 用户管理191
6.1.1 系统用户文件概述191
6.1.2 添加用户命令useradd193
6.1.3 设置用户密码命令passwd196
6.1.4 删除用户命令userdel197
6.1.5 用户管理命令usermod197
6.2 用户组管理199
6.2.1 用户组文件概述199
6.2.2 添加用户组命令groupadd201
6.2.3 删除用户组命令groupdel201
6.2.4 用户组管理202
6.3 基本权限及管理命令203
6.3.1 文件的属主和属组203
6.3.2 修改文件属主和属组命令chown、chgrp203
6.3.3 文件权限及表示方法205
6.3.4 文件权限管理命令chmod207
6.3.5 suid、sgid和sticky权限概述208
6.3.6 权限掩码命令umask211
6.4 POSIX ACL权限系统及其管理命令212
6.4.1 POSIX ACL权限系统概述213
6.4.2 ACL权限管理和查看命令setfacl、getfacl213
6.4.3 ACL权限管理214
6.5 小结217
第7章 磁盘和文件系统管理（教学视频：70分钟）218
7.1 磁盘及分区管理218
7.1.1 查看磁盘设备列表命令fdisk218
7.1.2 查看磁盘设备命令hdparm220
7.1.3 磁盘分区工具fdisk221
7.1.4 利用fdisk工具对磁盘分区222
7.2 文件系统管理225
7.2.1 Linux系统支持的文件系统225
7.2.2 创建文件系统命令mkfs226
7.2.3 查看和修改卷标命令e2label227
7.2.4 挂载文件系统228
7.2.5 卸载文件系统命令umount231
7.2.6 利用fstab自动挂载文件系统232
7.3 RAID设备233
7.3.1 磁盘阵列的种类233
7.3.2 磁盘阵列级别234
7.3.3 创建组成阵列的磁盘分区236
7.3.4 创建磁盘阵列237
7.3.5 为阵列添加热备盘239
7.3.6 使用热备盘替换损坏磁盘239
7.3.7 扩展阵列240
7.4 LVM逻辑卷管理241
7.4.1 LVM的基本概念241
7.4.2 创建物理卷243
7.4.3 创建卷组244
7.4.4 创建逻辑卷245
7.4.5 添加物理卷247
7.4.6 扩充逻辑卷248
7.4.7 减小逻辑卷249
7.4.8 移动数据并移除物理卷250
7.4.9 逻辑卷快照252
7.5 磁盘配额管理253
7.5.1 为磁盘配额提供支持253
7.5.2 检查磁盘配额命令quotacheck254
7.5.3 查看磁盘使用情况命令repquota255
7.5.4 建立磁盘配额命令edquota255
7.5.5 开启磁盘配额命令quotaon257
7.5.6 关闭磁盘配额命令quotaoff258
7.5.7 管理磁盘配额258
7.6 文件系统维护基础259
7.6.1 查看文件系统使用情况命令df259
7.6.2 追踪大文件命令du260
7.6.3 修复文件系统命令fsck261
7.7 小结264
第8章 Linux系统管理（教学视频：70分钟）265
8.1 系统服务管理265
8.1.1 查看系统服务265
8.1.2 设置服务自启动状态267
8.1.3 添加删除系统服务269
8.1.4 启动和关闭服务命令service270
8.2 进程管理命令271
8.2.1 查看进程命令ps271
8.2.2 进程树274
8.2.3 实时显示进程命令top274
8.2.4 将任务放在后台执行277
8.2.5 查看后台任务命令jobs277
8.2.6 后台任务调至前台命令fg278
8.2.7 终止进程命令kill278
8.2.8 查看进程优先级281
8.2.9 指定进程运行优先级命令nice282
8.2.10 改变进程优先级命令renice283
8.3 计划任务命令crontab、at284
8.3.1 为计划任务提供支持284
8.3.2 cron计划任务格式285
8.3.3 添加计划任务命令crontab286
8.3.4 备份及恢复计划任务288
8.3.5 用户计划任务288
8.3.6 系统计划任务289
8.3.7 使用at执行一次性计划任务289
8.4 日志管理292
8.4.1 syslogd守护进程及其配置文本292
8.4.2 日志消息的格式295
8.4.3 记录日志消息命令logger295
8.4.4 日志轮循296
8.4.5 监视系统日志297
8.5 小结299
第9章 数据备份和应用程序管理（教学视频：74分钟）301
9.1 数据备份基础301
9.1.1 数据备份概述301
9.1.2 备份数据存放的介质302
9.1.3 备份类型302
9.1.4 备份时间选择304
9.2 tar备份工具304
9.2.1 tar命令的基本格式304
9.2.2 tar归档和备份文件305
9.2.3 查看归档文件中的文件列表306
9.2.4 从归档文件中还原文件306
9.3 cpio备份命令307
9.3.1 cpio命令的基本格式308
9.3.2 使用cpio归档文件308
9.3.3 查看归档文件中的文件列表309
9.3.4 恢复cpio归档文件310
9.4 压缩工具和整盘备份工具dd311
9.4.1 使用gzip压缩文件311
9.4.2 使用bzip2压缩文件313
9.4.3 整盘备份命令dd314
9.5 RPM包管理命令rpm317
9.5.1 RPM包管理器简介317
9.5.2 rpm命令基本格式318
9.5.3 使用rpm命令查询软件包319
9.5.4 使用rpm命令安装软件包321
9.5.5 使用rpm命令卸载软件包323
9.5.6 使用rpm命令升级软件包324
9.6 编译安装相关命令和工具324
9.6.1 安装编译环境324
9.6.2 获取软件工具wget、links325
9.6.3 编译前的配置327
9.6.4 编译软件命令make329
9.6.5 安装命令make install329
9.6.6 运行及环境配置330
9.6.7 卸载软件命令make uninstall332
9.7 利用yum工具安装应用程序332
9.7.1 yum简介333
9.7.2 配置yum333
9.7.3 查询源上的软件包336
9.7.4 利用yum安装软件包337
9.7.5 利用yum卸载软件包339
9.7.6 安装、卸载软件包组339
9.8 小结341
第10章 网络管理（教学视频：81分钟）343
10.1 网络接口配置命令343
10.1.1 查看网络接口信息343
10.1.2 配置网络接口347
10.1.3 重新启用网络接口351
10.1.4 配置DNS服务器地址352
10.2 路由命令route354
10.2.1 查看系统中的路由表355
10.2.2 添加默认路由356
10.2.3 添加路由条目357
10.3 主机名称命令hostname360
10.3.1 查看主机名称360
10.3.2 修改主机名称361
10.4 设置网络冗余363
10.4.1 bonding简介364
10.4.2 bonding的模式365
10.4.3 设置网络接口366
10.4.4 加载模块生成新的网络连接367
10.4.5 验证设置368
10.5 网络工具370
10.5.1 测试连通命令ping370
10.5.2 网络路径测试命令traceroute374
10.5.3 查看网络状态命令netstat374
10.5.4 域名解析工具dig和nslookup377
10.5.5 排除网络故障380
10.6 小结382
第2篇 文本编辑器
第11章 Vi和Vim文本编辑器（教学视频：37分钟）386
11.1 文本编辑器概述386
11.1.1 文本编辑器的发展及分类386
11.1.2 Linux系统中的文本编辑器387
11.2 认识Vi和Vim编辑器388
11.2.1 启动Vim编辑器388
11.2.2 Vim编辑器帮助390
11.2.3 退出Vim编辑器391
11.2.4 Vim编辑器的模式391
11.2.5 Vim编辑器的工作界面392
11.3 向Vim编辑器迈出第1步393
11.3.1 读取文件393
11.3.2 保存文件394
11.3.3 进入插入模式并插入文本394
11.3.4 移动光标395
11.3.5 删除文本396
11.3.6 撤销和恢复396
11.4 快速移动光标396
11.4.1 按单词移动光标396
11.4.2 快速移动光标至行首和行尾397
11.4.3 移动光标至指定的行397
11.4.4 滚动屏幕398
11.4.5 使用鼠标移动光标398
11.4.6 其他移动光标的技巧399
11.5 Vim编辑器的查找和替换功能400
11.5.1 简单的查找功能401
11.5.2 反向查找401
11.5.3 查找时忽略大小写402
11.5.4 高亮显示查找结果403
11.5.5 增量查找403
11.5.6 简单的查找替换功能404
11.5.7 区域性查找替换405
11.5.8 谨慎的查找替换405
11.6 Vim编辑器中的窗口操作406
11.6.1 分割窗口406
11.6.2 关闭窗口409
11.6.3 控制窗口大小409
11.6.4 窗口中的操作410
11.6.5 移动窗口410
11.7 Vim编辑器的高级技巧411
11.7.1 复制和粘贴411
11.7.2 剪切和粘贴411
11.7.3 编辑多个文件411
11.7.4 Visual模式413
11.7.5 在Vim编辑器中执行Shell命令415
11.8 定制Vim编辑器及灾难恢复415
11.8.1 定制文件vimrc416
11.8.2 定制Vim编辑器416
11.8.3 灾难恢复417
11.9 小结418
第12章 Emacs编辑器（教学视频：28分钟）419
12.1 Emacs编辑器概述与入门419
12.1.1 Emacs编辑器概述419
12.1.2 启动Emacs编辑器420
12.1.3 Emacs编辑器启动界面421
12.1.4 退出Emacs编辑器423
12.2 Emacs基本操作424
12.2.1 使用Emacs菜单栏424
12.2.2 打开新文件425
12.2.3 保存文件426
12.2.4 简单编辑操作426
12.3 快速移动光标427
12.3.1 按字符移动光标427
12.3.2 按句子移动光标428
12.3.3 按单词移动光标428
12.3.4 按段落移动光标428
12.3.5 滚动屏幕428
12.3.6 其他移动光标的技巧429
12.4 Emacs编辑器的常用功能430
12.4.1 撤销与恢复430
12.4.2 搜索功能431
12.4.3 查找并替换432
12.4.4 复制、剪切和粘贴433
12.5 Emacs编辑器的高级技巧434
12.5.1 删除环435
12.5.2 编辑文本区域436
12.5.3 书签功能436
12.5.4 灾难恢复440
12.5.5 使用多窗口441
12.6 目录模式444
12.6.1 查看文件445
12.6.2 删除、复制、重命名文件446
12.6.3 操作压缩文件447
12.6.4 其他文件操作447
12.7 Emacs编辑器的其他功能448
12.7.1 在Emacs编辑器中执行Shell命令449
12.7.2 发送电子邮件450
12.7.3 阅读电子邮件450
12.8 小结453
第13章 Eclipse编辑器（教学视频：29分钟）454
13.1 Eclipse开发平台概述与安装454
13.1.1 Eclipse平台概述454
13.1.2 Eclipse平台安装前的准备455
13.1.3 安装Eclipse平台457
13.2 Eclipse界面入门459
13.2.1 第1次启动459
13.2.2 Eclipse界面介绍460
13.2.3 操作窗口461
13.3 使用Eclipse开发Java程序463
13.3.1 建立编程项目463
13.3.2 建立Java类464
13.3.3 输入编程内容465
13.3.4 运行Java程序467
13.3.5 调试程序468
13.4 小结470
第14章 常用的文本编辑器（教学视频：28分钟）471
14.1 Nano编辑器471
14.1.1 Nano编辑器简介471
14.1.2 安装Nano编辑器471
14.1.3 Nano启动及工作界面472
14.1.4 快速移动光标474
14.1.5 复制粘贴文本474
14.1.6 查找和替换475
14.2 Gedit文本编辑器477
14.2.1 Gedit文本编辑器概述477
14.2.2 Gedit工作界面介绍478
14.2.3 快速移动光标479
14.2.4 显示行号479
14.2.5 语法高亮480
14.2.6 拼写检查480
14.2.7 查找和替换482
14.3 Kate编辑器482
14.3.1 Kate编辑器概述483
14.3.2 Kate基本界面484
14.3.3 快速移动光标485
14.3.4 查找和替换485
14.3.5 拼写检查487
14.3.6 语法高亮488
14.3.7 脚本编程环境488
14.4 小结490
第3篇 Shell编程
第15章 Shell脚本编程基础、变量（教学视频：56分钟）492
15.1 Bash脚本编程基础492
15.1.1 Shell脚本概述492
15.1.2 Shell脚本的基本内容493
15.1.3 脚本的运行方式495
15.1.4 接收用户输入496
15.1.5 向脚本传递参数497
15.2 Tcsh脚本编程498
15.2.1 输出字符串Hello的示例脚本498
15.2.2 Tcsh与Bash脚本的区别499
15.3 Shell中的变量499
15.3.1 保存系统运行情况的环境变量500
15.3.2 传递参数的位置变量503
15.3.3 系统预先定义的变量504
15.3.4 用户自定义变量505
15.4 Shell中的数组509
15.4.1 数组的定义509
15.4.2 数组的使用510
15.4.3 清除数组512
15.5 小结512
第16章 系统脚本和登录环境（教学视频：32分钟）513
16.1 系统启动过程513
16.1.1 Linux系统的启动步骤513
16.1.2 引导装载程序GRUB514
16.2 系统初始化过程518
16.2.1 INIT进程的配置文件518
16.2.2 设置系统默认运行级别519
16.2.3 初始化系统脚本520
16.2.4 启动系统服务520
16.2.5 重启快捷键522
16.2.6 UPS选项522
16.2.7 运行终端523
16.3 系统初始化过程中使用的脚本523
16.3.1 系统初始化脚本524
16.3.2 rc.local脚本525
16.4 用户环境526
16.4.1 全局用户配置文件/etc/profile526
16.4.2 个人用户配置文件.bash_profile527
16.4.3 定制用户环境529
16.5 小结529
第17章 函数和脚本参数（教学视频：22分钟）531
17.1 Shell中的函数531
17.1.1 在脚本中定义函数531
17.1.2 在脚本中使用函数532
17.1.3 向函数传递参数和返回值533
17.1.4 返回函数执行状态535
17.2 在Shell中使用函数文件536
17.2.1 函数文件的编写536
17.2.2 函数文件的调用537
17.3 两个示例脚本538
17.3.1 示例1：检查包的依赖性538
17.3.2 示例2：监控文件系统541
17.4 向脚本传递参数545
17.4.1 使用shift命令处理参数545
17.4.2 使用shift命令处理选项参数548
17.5 小结549
第18章 控制Shell脚本执行顺序（教学视频：29分钟）550
18.1 条件测试和捕获信号550
18.1.1 退出状态550
18.1.2 文件测试553
18.1.3 变量测试558
18.1.4 字符串和数值测试559
18.1.5 逻辑操作符561
18.1.6 捕获系统信号562
18.2 条件判断语句if564
18.2.1 简单if语句的使用564
18.2.2 if else语句的使用566
18.2.3 if elif语句的使用569
18.2.4 多if语句嵌套572
18.3 多条件判断语句case573
18.3.1 多条件判断语句case的基本格式573
18.3.2 利用case语句处理选项参数574
18.3.3 利用case语句处理用户输入577
18.4 步进循环语句for578
18.4.1 for语句的基本格式578
18.4.2 利用for语句处理数组579
18.4.3 一个设置防火墙的例子580
18.5 循环语句until581
18.5.1 until语句的基本格式581
18.5.2 利用until语句监控文件系统状态582
18.6 while循环语句583
18.6.1 while语句的基本格式583
18.6.2 while语句与until语句的区别584
18.6.3 利用while语句监控系统网络状态585
18.7 利用break和continue控制循环586
18.7.1 使用break语句控制循环586
18.7.2 使用continue语句控制循环588
18.8 小结589
第19章 Shell编程技巧和应用实例（教学视频：56分钟）591
19.1 运行级别脚本591
19.1.1 运行级别脚本的结构591
19.1.2 编写运行级别脚本593
19.1.3 添加和管理运行级别脚本595
19.2 怎样写好Shell脚本596
19.2.1 一般性原则596
19.2.2 良好的编程习惯596
19.2.3 Shell脚本的安全性597
19.3 调试脚本599
19.3.1 排除错误599
19.3.2 脚本调试601
19.4 Shell编程实例——自动备份文件脚本603
19.4.1 需求和设计思路603
19.4.2 完全备份模块604
19.4.3 差异备份模块605
19.4.4 远程备份模块606
19.4.5 主体和日志功能607
19.4.6 自动运行备份脚本610
19.5 Shell编程实例——防火墙快速配置脚本610
19.5.1 设置防火墙状态610
19.5.2 添加防火墙规则612
19.5.3 保存防火墙规则616
19.6 快速初始化系统脚本617
19.6.1 初始化系统网络617
19.6.2 更改SSH服务的端口625
19.6.3 设置SELinux状态626
19.6.4 关闭不必要的系统服务626
19.7 服务监控和主备切换脚本627
19.7.1 测试主服务器状态627
19.7.2 切换备用服务器状态628
19.8 小结629
版权信息
书名: Linux命令、编辑器与Shell编程
外文书名: A Practical Guide to Linux Commands, Editors, and Shell Programming, Second Edition
作者：索贝尔(Mark G.Sobell)(作者)， 包战、孔向华、胡艮胜(译者)
出版社:清华大学出版社; 第1版 (2010年9月1日)
平装:770页
正文语种:简体中文
开本:16
定价: 98.00 元
内容简介
为了真正掌握Linux必须全面理解shell和命令行。以前，读者必须购买两本书才能掌握这些知识：一本介绍Linux基本概念和技术的指南，再加一本参考手册。现在，著名Linux专家Mark Sobell通过《Linux命令、编辑器与shell编程》一本书，不仅全面深入地介绍了系统管理员、开发人员和高级用户最需要的工具，而且涵盖了日常工作中最常用的参考资源。
《Linux命令、编辑器与shell编程》完全适用于所有发布版，可以把它用于任意Linux系统，包括现在和将来发布的Linux系统。《Linux命令、编辑器与shell编程》还全面介绍了Mac OS X命令行。包括其他Linux/UNIX图书忽略的仅用于OS X的工具和实用程序。
《Linux命令、编辑器与Shell编程》结构清晰．包含数百个优秀的实际范例，从最基础的知识开始，介绍了Linux中最有用的知识，包捶文体系统、shell、编辑器、实用程序、编程工具、正则表达式等。还添加了Perl的入门介绍，Perl是Linux管理员自动完成复杂、耗时的任务最重要的编程工具。
《Linux命令、编辑器与shell编程》 是目前所能找到的最实用、最全面的Linux指南和参考手册，也是唯一涵盖以下全部内容的书籍
·更好、更实用的范例，涵盖了用户实际中需要执行的任务
·深入浅出地介绍了Linux和OSX的每个知识点
·适用于每个系统管理员的Pe门完整入门指南
·深入剖析如何使用bash和tcsh进行基本和高级的Linux shell编程
·从aspell到xargs的100个核心实用程序的全面阐述，包括从ditto到SetFile的Mac OS X专用实用程序
·新增了如何使用rsync自动完成远程备份的内容
·数十个系统安全提示：包括使用ssh和scp实现安全通信的详细步骤
·定制shell和从命令行交互使用shell的提示和技巧
·使用vim和emacs进行高效编辑的完全指南
·全面的命令参考部分——现在包含修订过和扩展过的索引，以便读者快速查找需要的信息
·使用apt-get和yum自动更新系统的指令
·数十个练习有助于读者提升实践能力和自信心
·还包括BitTorrent、gawk、Sed、find、sort、bzip2和正则表达式等内容
作者简介
索贝尔（Mark G.Sobell），是Sobell Associates公司的总裁。该咨询公司致力于UNIX/Linux培训、支持和定制软件开发。他在使用UNIX和Linux系统方面有超过25年的经验，编写了许多畅销书.包括Prentice Hall出版社出版的A Practical Guide to Fedora and Red HatEnterprise Ltnux.Fourth Edition、A Practicat Guide to Ubuntu Linux,Second Edition、A Practical Guide to UNtX for Mac 0S X Users（与Pete r Seebach合著），以及Addison-Wesley出版社出版的A Practical Guide to UNIX System。
目录
第1章 欢迎进入Linux世界
1.1 UNIX和GNU-Linux的发展史
1.1.1 Linux的起源：UNIX
1.1.2 回顾1983年
1.1.3 下一场景，1991年
1.1.4 自由代码
1.1.5 Linux的关键
1.2 Linux的优点
1.2.1 Linux在硬件公司和开发人员中流行的原因
1.2.2 Linux的可移植性
1.2.3 C编程语言
1.3 Linux概述
1.3.1 Linux具有内核编程接口
l.3.2 Linux支持多用户
1.3.3 Linux支持多任务
1.3.4 Linux支持安全的分层文件系统
1.3.5 shell命令解释器和编程语言
1.3.6 大量有用的实用程序
1.3.7 进程问的通信
1.3.8 系统管理
1.4 Linux的其他特性
1.4.1 GUI
1.4.2 （互联的）网络实用程序
1.4.3 软件开发
1.5 本章小结
练习
第Ⅰ部分 Linux操作系统
第2章 入门
2.1 本书约定
2.2 从终端或终端模拟器登录
2.3 shell
2.3.1 识别当前运行的是哪种shell
2.3.2 校正错误
2.4 su/sudo：慎用root权限
2.5 如何查找相关文档
2.5.1 -help选项
2.5.2 man：显示系统手册页
2.5.3 apropos：搜索关键字
2.5.4 info：显示实用程序的相关信息
2.5.5 HOWT0文档
2.5.6 利用系统获取帮助
2.6 登录的更多方面
2.6.1 使用虚拟控制台
2.6.2 如何处理登录失败
2.6.3 退出
2.6.4 更改密码
2.7 本章小结
练习
高级练习
第3章实用程序
3.1 特殊字符
3.2 基本工具
3.2.1 1s：显示文件名
3.2.2 cat：显示文本文件内容
3.2.3 rm：删除文件
3.2.4 少即多：分屏显示文件
3.2.5 hostname：显示系统名
3.3 文件操作
3.3.1 cp：复制文件
3.3.2 mv：更改文件名
3.3.3 lpr：打印文件
3.3.4 grep：查找字符串
3.3.5 head：显示文件头部
3.3.6 tail：显示文件尾部
3.3.7 sort：按顺序显示文件内容
3.3.8 uniq：忽略文件中重复的行
3.3.9 dim比较两个文件
3.3.10 file：识别文件内容
3.4 l（管道）：实现进程间的通信
3.5 4个有用的实用程序
3.5.1 echo：显示文本
3.5.2 date：显示日期和时间
3.5.3 script：记录shell会话信息
3.5.4 todos/unix2dos：将L,inux和.MacOSX文件转换为Windows格式
3.6 压缩和归档文件
3.6.1 bzip2：压缩文件
3.6.2 bunzip2和bzcat：解压缩文件
3.6.3 gzip：压缩文件
3.6.4 tar：打包和解包文件
3.7 定位命令
3.7.1 which和whereis：定位实用程序
3.7.2 slocate/Iocate：搜索文件
3.8 获取用户和系统信息
3.8.1 who：列出系统上的用户
3.8.2 finger：列出系统上的用户
3.8.3 w：列出系统上的用户
3.9 与其他用户通信
3.9.1 write：发送消息
3.9.2 mesg：拒绝或接受消息
3.10 电子邮件
3.11 本章小结
练习
高级练习
第4章 Linux文件系统
4.1 分层文件系统
4.2 目录文件和普通文件
4.2.1 文件名
4.2.2 工作目录
4.2.3 主目录
4.3 路径名
4.3.1 绝对路径名
4.3.2 相对路径名
4.4 目录操作
4.4.1 mkdir：创建目录
4.4.2 cd：更改工作目录
4.4.3 rmdir：删除目录
4.4..4 路径名
4.4.5 mv/cp：移动/复制文件
4.4.6 mv：移动目录
4.4.7 重要的标准目录和文件
4.5 访问权限
4.5.1 ls.1 ：显示访问权限
4.5.2 chmod：改变访问权限
4.5.3 setuid和setgid权限
4.5.4 目录访问权限
4.6 ACL
4.6.1 启用ACL
4.6.2 处理访问规则
4.6.3 设置目录的默认规则
4.7 链接
4.7.1 硬链接
4.7.2 符号链接
4.7.3 nn：删除链接
4.8 本章小结
练习
高级练习
第5章 shell
5.1 命令行
5.1.1 语法
5.1.2 处理命令行
5.1.3 执行命令行
5.1.4 编辑命令行
5.2 标准输入输出
5.2.1 作为文件的屏幕
5.2.2 作为标准输入的键盘和作为标准输出的屏幕
5.2.3 重定向
5.2.4 管道
5.3 在后台运行命令
5.4 生成文件名/扩展路径名
5.4.1 特殊字符“？
5.4.2 特殊字符“*”
5.4.3 特殊字符“[]
5.5 内置命令
5.6 本章小结
练习
高级练习
第Ⅱ部分 编辑器
第6章 vim编辑器
6.1 历史
6.2 入门：用vim创建和编辑文件
6.2.1 启动vim
6.2.2 命令模式和输入模式
6.2.3 输入文本
6.2.4 获取帮助
6.2.5 结束编辑会话
6.2.6 comDatible参数
6.3 介绍vim的特性
6.3.1 联机帮助
6.3.2 术语
6.3.3 操作模式
6.3.4 显示
6.3.5 输入模式下校正文本
6.3.6 工作缓冲区
6.3.7 行长度与文件大小
6.3.8 窗口
6.3.9 锁定文件
6.3.10 非正常结束编辑会话
6.3.11 崩溃后的文本恢复
6.4 在命令模式下移动光标
6.4.1 按字符移动光标
6.4.2 将光标移到某个特定字符
6.4.3 按字移动光标
6.4.4 按行移动光标
6.4.5 按句子和段落移动光标
6.4.6 在屏幕内移动光标
6.4.7 查看工作缓冲区的不同部分
6.5 输入模式
6.5.1 插入文本
6.5.2 追加文本
6.5.3 为输入文本打开行
6.5.4 替换文本
6.5.5 在输入模式下转义特殊字符
6.6 在命令模式下删除和修改文本
6.6.1 撤销修改
6.6.2 删除字符
6.6.3 删除文本
6.6.4 修改文本
6.6.5 替换文本
6.6.6 修改大小写
6.7 查找和替换
6.7.1 查找字符
6.7.2 查找字符串
6.7.3 字符串的替换
6.8 其他命令
6.8.1 连接命令
6.8.2 状态命令
6.8.3.（句点）
6.9 复制、移动和删除文本
6.9.1 通用缓冲区
6.9.2 命名缓冲区
6.9.3 编号缓冲区
6.10 文件的读写
6.10.1 读文件
6.10.2 写文件
6.10.3 识别当前文件
6.11 参数设置
6.11.1 在vim中设置参数
6.11.2 在启动文件中设置参数
6.11.3.vimrc启动文件
6.11.4 参数
6.12 高级编辑技巧
6.12.1 使用标记
6.12.2 编辑其他文件
6.12.3 宏与快捷键
6.12.4 在vim中执行shell命令
6.13 度量单位
6.13.1 字符
6.13.2 字
6.13.3 空白分隔字
6.13.4 行
6.13.5 句子
6.13.6 段落
6.13.7 屏幕（窗口）
6.13.8 重复因子
6.14 本章小结
练习
高级练习
第7章 emacs编辑器
7.1 历史
7.1.1 演化
7.1.2 emacs与vim
7.1.3 命令行emacs和图形emacs
7.2 入门：开始使用emacs
7.2.1 启动emacs
7.2.2 退出emacs
7.2.3 插入文本
7.2.4 删除字符
7.2.5 移动光标
7.2.6 在光标处编辑
7.2.7 保存和检索缓冲区中的内容
7.3 emacs GUI
7.4 基本编辑命令
7.4.1 按键的表示与使用
7.4.2 键序列和命令
7.4.3 META+x：运行不带绑定键的命令
7.4.4 数值参数
7.4.5 编辑点与光标
7.4.6 在缓冲区中滚动
7.4.7 删除文本
7.4.8 搜索
7.4.9 通过键盘使用菜单栏
7.5 联机帮助
7.6 高级编辑
7.6.1 撤销修改
7.6.2 编辑点标记和区域
7.6.3 剪切与粘贴：移出已剪切文本
7.6.4 插入特殊字符
……
第Ⅲ部分 Shell
第8章 Bourne Again Shell
第9章 TC Shell
第Ⅳ部分 编程工具
第10章 BASH程序设计
第11章 Perl脚本语言
第12章 AWK模式处理语言
第13章 Sed编辑器
第14章 rsync安全复制实用程序 
第Ⅴ部分 编程工具
第15章 命令参考
第Ⅵ部分 附录