具体描述
本书结合丰富的实际案例介绍了如何利用shell命令快速开发常规任务,如何凭借短短几个命令行从Web挖掘数据的shell脚本,如何通过srlell脚本设置以太网和无线LAN,以及如何利用少量命令的组合完成诸如文本处理、文件管理、备份等复杂的数据管理工作等。
作者简介
Shantanu Tushar 资深GNU/Linux用户,KDE社区著名的贡献者,维护着Calligra Active(用于Tablets的KDE办公文档查看器)、Plasma Media Center以及Gluon Player。Shantanu坚信终有一天编程会变得无比轻松,每个人都会热衷于为计算机编写程序。
Sarath Lakshman 年轻的Linux天才程序员、开源软件及GNU/Linux活跃分子。他作为SLYNUX(2005)的开发者而广为人知,这是一款面向Linux新手的操作友好的GNU/Linux发布版。另外,他还为Linux For You月刊撰写文章。在Fedora、Pardus Linux、PiTiVi、Ubuntu 以及Google编程夏令营等项目中,他都作出了显著的贡献。
目录信息
1.1 简介 1
1.2 终端打印 3
1.2.1 实战演练 4
1.2.2 工作原理 5
1.2.3 补充内容 5
1.3 玩转变量和环境变量 6
1.3.1 预备知识 6
1.3.2 实战演练 7
1.3.3 补充内容 9
1.4 使用函数添加环境变量 10
1.4.1 实战演练 11
1.4.2 工作原理 11
1.5 使用shell进行数学运算 11
1.5.1 预备知识 12
1.5.2 实战演练 12
1.6 玩转文件描述符及重定向 14
1.6.1 预备知识 14
1.6.2 实战演练 14
1.6.3 工作原理 17
1.6.4 补充内容 17
1.7 数组和关联数组 19
1.7.1 预备知识 19
1.7.2 实战演练 20
1.7.3 补充内容 20
1.8 使用别名 21
1.8.1 实战演练 21
1.8.2 补充内容 22
1.9 获取终端信息 23
1.9.1 预备知识 23
1.9.2 实战演练 23
1.10 获取、设置日期和延时 24
1.10.1 预备知识 24
1.10.2 实战演练 24
1.10.3 工作原理 26
1.10.4 补充内容 26
1.11 调试脚本 27
1.11.1 实战演练 27
1.11.2 工作原理 28
1.11.3 补充内容 28
1.12 函数和参数 29
1.12.1 实战演练 29
1.12.2 补充内容 30
1.13 将命令序列的输出读入变量 31
1.13.1 预备知识 31
1.13.2 实战演练 32
1.13.3 补充内容 32
1.14 不使用回车键来读取n个字符 33
1.15 运行命令直至执行成功 34
1.15.1 实战演练 34
1.15.2 工作原理 35
1.15.3 补充内容 35
1.16 字段分隔符和迭代器 35
1.16.1 预备知识 36
1.16.2 实战演练 36
1.17 比较与测试 38
第2章 命令之乐 42
2.1 简介 42
2.2 用cat进行拼接 42
2.2.1 实战演练 43
2.2.2 工作原理 43
2.2.3 补充内容 43
2.3 录制并回放终端会话 45
2.3.1 预备知识 45
2.3.2 实战演练 45
2.3.3 工作原理 46
2.4 文件查找与文件列表 46
2.4.1 预备知识 46
2.4.2 实战演练 46
2.4.3 补充内容 47
2.5 玩转xargs 54
2.5.1 预备知识 54
2.5.2 实战演练 55
2.5.3 工作原理 55
2.5.4 补充内容 56
2.6 用tr进行转换 59
2.6.1 预备知识 59
2.6.2 实战演练 59
2.6.3 工作原理 60
2.6.4 补充内容 60
2.7 校验和与核实 63
2.7.1 预备知识 63
2.7.2 实战演练 63
2.7.3 工作原理 64
2.7.4 补充内容 65
2.8 加密工具与散列 65
2.9 排序、唯一与重复 68
2.9.1 预备知识 68
2.9.2 实战演练 68
2.9.3 工作原理 69
2.9.4 补充内容 69
2.10 临时文件命名与随机数 72
2.10.1 实战演练 72
2.10.2 工作原理 73
2.11 分割文件和数据 73
2.11.1 工作原理 74
2.11.2 补充内容 74
2.12 根据扩展名切分文件名 76
2.12.1 实战演练 76
2.12.2 工作原理 76
2.13 批量重命名和移动 78
2.13.1 预备知识 78
2.13.2 实战演练 78
2.13.3 工作原理 79
2.14 拼写检查与词典操作 80
2.14.1 实战演练 80
2.14.2 工作原理 81
2.15 交互输入自动化 82
2.15.1 预备知识 82
2.15.2 实战演练 82
2.15.3 工作原理 82
2.15.4 补充内容 83
2.16 利用并行进程加速命令执行 84
2.16.1 实战演练 84
2.16.2 工作原理 85
第3章 以文件之名 86
3.1 简介 86
3.2 生成任意大小的文件 86
3.3 文本文件的交集与差集 88
3.3.1 预备知识 88
3.3.2 实战演练 88
3.3.3 工作原理 90
3.4 查找并删除重复文件 90
3.4.1 预备知识 90
3.4.2 实战演练 91
3.4.3 工作原理 92
3.5 文件权限、所有权和粘滞位 93
3.5.1 实战演练 95
3.5.2 补充内容 96
3.6 创建不可修改的文件 97
3.6.1 预备知识 98
3.6.2 实战演练 98
3.7 批量生成空白文件 98
3.7.1 预备知识 98
3.7.2 实战演练 98
3.8 查找符号链接及其指向目标 99
3.8.1 实战演练 99
3.8.2 工作原理 100
3.9 列举文件类型统计信息 100
3.9.1 预备知识 100
3.9.2 实战演练 100
3.9.3 工作原理 102
3.10 使用环回文件 102
3.10.1 实战演练 103
3.10.2 工作原理 104
3.10.3 补充内容 104
3.11 生成ISO文件及混合型ISO 106
3.11.1 预备知识 106
3.11.2 实战演练 106
3.11.3 补充内容 107
3.12 查找文件差异并进行修补 108
3.12.1 实战演练 108
3.12.2 补充内容 110
3.13 使用head与tail打印文件的前10行和后10行 110
3.14 只列出目录的各种方法 113
3.14.1 预备知识 113
3.14.2 实战演练 113
3.14.3 工作原理 113
3.15 在命令行中使用pushd和popd进行快速定位 114
3.15.1 预备知识 114
3.15.2 实战演练 114
3.15.3 补充内容 115
3.16 统计文件的行数、单词数和字符数 115
3.17 打印目录树 116
3.17.1 预备知识 117
3.17.2 实战演练 117
3.17.3 补充内容 118
第4章 让文本飞 119
4.1 简介 119
4.2 使用正则表达式 119
4.2.1 实战演练 120
4.2.2 工作原理 120
4.2.3 补充内容 121
4.3 用grep在文件中搜索文本 122
4.3.1 实战演练 122
4.3.2 补充内容 125
4.4 用cut按列切分文件 128
4.4.1 实战演练 128
4.4.2 补充内容 130
4.5 使用sed进行文本替换 131
4.5.1 实战演练 131
4.5.2 补充内容 132
4.6 使用awk进行高级文本处理 135
4.6.1 预备知识 135
4.6.2 实战演练 135
4.6.3 工作原理 136
4.6.4 补充内容 137
4.7 统计特定文件中的词频 141
4.7.1 预备知识 141
4.7.2 实战演练 141
4.7.3 工作原理 142
4.7.4 参考 142
4.8 压缩或解压缩JavaScript 142
4.8.1 预备知识 142
4.8.2 实战演练 143
4.8.3 工作原理 144
4.8.4 参考 145
4.9 按列合并多个文件 145
4.9.1 实战演练 145
4.9.2 参考 146
4.10 打印文件或行中的第n个单词或列 146
4.10.1 实战演练 146
4.10.2 参考 146
4.11 打印行或样式之间的文本 146
4.11.1 预备知识 146
4.11.2 实战演练 147
4.11.3 参考 147
4.12 以逆序形式打印行 147
4.12.1 预备知识 148
4.12.2 实战演练 148
4.12.3 工作原理 148
4.13 解析文本中的电子邮件地址和URL 149
4.13.1 实战演练 149
4.13.2 工作原理 149
4.13.3 参考 150
4.14 在文件中移除包含某个单词的句子 150
4.14.1 预备知识 150
4.14.2 实战演练 150
4.14.3 工作原理 151
4.14.4 参考 151
4.15 对目录中的所有文件进行文本替换 151
4.15.1 实战演练 151
4.15.2 工作原理 151
4.15.3 补充内容 152
4.16 文本切片及参数操作 152
4.16.1 实战演练 152
4.16.2 参考 153
第5章 一团乱麻?没这回事 154
5.1 入门 154
5.2 Web页面下载 154
5.2.1 预备知识 154
5.2.2 实战演练 155
5.2.3 工作原理 155
5.2.4 补充内容 156
5.3 以纯文本形式下载网页 157
5.4 cURL入门 157
5.4.1 预备知识 158
5.4.2 实战演练 158
5.4.3 工作原理 158
5.4.4 补充内容 159
5.4.5 参考 161
5.5 从命令行访问Gmail 161
5.5.1 实战演练 162
5.5.2 工作原理 162
5.5.3 参考 163
5.6 解析网站数据 163
5.6.1 实战演练 163
5.6.2 工作原理 164
5.6.3 参考 164
5.7 图片抓取器及下载工具 164
5.7.1 实战演练 164
5.7.2 工作原理 165
5.7.3 参考 166
5.8 网页相册生成器 167
5.8.1 预备知识 167
5.8.2 实战演练 167
5.8.3 工作原理 169
5.8.4 参考 169
5.9 Twitter命令行客户端 169
5.9.1 预备知识 169
5.9.2 实战演练 171
5.9.3 工作原理 173
5.9.4 参考 173
5.10 基于Web后端的定义查询工具 173
5.10.1 预备知识 173
5.10.2 实战演练 175
5.10.3 工作原理 175
5.10.4 参考 175
5.11 查找网站中的无效链接 175
5.11.1 预备知识 176
5.11.2 实战演练 176
5.11.3 工作原理 177
5.11.4 参考 177
5.12 跟踪网站变动 177
5.12.1 预备知识 177
5.12.2 实战演练 177
5.12.3 工作原理 179
5.12.4 参考 179
5.13 以POST方式发送网页并读取响应 179
5.13.1 预备知识 179
5.13.2 实战演练 180
5.13.3 工作原理 180
5.13.4 参考 181
第6章 B计划 182
6.1 简介 182
6.2 用tar归档 182
6.2.1 预备知识 182
6.2.2 实战演练 183
6.2.3 工作原理 183
6.2.4 补充知识 184
6.2.5 参考 188
6.3 用cpio归档 188
6.3.1 实战演练 188
6.3.2 工作原理 189
6.4 使用gzip压缩数据 189
6.4.1 实战演练 189
6.4.2 补充内容 190
6.4.3 参考 193
6.5 用zip归档和压缩 193
6.5.1 实战演练 193
6.5.2 工作原理 194
6.6 更快速的归档工具pbzip2 194
6.6.1 预备知识 194
6.6.2 实战演练 194
6.6.3 工作原理 195
6.6.4 补充内容 195
6.7 创建压缩文件系统 195
6.7.1 预备知识 196
6.7.2 实战演练 196
6.7.3 补充内容 196
6.8 使用rsync备份系统快照 197
6.8.1 实战演练 197
6.8.2 工作原理 199
6.8.3 补充内容 199
6.9 用Git进行基于版本控制的备份 200
6.9.1 预备知识 200
6.9.2 实战演练 201
6.10 用fsarchiver创建全盘镜像 203
6.10.1 预备知识 203
6.10.2 实战演练 203
6.10.3 工作原理 204
第7章 无网不利 205
7.1 简介 205
7.2 网络设置 205
7.2.1 预备知识 206
7.2.2 实战演练 206
7.2.3 补充内容 207
7.2.4 参考 210
7.3 使用ping 210
7.3.1 实战演练 211
7.3.2 补充内容 212
7.4 列出网络上所有的活动主机 213
7.4.1 预备知识 214
7.4.2 实战演练 214
7.4.3 工作原理 215
7.4.4 补充内容 215
7.4.5 参考 216
7.5 使用SSH在远程主机上运行命令 216
7.5.1 预备知识 216
7.5.2 实战演练 217
7.5.3 补充内容 219
7.5.4 参考 220
7.6 通过网络传输文件 220
7.6.1 预备知识 220
7.6.2 实战演练 220
7.6.3 补充内容 221
7.6.4 参考 223
7.7 连接无线网络 223
7.7.1 预备知识 223
7.7.2 实战演练 223
7.7.3 工作原理 224
7.7.4 参考 225
7.8 用SSH实现无密码自动登录 225
7.8.1 预备知识 225
7.8.2 实战演练 225
7.9 使用SSH进行端口转发 227
7.9.1 实战演练 227
7.9.2 补充内容 227
7.10 在本地挂载点上挂载远程驱动器 228
7.10.1 预备知识 228
7.10.2 实战演练 228
7.10.3 参考 228
7.11 网络流量与端口分析 229
7.11.1 预备知识 229
7.11.2 实战演练 229
7.11.3 工作原理 230
7.11.4 补充内容 230
7.12 创建套接字 230
7.12.1 预备知识 231
7.12.2 实战演练 231
7.12.3 补充内容 231
7.13 互联网连接共享 231
7.13.1 预备知识 232
7.13.2 实战演练 232
7.14 使用iptables架设简易防火墙 233
7.14.1 实战演练 233
7.14.2 工作原理 233
7.14.3 补充内容 234
第8章 当个好管家 235
8.1 简介 235
8.2 监视磁盘使用情况 235
8.2.1 预备知识 236
8.2.2 实战演练 236
8.2.3 补充内容 237
8.3 计算命令执行时间 240
8.3.1 实战演练 240
8.3.2 工作原理 242
8.4 收集与当前登录用户、启动日志及启动故障的相关信息 243
8.4.1 预备知识 243
8.4.2 实战演练 243
8.5 列出1小时内占用CPU最多的10个进程 245
8.5.1 预备知识 245
8.5.2 实战演练 245
8.5.3 工作原理 247
8.5.4 参考 247
8.6 使用watch监视命令输出 247
8.6.1 实战演练 247
8.6.2 补充内容 248
8.7 记录文件及目录访问 248
8.7.1 预备知识 248
8.7.2 实战演练 248
8.7.3 工作原理 249
8.8 用logrotate管理日志文件 249
8.8.1 预备知识 250
8.8.2 实战演练 250
8.8.3 工作原理 250
8.9 用syslog记录日志 251
8.9.1 预备知识 251
8.9.2 实战演练 252
8.9.3 参考 252
8.10 通过监视用户登录找出入侵者 252
8.10.1 预备知识 253
8.10.2 实战演练 253
8.10.3 工作原理 254
8.11 监视远程磁盘的健康情况 255
8.11.1 预备知识 256
8.11.2 实战演练 256
8.11.3 工作原理 257
8.11.4 参考 258
8.12 找出系统中用户的活跃时段 258
8.12.1 预备知识 258
8.12.2 实战演练 258
8.12.3 工作原理 259
8.13 电源使用的测量与优化 260
8.13.1 预备知识 260
8.13.2 实战演练 260
8.14 监视磁盘活动 261
8.14.1 预备知识 261
8.14.2 实战演练 262
8.15 检查磁盘及文件系统错误 262
8.15.1 预备知识 262
8.15.2 实战演练 262
8.15.3 工作原理 263
第9章 管理重任 264
9.1 简介 264
9.2 收集进程信息 264
9.2.1 预备知识 264
9.2.2 实战演练 265
9.2.3 工作原理 266
9.2.4 补充内容 267
9.2.5 参考 273
9.3 杀死进程以及发送或响应信号 273
9.3.1 预备知识 273
9.3.2 实战演练 274
9.3.3 补充内容 274
9.4 向用户终端发送消息 276
9.4.1 预备知识 276
9.4.2 实战演练 276
9.4.3 工作原理 278
9.5 采集系统信息 278
9.6 使用proc采集信息 279
9.7 用cron进行调度 280
9.7.1 预备知识 280
9.7.2 实战演练 280
9.7.3 工作原理 281
9.7.4 补充内容 282
9.8 从Bash中读写MySQL数据库 283
9.8.1 预备知识 283
9.8.2 实战演练 283
9.8.3 工作原理 286
9.9 用户管理脚本 287
9.9.1 实战演练 287
9.9.2 工作原理 289
9.10 图像文件的缩放及格式转换 291
9.10.1 预备知识 291
9.10.2 实战演练 291
9.10.3 工作原理 294
9.10.4 参考 294
9.11 从终端截图 294
9.11.1 预备知识 295
9.11.2 实战演练 295
9.12 管理多个终端 295
9.12.1 预备知识 295
9.12.2 实战演练 295
· · · · · · (收起)
读后感
我看了这本书,我也看了前面的一些评论。我个人的感觉是这本书的干货还是很多的,作者很努力的想写成一个有体系的内容,但是从书本内容来看,还是不够的,讲得不够深入,节点性的知识点很多,但是为了解决一些常见问题,很有用。 需要赞一个的是这本书的书名,c...
刚又看到一处P175 页,如果destination_path 末尾使用/,明明原书写的是source(源地址),这么小儿科的问题充分暴露了译者的马虎。 文章采用代码都是从原书上复制来的,关键是换行也复制过来了, 明明一行命令还没到页宽,就啪的一下换行了,匪夷所思!!! 作者自己完全没有...
这本书不错,就是书薄了点,不过正所谓少而精么,对于初学者,绝对是一本不错的提高书。书中有很多技巧是很多脚本老手经常使用,却不会手把手教你的。不同于传统的脚本书籍,这本书没有长篇大论,都是一个接着一个的小技巧,很实用。
我看了这本书,我也看了前面的一些评论。我个人的感觉是这本书的干货还是很多的,作者很努力的想写成一个有体系的内容,但是从书本内容来看,还是不够的,讲得不够深入,节点性的知识点很多,但是为了解决一些常见问题,很有用。 需要赞一个的是这本书的书名,c...
用户评价
作为一名有几年Linux使用经验但从未深入接触过Shell脚本的开发者,我一直觉得Shell脚本是运维人员的专属技能,直到我翻开了《Linux Shell脚本攻略(第2版)》。这本书的深度和广度都让我眼前一亮。它并没有局限于基础语法的讲解,而是很快地切入到了一些更高级的主题,比如进程管理、系统监控、网络通信等与Shell脚本紧密结合的应用场景。我特别喜欢书中关于错误处理和调试技巧的部分,这些内容对于写出健壮、可维护的脚本至关重要。作者通过一些精心设计的例子,教会我如何预判可能出现的错误,并编写相应的代码来优雅地处理它们,这大大提高了我的脚本编写质量。此外,书中还涉及了一些与Shell脚本协同工作的工具和技术,比如`sed`、`awk`、`grep`的高级用法,以及如何利用它们来处理复杂的文本数据。这让我意识到,Shell脚本不仅仅是简单的命令组合,它更是一个强大的文本处理和系统自动化工具。读完这本书,我感觉自己对Linux系统的理解上升到了一个新的层面,能够通过Shell脚本更有效地管理和优化我的服务器环境。这本书对于想要从“脚本使用者”升级到“脚本创造者”的读者来说,绝对是一本不可多得的宝藏。
对于长期在Windows环境下工作的我来说,Linux Shell脚本就像是另一个维度的语言。《Linux Shell脚本攻略(第2版)》为我打开了这扇新世界的大门。这本书的特色在于它非常注重实践,书中大量的代码示例都直接可用,并且附带了清晰的解释,让我能够边学边练。作者在讲解过程中,总是会强调“为什么”要这样做,而不是仅仅告诉“怎么”做。这种深入的原理分析,让我能够举一反三,触类旁通。我特别欣赏书中关于正则表达式和文本流处理的章节,这些内容对于处理日志文件、配置文件等日常任务非常有帮助。通过学习,我能够更高效地从海量数据中提取所需信息,大大提高了工作效率。书中还介绍了一些常用的Shell脚本工具,如`cron`定时任务、`ssh`远程连接等,这些都极大地扩展了Shell脚本的应用范围。读这本书的过程,就像是在和一位经验丰富的老师进行一对一的交流,他会耐心解答你的每一个疑问,并引导你走向正确的方向。这本书让我从对Shell脚本的陌生和畏惧,转变为对其的熟悉和喜爱。
这本书的名字是《Linux Shell脚本攻略(第2版)》,我作为一个初学者,拿到这本书简直是如获至宝!之前对Shell脚本完全是一头雾水,感觉它就像一个神秘的黑匣子,里面充满了各种奇奇怪怪的命令和符号。但这本书从最基础的概念讲起,一步一步地引导我理解Shell脚本到底是什么,它能做什么,以及为什么它如此强大。作者并没有直接丢给我一堆复杂的代码,而是用非常生动形象的比喻来解释那些抽象的编程概念,比如变量、循环、条件判断等等,就像是在教小朋友学说话一样,循序渐进,一点都不枯燥。更让我惊喜的是,书中提供了大量的实际案例,这些案例都非常贴近日常的Linux系统管理工作,比如自动化备份、日志分析、文件批量处理等等。我跟着书中的例子敲一遍,感觉自己真的能够解决一些实际的问题了,这种成就感是无法用言语来形容的。而且,书中对每一个命令的解释都非常详尽,不仅仅是告诉你它是什么,还会告诉你它有哪些选项,这些选项分别有什么作用,以及在什么场景下使用会更高效。我感觉自己不再是那个只会复制粘贴命令的“小白”了,而是开始真正理解Shell脚本的逻辑和魅力。这本书真的是我踏入Linux Shell脚本世界最好的启蒙老师!
当我拿到《Linux Shell脚本攻略(第2版)》时,我抱着试试看的心态,希望能够解决一些日常工作中重复性的任务。这本书并没有让我失望,它以一种非常务实的方式,将Shell脚本的应用场景与实际问题紧密结合。我最看重的是书中关于函数和模块化开发的讲解,这让我能够将复杂的脚本分解成更小的、可重用的部分,从而提高代码的可读性和可维护性。作者还分享了许多编写高效脚本的技巧,比如如何优化命令的执行效率,如何避免不必要的资源消耗等等。这些细节虽然看起来微小,但对于大型项目的开发来说却至关重要。书中对错误处理机制的深入剖析,也让我能够写出更加健壮的脚本,避免因为意外情况导致脚本中断。我尤其喜欢书中关于系统状态监控的脚本示例,这些脚本能够帮助我实时了解服务器的运行状况,及时发现和解决潜在问题。这本书让我深刻体会到,Shell脚本不仅仅是一个简单的自动化工具,它更是一个强大的系统管理和问题解决的利器。
对于已经有一定Shell脚本基础,但希望进一步提升技术水平的读者,《Linux Shell脚本攻略(第2版)》同样提供了丰富的进阶内容。书中深入探讨了Shell脚本的安全问题,例如如何避免命令注入、如何管理敏感信息等,这对于任何系统管理员来说都是必不可少的知识。作者还介绍了一些高级的Shell特性,比如子Shell、管道、重定向的组合使用,以及如何利用它们来实现更复杂的逻辑。我尤其被书中关于多线程和并发处理的章节所吸引,这让我能够利用Shell脚本来处理一些对性能要求较高的任务。此外,书中还涉及了一些Shell脚本的性能调优方法,比如如何选择合适的命令、如何避免不必要的进程创建等等。这些内容让我对Shell脚本的理解不再停留在表面,而是能够深入到底层,掌握更精妙的控制技巧。这本书不仅提升了我的Shell脚本编写能力,更重要的是,它培养了我对Shell脚本的系统化思考方式。我感觉自己已经能够独立解决更复杂的问题,并能够为团队贡献更优质的脚本解决方案。
常用的命令,没注意到的参数
给初学者看的
本书偏重于实践,对于某些模块没有细说,结合《Linux命令行与Shell脚本编程大全》一起看会有很多收获
读了一章,怒赞呀! shell本来零碎知识点就很多,而且业界中用到还很多。 原先的教程要么是讲得太多(私房菜那个书),要么是讲得不全或者不清楚。 这本书很好,入门必备呀。要多读几遍,不然很快就没印象了 读完了,后面几章多数内容不常用。前四章还是很赞的。
给初学者看的