| 作者 |
| Sriranga Veeraraghav |
| 丛书名 |
| 自学通系列 |
| 出版社 |
| 机械工业出版社 |
| ISBN |
| 9787111072652 |
| 简要 |
| 简介 |
| 内容简介书籍计算机书籍 本书以循序渐进的方式全面系统地介绍了UNIX中Shell编程的方法,重点讲述了如何使用Shell所提供的工具编写出灵活高效的程序。 全书分为24学时,首先回顾了UNIX的基本内容,然后介绍如何使用Shell所提供的各种工具编写程序,最后讲解了Shell编程中可能会遇到的一些问题。另外,本书在每学时之后都为读者提供了习题,以帮助读者更好地掌握所学的内容。 本书内容丰富,结构合理清晰,既可作为UNIX开发人员的参考书,又可作为计算机应用人员的培训教材。 |
| 目录 |
| 目 录 译者序 前言 第一部分 UNIX和Shell工具简介 第1学时 Shell基础 1 1.1 什么是命令 1 1.1.1 简单命令 2 1.1.2 复杂命令 2 1.1.3 复合命令 3 1.1.4 命令分隔符 3 1.2 什么是Shell 4 1.2.1 Shell提示符 4 1.2.2 Shell的类型 5 1.3 小结 8 1.4 问题 8 1.5 术语 8 第2学时 脚本基础 10 2.1 UNIX系统 10 2.2 Shell初始化 11 2.2.1 交互和非交互Shell 12 2.2.2 初始化文件的内容 13 2.2.3 使Shell脚本可执行 14 2.3 获取帮助 15 2.3.1 使用man命令 15 2.3.2 指南部分划分 16 2.4 小结 17 2.5 问题 17 2.6 术语 17 第3学时 文件操作 19 3.1 列文件名 19 3.1.1 隐藏文件 20 3.1.2 选项组合 21 3.2 浏览文件内容 21 3.2.1 cat 21 3.2.2 统计单词(wc) 22 3.3 操作文件 24 3.3.1 拷贝文件(cp) 24 3.3.2 重命名文件(mv) 25 3.3.3 删除文件(rm) 26 3.4 小结 26 3.5 问题 27 3.6 术语 27 第4学时 操作 28 4.1 树 28 4.1.1 文件名 28 4.1.2 路径名 29 4.2 改变 31 4.2.1 起始 31 4.2.2 改变 31 4.3 列文件和 32 4.3.1 列 32 4.3.2 列文件 33 4.4 操作 34 4.4.1 创建 34 4.4.2 拷贝文件和 35 4.4.3 移动文件和 36 4.4.4 删除 37 4.5 小结 38 4.6 问题 38 第5学时 文件属性操作 40 5.1 文件类型 40 5.1.1 判断文件类型 40 5.1.2 普通文件 41 5.1.3 符号链 41 5.1.4 设备文件 42 5.1.5 命名管道 43 5.2 所有者、组和权限 43 5.2.1 查看权限 44 5.2.2 改变文件和权限 45 5.2.3 改变所有者和组 47 5.3 小结 48 5.4 问题 49 第6学时 进程 50 6.1 启动一个进程 50 6.1.1 前台进程 50 6.1.2 后台进程 51 6.2 列出正在运行的进程 55 6.2.1 jobs命令 55 6.2.2 ps命令 55 6.3 杀死一个进程(kill命令) 57 6.4 父进程和子进程 58 6.4.1 任务ID和进程ID 58 6.4.2 SubShells 58 6.4.3 进程权限 59 6.4.4 覆盖当前进程(exec命令) 59 6.5 小结 60 6.6 问题 60 6.7 术语 60 第二部分 Shell编程 第7学时 变量 63 7.1 定义变量 63 7.1.1 变量名 63 7.1.2 访问值 64 7.1.3 数组变量 64 7.1.4 访问数组值 66 7.1.5 只读变量 67 7.2 删除变量 67 7.3 环境变量 67 7.3.1 导出环境变量 68 7.3.2 Shell变量 69 7.4 小结 69 7.5 问题 69 7.6 术语 70 第8学时 替换 71 8.1 文件名替换 71 8.1.1 使用* 通配符 71 8.1.2 使用?通配符 73 8.1.3 匹配字符集 73 8.2 变量替换 74 8.2.1 替换缺省值 75 8.2.2 赋予一个缺省值 75 8.2.3 由于变量错误而导致中止 75 8.3 命令和算术替换 76 8.3.1 命令替换 76 8.3.2 算术替换 77 8.4 小结 77 8.5 问题 77 第9学时 引用 78 9.1 用反斜线引用 78 9.2 使用单撇号 79 9.3 使用双撇号 80 9.4 引用规则和环境 81 9.4.1 引用忽略了单词边界 81 9.4.2 命令中的组合引用 81 9.4.3 在单个参数中嵌入空格 81 9.4.4 引用换行符达到在下一 行续行的目的 82 9.4.5 为访问包含特殊字符的 文件名而引用 82 9.4.6 引用正规表达式通配符 83 9.4.7 引用反斜线开启echo转义序列 83 9.4.8 为cpio和find命令引用通配符 84 9.5 小结 84 9.6 问题 85 9.7 术语 85 第10学时 流控制 87 10.1 if语句 87 10.1.1 一个if语句的实例 88 10.1.2 使用test 89 10.2 case语句 95 10.2.1 case语句的实例 95 10.2.2 使用模式(pattern) 96 10.3 小结 96 10.4 问题 97 第11学时 循环 98 11.1 while循环 98 11.1.1 while循环嵌套 99 11.1.2 until循环 101 11.2 for和select循环 102 11.2.1 for循环 102 11.2.2 select循环 103 11.3 循环控制 105 11.3.1 无限循环和break命令 105 11.3.2 continue命令 106 11.4 小结 107 11.5 问题 107 11.6 术语 107 第12学时 参数 109 12.1 特殊变量 109 12.1.1 使用$0 110 12.1.2 usage语句 110 12.2 选项和参数 111 12.2.1 一个处理参数的实例 111 12.2.2 使用basename命令 112 12.2.3 公用参数处理问题 112 12.3 Shell脚本中的选项分析 114 12.4 小结 118 12.5 问题 118 第13学时 输入/输出 119 13.1 输出 119 13.1.1 向终端输出 119 13.1.2 输出重定向 125 13.2 输入 127 13.2.1 输入重定向 127 13.2.2 读取用户输入 128 13.2.3 管道 129 13.3 文件描述符 129 13.3.1 将文件和文件描述符关联起来 130 13.3.2 输入/输出重定向通用的格式 130 13.4 小结 133 13.5 问题 133 13.6 术语 134 第14学时 函数 135 14.1 创建和使用函数 135 14.1.1 激活一个函数 135 14.1.2 函数举例 136 14.2 在函数间共享数据以及共享 数据的一个示例 138 14.2.1 在文件系统间移动 138 14.2.2 实现dirs 139 14.2.3 实现pushd 139 14.2.4 实现popd 140 14.3 小结 142 14.4 问题 142 第15学时 文本过滤器 143 15.1 head和tail命令 143 15.1.1 head命令 143 15.1.2 tail命令 144 15.2 使用grep 145 15.2.1 查找单词 145 15.2.2 从STDIN(标准输入)中读入 146 15.2.3 行号 147 15.2.4 只列出文件名 147 15.3 统计单词的总数 148 15.3.1 tr命令 148 15.3.2 sort命令 150 15.3.3 uniq命令 150 15.3.4 为数字排序 151 15.3.5 tr命令中字符分类的使用 152 15.4 小结 154 15.5 问题 154 第16学时 使用正规表达式过滤文本 155 16.1 awk和sed基础 155 16.1.1 激活语法 155 16.1.2 基本操作 155 16.1.3 正规表达式 156 16.2 使用sed 160 16.2.1 打印行 161 16.2.2 删除行 161 16.2.3 执行替换 162 16.2.4 使用多个sed命令 164 16.2.5 在管道中使用sed 164 16.3 小结 165 16.4 问题 165 第17学时 使用awk过滤文本 167 17.1 什么是awk 167 17.1.1 基本语法 167 17.1.2 域编辑 168 17.1.3 执行“模式—特定”行为 169 17.1.4 比较操作符 170 17.1.5 使用STDIN作为输入 172 17.2 利用awk的特点 172 17.2.1 变量 172 17.2.2 流控制 178 17.3 小结 181 17.4 问题 181 17.5 术语 183 第18学时 各种工具 184 18.1 eval命令 184 18.2 “:”命令 185 18.3 type命令 185 18.4 sleep命令 186 18.5 find命令 187 18.5.1 find:开始 187 18.5.2 find: -name选项 188 18.5.3 find: type选项 189 18.5.4 find:-mtime, -atime, -ctime 189 18.5.5 find: -size选项 190 18.5.6 find:组合选项 190 18.5.7 find:否定选项 190 18.5.8 find:-print动作 190 18.5.9 find:-exec动作 191 18.6 xargs 191 18.7 expr命令 192 18.8 bc命令 193 18.9 remsh/rsh/rcmd/remote(远程Shell) 194 18.10 小结 195 18.11 问题 195 18.12 术语 196 第三部分 高级主题 第19学时 信号处理 197 19.1 信号代表什么 197 19.1.1 获得一个信号列表 197 19.1.2 缺省动作 198 19.1.3 传递信号 198 19.2 处理信号 199 19.2.1 trap命令 200 19.2.2 清除临时文件 200 19.2.3 忽略信号 201 19.2.4 建立一个计时器 202 19.3 小结 204 19.4 问题 204 第20学时 调试 205 20.1 启动调试 205 20.2 语法检查 207 20.2.1 为什么应该使用语法检查 207 20.2.2 使用verbose模式 208 20.3 Shell跟踪 209 20.3.1 使用Shell跟踪发现语法缺陷 210 20.3.2 使用Shell跟踪找出逻辑缺陷 212 20.3.3 使用调试陷阱 213 20.4 小结 215 20.5 问题 215 第21学时 使用函数解决问题 216 21.1 创建一个函数库 216 21.1.1 创建库 216 21.1.2 从一个库中包含函数 217 21.1.3 命名习惯 217 21.2 有用的函数 218 21.2.1 显示信息 218 21.2.2 询问一个问题 219 21.2.3 检查磁盘空间 223 21.2.4 通过名字获得进程ID 225 21.2.5 获得一个用户ID 226 21.2.6 完整函数库 227 21.3 小结 231 21.4 问题 231 21.5 术语 231 第22学时 使用Shell脚本解决问题 232 22.1 移动 232 22.1.1 使用tar 233 22.1.2 mvdir. sh 233 22.1.3 mvdir.sh概述 235 22.1.4 示例 236 22.2 维护一个地址簿 237 22.2.1 显示信息 238 22.2.2 增加信息 239 22.2.3 删除信息 242 22.3 小结 245 22.4 问题 245 22.5 术语 247 第23学时 脚本可移植性 248 23.1 判断UNIX版本 248 23.1.1 BSD和System V 248 23.1.2 使用uname 249 23.1.3 使用函数判断UNIX版本 250 23.2 提高可移植性的技巧 251 23.2.1 条件执行 252 23.2.2 抽取 253 23.3 小结 255 23.4 问题 255 23.5 术语 255 第24学时 Shell编程疑难解答 256 24.1 有关Shell和命令的问题 256 24.2 有关变量和参数的问题 258 24.3 有关文件和的问题 259 24.4 小结 262 第四部分 附 录 附录A 命令快速参考 263 附录B 词汇表 273 附录C 习题答案 279 |