本书将带您从初探终端始,学习使用bash(Linux Shell)编写完整的程序。 本书的内容涉及bash 4.x,例如重定向操作符和Shell扩展知识。更新的Shell脚本部分讨论了Shell脚本实践以及避免常见类型的潜在危险故障的方法。 您将学习以下内容: 创建和删除文件、目录和符号; 管理系统,包括联网、软件包安装和程管理; 使用标准输和标准输出、重定向和管道; 使用文本编辑器 Vi 编辑文件;
售 价:¥
纸质售价:¥64.50购买纸书
温馨提示:数字商品不支持退换货,不提供源文件,不支持导出打印
为你推荐
扉页
版权页
目录
内容提要
前言
资源与支持
第一部分 学习Shell
第1章 什么是Shell
1.1 终端仿真器
1.2 小试牛刀
1.2.1 命令历史
1.2.2 光标移动
1.3 几个简单的命令
1.4 结束终端会话
1.5 总结
第2章 导航
2.1 理解文件系统树
2.2 当前工作目录
2.3 列出目录内容
2.4 更改当前工作目录
2.4.1 绝对路径名
2.4.2 相对路径名
2.4.3 一些有用的便捷写法
2.5 总结
第3章 探索Linux系统
3.1 使用ls命令之乐
3.1.1 选项与参数
3.1.2 进一步了解长格式
3.2 使用file命令确定文件类型
3.3 使用less命令查看文本文件
3.4 按图索骥
3.5 符号链接
3.6 硬链接
3.7 总结
第4章 操作文件和目录
4.1 通配符
4.2 mkdir——创建目录
4.3 cp——复制文件和目录
4.4 mv——移动和重命名文件
4.5 rm——删除文件和目录
4.6 ln——创建硬链接和符号链接
4.6.1 硬链接
4.6.2 符号链接
4.7 实战演练
4.7.1 创建目录
4.7.2 复制文件
4.7.3 移动和重命名文件
4.7.4 创建硬链接
4.7.5 创建符号链接
4.7.6 删除文件和目录
4.8 总结
第5章 和命令打交道
5.1 命令究竟是什么
5.2 识别命令
5.2.1 type——显示命令类型
5.2.2 which——显示可执行文件的位置
5.3 获取命令文档
5.3.1 help——获取Shell内建命令的帮助信息
5.3.2 --help——显示用法信息
5.3.3 man——显示命令的手册页
5.3.4 apropos——显示适合的命令清单
5.3.5 whatis——显示手册页的简述
5.3.6 info——显示程序的info条目
5.3.7 文档文件
5.4 使用alias创建自己的命令
5.5 总结
第6章 重定向
6.1 标准输入、标准输出及标准错误
6.2 标准输出重定向
6.3 标准错误重定向
6.3.1 将标准输出和标准错误重定向到同一个文件中
6.3.2 丢弃用不着的输出结果
6.4 标准输入重定向
6.5 管道
6.5.1 排序列表
6.5.2 uniq——报告或忽略重复行
6.5.3 wc——统计文件中换行符、单词以及字节的数量
6.5.4 grep——输出与模式匹配的行
6.5.5 head/tail——输出文件的开头/结尾部分
6.5.6 tee——读取标准输入并将输出结果写入标准输出和文件
6.6 总结
第7章 “Shell眼”看世界
7.1 扩展
7.1.1 路径名扩展
7.1.2 浪纹线扩展
7.1.3 算术扩展
7.1.4 花括号扩展
7.1.5 参数扩展
7.1.6 命令替换
7.2 引用
7.2.1 双引号
7.2.2 单引号
7.2.3 转义字符
7.2.4 反斜线转义序列
7.3 总结
第8章 高级键盘技巧
8.1 编辑命令行
8.1.1 光标移动
8.1.2 修改文本
8.1.3 剪切和粘贴文本
8.2 补全功能
8.3 命令历史记录
8.3.1 搜索历史记录
8.3.2 历史扩展
8.4 总结
第9章 权限
9.1 属主、属组以及其他用户
9.2 读取、写入和执行
9.2.1 chmod——修改文件模式
9.2.2 使用GUI设置文件模式
9.2.3 umask——设置默认权限
9.2.4 一些特殊的权限
9.3 改变用户身份
9.3.1 su——以其他用户身份启动Shell
9.3.2 sudo——以其他用户身份执行命令
9.3.3 chown——更改文件属主和属组
9.3.4 chgrp——更改文件属组
9.4 行使权限
9.5 修改密码
9.6 总结
第10章 进程
10.1 进程的工作方式
10.2 查看进程
10.3 进程控制
10.3.1 中断进程
10.3.2 将进程置于后台
10.3.3 使进程返回前台
10.3.4 停止进程
10.4 信号
10.4.1 使用kill命令向进程发送信号
10.4.2 使用killall命令向多个进程发送信号
10.5 关闭系统
10.6 更多与进程相关的命令
10.7 总结
第二部分 配置与环境
第11章 环境
11.1 环境中都保存了什么
11.1.1 检查环境
11.1.2 一些值得注意的环境变量
11.2 如何建立环境
11.3 修改环境
11.3.1 应该修改哪些文件
11.3.2 文本编辑器
11.3.3 使用文本编辑器
11.3.4 使改动生效
11.4 总结
第12章 Vi入门
12.1 为什么要学习Vi
12.2 背景知识
12.3 启动和退出Vi
12.4 编辑模式
12.4.1 进入插入模式
12.4.2 保存文件
12.5 光标移动
12.6 基本编辑
12.6.1 追加
12.6.2 新建
12.6.3 删除
12.6.4 剪切、复制及粘贴
12.6.5 合并
12.7 搜索和替换
12.7.1 行内搜索
12.7.2 搜索整个文件
12.7.3 全局搜索和替换
12.8 编辑多个文件
12.8.1 在文件之间切换
12.8.2 载入更多的文件进行编辑
12.8.3 将一个文件的内容复制到另一个文件
12.8.4 将整个文件插入另一个文件
12.9 保存工作
12.10 总结
第13章 定制提示符
13.1 分解提示符
13.2 换一种提示符
13.3 增加颜色
13.4 移动光标
13.5 保存提示符
13.6 总结
第三部分 常见任务与必备工具
第14章 软件包管理
14.1 打包系统
14.2 软件包的工作方式
14.2.1 软件包文件
14.2.2 仓库
14.2.3 依赖性
14.2.4 低层和高层工具
14.3 常见的软件包管理任务
14.3.1 在仓库中查找软件包
14.3.2 安装仓库中的软件包
14.3.3 安装软件包文件中的软件包
14.3.4 删除软件包
14.3.5 通过仓库更新软件包
14.3.6 通过软件包文件更新软件包
14.3.7 列举已安装的软件包
14.3.8 确定软件包是否已安装
14.3.9 显示已安装软件包的相关信息
14.3.10 识别某个文件是哪个软件包安装的
14.4 总结
第15章 存储介质
15.1 存储设备的挂载与卸载
15.1.1 查看已挂载的文件系统列表
15.1.2 确定设备名称
15.2 创建新文件系统
15.2.1 用fdisk操作分区
15.2.2 使用mkfs创建新的文件系统
15.3 文件系统的检查和修复
15.4 在设备之间直接移动数据
15.4.1 向可刻录CD写入数据
15.4.2 创建CD-ROM的ISO映像文件
15.4.3 用文件集合创建ISO映像文件
15.5 写入CD-ROM的ISO映像文件
15.5.1 直接挂载ISO映像文件
15.5.2 擦除可刻录CD
15.5.3 刻录映像文件
15.6 总结
第16章 联网
16.1 网络检查与监控
16.1.1 ping
16.1.2 traceroute
16.1.3 ip
16.1.4 netstat
16.2 通过网络传输文件
16.2.1 ftp
16.2.2 lftp——更好的ftp
16.2.3 wget
16.3 与远程主机的安全通信
16.3.1 ssh
16.3.2 scp与sftp
16.4 总结
第17章 查找文件
17.1 locate——简单的文件查找方法
17.2 find——复杂的文件查找方法
17.2.1 测试条件
17.2.2 操作符
17.2.3 预定义操作
17.2.4 用户自定义操作
17.2.5 提高效率
17.2.6 xargs
17.2.7 实战演练
17.2.8 find命令选项
17.3 总结
第18章 归档与备份
18.1 压缩文件
18.1.1 gzip
18.1.2 bzip2
18.2 文件归档
18.2.1 tar
18.2.2 zip
18.3 同步文件与目录
18.4 总结
第19章 正则表达式
19.1 什么是正则表达式
19.2 grep
19.3 元字符与文字字符
19.4 任意字符
19.5 锚点
19.6 方括号表达式与字符类
19.6.1 排除
19.6.2 传统的字符范围
19.7 POSIX字符类
19.8 POSIX基本型正则表达式与扩展型正则表达式
19.9 多选结构
19.10 量词
19.10.1 ?——匹配0次或1次
19.10.2 *——匹配0次或多次
19.10.3 +——匹配1次或多次
19.10.4 {}——匹配指定次数
19.11 实战演练
19.11.1 使用grep验证电话号码列表
19.11.2 使用find查找路径名
19.11.3 使用locate搜索文件
19.11.4 使用Less和Vim搜索文本
19.12 总结
第20章 文本处理
20.1 文本的应用
20.1.1 文档
20.1.2 网页
20.1.3 电子邮件
20.1.4 打印机输出
20.1.5 程序源代码
20.2 温故知新
20.2.1 cat——连接文件并打印
20.2.2 sort——排序
20.2.3 uniq——删除重复行
20.3 切片和切块
20.3.1 cut——从每行中删除部分内容
20.3.2 paste——合并行
20.3.3 join——连接两个文件中具有公共字段的行
20.4 比较文本
20.4.1 comm——逐行比较两个已排序的文件
20.4.2 diff——逐行比较文件
20.4.3 patch——对原文件应用diff文件
20.5 即时编辑
20.5.1 tr——转写或删除字符
20.5.2 sed——用于文本过滤和转换的流编辑器
20.5.3 aspell——交互式拼写检查器
20.6 总结
第21章 格式化输出
21.1 简单的格式化工具
21.1.1 nl——对行进行编号
21.1.2 fold——在指定长度处折行
21.1.3 fmt——一个简单的文本格式化工具
21.1.4 pr——格式化要输出的文本
21.1.5 printf——格式化并输出数据
21.2 文档格式化系统
21.3 总结
第22章 打印
22.1 打印简史
22.1.1 “黑暗”时代
22.1.2 基于字符的打印机
22.1.3 图形化打印机
22.2 Linux的打印功能
22.3 准备文件打印
22.4 将打印作业发送至打印机
22.4.1 lpr——以Berkeley风格打印文件
22.4.2 lp——以System V风格打印文件
22.4.3 a2ps——在PostScript打印机上打印文件
22.5 监控打印作业
22.5.1 lpstat——显示打印系统状态
22.5.2 lpq——显示打印队列状态
22.5.3 lprm/cancel——取消打印作业
22.6 总结
第23章 编译程序
23.1 什么是编译
23.2 编译C程序
23.2.1 获取源代码
23.2.2 检查源代码树
23.2.3 构建程序
23.2.4 安装程序
23.3 总结
第四部分 编写Shell脚本
第24章 编写第一个脚本
24.1 什么是Shell脚本
24.2 如何创建并执行Shell脚本
24.2.1 脚本文件格式
24.2.2 可执行权限
24.2.3 脚本位置
24.2.4 脚本的理想位置
24.3 更多的格式技巧
24.3.1 长选项
24.3.2 缩进与续行
24.4 总结
第25章 启动项目
25.1 第一阶段:最小化文档
25.2 第二阶段:添加数据
25.3 变量与常量
25.3.1 为变量与常量赋值
25.3.2 here document
25.4 总结
第26章 自顶向下设计
26.1 Shell函数
26.2 局部变量
26.3 保持脚本执行
26.4 总结
第27章 流程控制:if分支
27.1 if语句
27.2 退出状态
27.3 使用test
27.3.1 文件表达式
27.3.2 字符串表达式
27.3.3 整数表达式
27.4 更现代的test
27.5 (())——为整数设计
27.6 组合表达式
27.7 控制操作符:另一种分支方式
27.8 总结
第28章 读取键盘输入
28.1 read——从标准输入读取值
28.1.1 选项
28.1.2 IFS
28.2 验证输入
28.3 菜单
28.4 总结
第29章 流程控制:while/until循环
29.1 循环
29.2 跳出循环
29.3 使用循环读取文件
29.4 总结
第30章 故障诊断
30.1 语法错误
30.1.1 缺少引号
30.1.2 缺少词法单元
30.1.3 出乎意料的扩展
30.2 逻辑错误
30.2.1 防御式编程
30.2.2 小心文件名
30.2.3 核实输入
30.3 测试
30.4 调试
30.4.1 查找问题区域
30.4.2 跟踪
30.4.3 在执行过程中检查值
30.5 总结
第31章 流程控制:case分支
31.1 case命令
31.1.1 模式
31.1.2 执行多次操作
31.2 总结
第32章 位置参数
32.1 访问命令行
32.1.1 确定参数个数
32.1.2 shift——访问多个参数
32.1.3 简单应用
32.1.4 在Shell函数中使用位置参数
32.2 批量处理位置参数
32.3 一个更完整的应用
32.4 总结
第33章 流程控制:for循环
33.1 for的传统形式
33.2 for的C语言形式
33.3 总结
第34章 字符串与数字
34.1 参数扩展
34.1.1 基本参数
34.1.2 管理空变量扩展
34.1.3 返回变量名的扩展
34.1.4 字符串操作
34.1.5 大小写转换
34.2 算术求值与扩展
34.2.1 数字基数
34.2.2 一元操作符
34.2.3 简单算术
34.2.4 赋值
34.2.5 位操作
34.2.6 逻辑操作
34.3 bc——任意精度计算器语言
34.3.1 使用bc
34.3.2 示例脚本
34.4 总结
第35章 数组
35.1 什么是数组
35.1.1 创建数组
35.1.2 为数组赋值
35.1.3 访问数组元素
35.2 数组操作
35.2.1 输出数组的全部内容
35.2.2 确定数组元素的数量
35.2.3 查找数组使用的索引
35.2.4 向数组尾部添加元素
35.2.5 数组排序
35.2.6 删除数组
35.3 关联数组
35.4 总结
第36章 其他命令
36.1 分组命令与子Shell
36.2 陷阱
36.3 使用wait实现异步执行
36.4 具名管道
36.4.1 创建具名管道
36.4.2 使用具名管道
36.5 总结
买过这本书的人还买过
读了这本书的人还在读
同类图书排行榜