当前位置首页 > 百科> 正文

Linux Shell命令行及脚本编程实例详解

2019-10-01 19:44:34 百科
Linux Shell命令行及脚本编程实例详解

Linux Shell命令行及脚本编程实例详解

本书理论结合实践,全面、系统地介绍了Linux Shell(Bash)脚本编程的语法、命令、技巧等内容。本书偏重于实践教学,在讲解理论知识时,通过一些典型实例让读者了解理论知识在实际环境中的套用,并对易混淆和较难理解的知识点做了重点分析,以加深读者对知识的理解。另外,作者专门为本书录製了高清配套教学视频,以帮助读者高效学习,同时也提供了本书实例源程式以方便读者学习。 本书共15章,分为两篇。主要内容包括:Linux及Linux Shell简介、初识Linux Shell、常用Shell(Bash)命令、Shell命令进阶、Shell编程基础、Shell的条件执行、Bash循环、Shell函式、正则表达式、脚本输入处理、Shell重定向、管道和过滤器、捕获、sed和awk,以及其他Linux Shell种类介绍。 本书使用了大量的实例详细地介绍了Bash的语法及各种技巧,并以循序渐进的方式讲解了Linux Shell(Bash)的各种特性,让读者能够迅速上手,并能学以致用。对于初次接触Linux Shell的读者,本书是一本很好的自学教材;对于接触过Linux Shell的读者,本书可以作为进阶读物或随时查阅的技术手册;另外,本书也可以作为高等学校相关专业的教材和各类培训学校的教材。

基本介绍

  • 书名:Linux Shell命令行及脚本编程实例详解 
  • 作者:刘艳涛  
  • ISBN:9787302378624 
  • 定价:59.8元 
  • 出版社:清华大学出版社 
  • 出版时间:2015-1-1 
  • 装帧:平装 

前 言

在当今的网际网路世界,想必最为流行的一个词就是“云计算”了,而且云计算又引领了大数据时代的到来。而Linux在推动云计算方面起到了举足轻重的作用。比如,当今最着名的商业云计算平台“亚马逊弹性计算云(EC2)”就是基于Linux的。这就需要在Linux伺服器上进行大量的数据处理和管理工作,以及一些套用的部署和监测,这时就需要命令行和Shell脚本的帮助。在Linux系统中,我们通常是在命令行下完成一些管理和配置的任务,并通过Shell脚本将一些重複或定期的任务自动化,通过短短几行脚本自动地将大部分手头工作搞定,从而节省大量的时间。而且理解Shell脚本也可以让你更好地了解作业系统。Shell脚本还可以和许多外部命令行工具结合起来完成信息查询、文本处理、任务定时自动化以及监测系统之类的工作。当然,伴随着这些便利性的还有巨大的破坏性。比如,稍不留神,你可能就会将整个根目录全部毁掉,或者错误地处理重要的配置档案。这时,了解Linux命令行和Shell脚本相关的细节、遵循Linux使用规範就显得尤其重要了。
本书面向系统管理员,基于Linux系统的软体开发和测试人员,以及所有想有效使用Linux系统的爱好者。书中系统而全面地介绍了Shell(Bash)脚本编程的语法、命令和技巧等内容,结合大量的实例进行讲解,你可以将其作为参考,或是作为自己编写脚本时的灵感源泉。
关于“Linux典藏大系”
“Linux典藏大系”是清华大学出版社自2010年1月以来陆续推出的一个图书系列,截止2013年,已经出版了10余个品种。该系列图书涵盖了Linux技术的方方面面,可以满足各个层次和各个领域的读者学习Linux技术的需求。该系列图书自出版以来获得了广大读者的好评,已经成为了Linux图书市场上最耀眼的明星品牌之一。其销量在同类图书中也名列前茅,其中一些图书还获得了“51CTO读书频道”颁发的“最受读者喜爱的原创IT技术图书奖”。该系列图书在出版过程中也得到了国内Linux领域最知名的技术社区ChinaUnix(简称CU)的大力支持和帮助,读者在CU社区中就图书的内容与活跃在CU社区中的Linux技术爱好者进行广泛交流,取得了良好的学习效果。

本书特色

1.视频讲解
为了帮助读者更加高效、直观地学习,编着者为本书重点内容专门录製了配套教学视频,需读者自行下载。
2.内容全面
本书将理论与实践相结合,全面介绍了Linux系统的常用命令及Shell脚本编程所需的知识点。书中对Linux Shell脚本编程的基本概念、语法、命令、技巧和较难理解的知识点都配合图示和实例进行了详细讲解。
3.循序渐进
本书从最基本的Linux Shell命令开始讲解,逐步深入到Linux Shell脚本编程,让读者可以迅速掌握Linux Shell的各种特性,并能在实际开发中加以使用。
4.实例丰富
本书偏重于实践教学,书中的每一个理论知识都给出了具体的典型实例。例如,对每一个Linux常用命令、Linux Shell的相关概念及Shell脚本编程的相关知识等,都列举了大量实例供读者了解这些知识点在实际环境中的套用。
5.经验传授
本书是基于编着者多年的Linux系统管理和Linux平台程式设计的经验总结而来,书中给出了大量的经验和技巧,尽力消除读者在学习Linux Shell编程时可能会遇到的各种障碍,从而更加迅速而高效地掌握Shell脚本编程。

内容结构

第1篇 Linux Shell基础和使用(第1~4章)
本篇介绍Linux命令行和Linux Shell的基础知识,包括Linux及Linux Shell简介、Bash简介、Bash启动和退出脚本、Shell中的变数、Shell中的扩展、创建和使用别名,以及Shell下的常用命令等。这些内容都是学习后续章节所必须要掌握的基础知识。
第2篇 Shell 脚本编程(第5~15章)
本篇主要介绍Shell脚本编程所需的知识,包括Shell脚本中的注释、Shell变数进阶、Shell的算术运算、如何退出脚本、如何调试脚本、Shell脚本编程风格、Shell的条件执行、Shell中的循环和控制语句、Shell函式、正则表达式、脚本的输入处理、Shell重定向、管道和过滤器、Shell中的捕获、sed和awk,以及其他Shell中的介绍等内容。这些内容几乎涵盖了日常使用Shell脚本编程的方方面面。

读者对象

* Linux Shell编程入门新手;
* Linux Shell编程进阶人员;
* 广大Linux程式设计人员;
* Linux系统管理员;
* 网站管理工程师;
* Linux培训机构的学员;
* Linux Shell编程爱好者;
* 需要一本案头必备查询手册的人员。

关于编着者

本书由刘艳涛主笔编写。其他参与编写的人员有陈冠军、陈浩、黄振东、蒋庆学、李代叙、李世民、李思清、李云龙、李志刚、刘存勇、刘燕珍、龙哲、吕轶、牟春梅、屈明环、石峰、史艳艳、宋宁宁、王德亮、王俊清、王雅宁、翁盛鑫。

目 录

第1篇 Linux Shell基础和使用
第1章 Linux及Linux Shell简介
1.1 关于Linux 2
1.1.1 什幺是Linux 2
1.1.2 谁创建了Linux 3
1.1.3 Linux在日常生活中的使用 3
1.1.4 Linux Kernel是什幺 3
1.1.5 Linux的理念 4
1.2 什幺是Linux Shell 4
1.3 Shell的种类 5
1.4 怎样使用Shell 6
1.5 Shell脚本是什幺 7
1.6 为什幺使用Shell脚本 8
1.7 实例:创建你的第一个Shell脚本 8
1.8 小结 9
第2章 初识Linux Shell
2.1 Bash Shell 10
2.1.1 Bash简介 10
2.1.2 Bash提供的改进 10
2.2 Shell在Linux环境中的角色 11
2.2.1 与登录Shell相关的档案 11
2.2.2 Bash启动脚本 11
2.2.3 实例:定製自己的Bash登录脚本 12
2.2.4 Bash退出脚本 14
2.2.5 实例:定製自己的Bash退出脚本 14
2.2.6 有效的登录Shell的路径 15
2.3 Shell中的变数 15
2.3.1 Shell中变数的类型 15
2.3.2 实例:如何定义变数和给变数赋值 17
2.3.3 变数命名规则 19
2.3.4 实例:使用echo和printf列印变数的值 19
2.3.5 变数的引用 22
2.3.6 实例:export语句的使用 23
2.3.7 实例:如何删除变数 25
2.3.8 实例:如何检查变数是否存在 25
2.4 Shell环境进阶 26
2.4.1 实例:回调命令历史 26
2.4.2 实例:Shell中的扩展 27
2.4.3 实例:创建和使用别名 30
2.4.4 实例:修改Bash提示符 31
2.4.5 实例:设定Shell选项 34
2.5 小结 37
第3章 常用Shell(Bash)命令
3.1 查看档案和目录 38
3.1.1 ls命令实例:列出档案名称和目录 38
3.1.2 cat命令实例:连线显示档案内容 42
3.1.3 less、more命令实例:分屏显示档案 43
3.1.4 head命令实例:显示档案头部 46
3.1.5 tail命令实例:显示档案尾部 47
3.1.6 file命令实例:查看档案类型 48
3.1.7 wc命令实例:查看档案统计信息 50
3.1.8 find命令实例:查找档案或目录 50
3.2 操作档案和目录 52
3.2.1 touch命令实例:创建档案 52
3.2.2 mkdir命令实例:创建目录 53
3.2.3 cp命令实例:複製档案或目录 54
3.2.4 ln命令实例:连结档案或目录 55
3.2.5 mv命令实例:重命名档案或目录 56
3.2.6 rm命令实例:删除档案或目录 57
3.3 管理档案或目录许可权 58
3.3.1 ls -l:显示档案和目录许可权 58
3.3.2 chmod命令实例:修改许可权 59
3.3.3 chown、chgrp命令实例:修改档案所有者和用户组 61
3.3.4 设定setuid和setgid许可权位实例:设定用户和组许可权位 63
3.4 文本处理 65
3.4.1 sort命令实例:文本排序 65
3.4.2 uniq命令实例:文本去重 67
3.4.3 tr命令实例:替换或删除字元 68
3.4.4 grep命令实例:查找字元串 70
3.4.5 diff命令实例:比较两个档案 71
3.5 其他常用命令 73
3.5.1 hostname命令实例:查看主机名 73
3.5.2 w、who命令实例:列出系统登录的用户 74
3.5.3 uptime命令实例:查看系统运行时间 75
3.5.4 uname命令实例:查看系统信息 75
3.5.5 date命令实例:显示和设定系统日期和时间 76
3.5.6 id命令实例:显示用户属性 78
3.6 小结 79
第4章 Shell命令进阶
4.1 档案处理和归档 81
4.1.1 paster命令实例:合併档案 81
4.1.2 dd命令实例:备份和拷贝档案 83
4.1.3 gzip、bzip2命令实例:压缩和归档档案 84
4.1.4 gunzip、bunzip2命令实例:解压缩档案 85
4.1.5 tar命令实例:打包和解包档案 85
4.2 监测和管理磁碟 87
4.2.1 mount、umount命令实例:挂载和卸载存储介质 87
4.2.2 df命令实例:报告档案系统磁碟空间利用率 90
4.2.3 du命令实例:评估档案空间利用率 91
4.3 后台执行命令 92
4.3.1 cron、crontab命令实例:执行计画任务 92
4.3.2 at命令实例:在指定时间执行命令 94
4.3.3 &控制操作符实例:将任务放在后台运行 95
4.3.4 nohup命令实例:运行一个对挂起免疫的命令 96
4.4 小结 97
第2篇 Shell 脚本编程
第5章 Shell编程基础
5.1 Shell脚本的第一行“#!”(Shebang) 100
5.2 Shell中的注释 100
5.3 实例:如何设定脚本的许可权和执行脚本 101
5.4 Shell变数进阶 102
5.4.1 Bash中的参数扩展 102
5.4.2 Bash的内部变数 106
5.4.3 Bash中的位置参数和特殊参数 109
5.4.4 实例:使用declare指定变数的类型 112
5.4.5 Bash中的数组变数 114
5.5 Shell算术运算 115
5.5.1 Bash的算术运算符 115
5.5.2 数字常量 117
5.5.3 使用算术扩展和let进行算术运算 118
5.5.4 实例:使用expr命令 119
5.6 退出脚本 120
5.6.1 退出状态码 120
5.6.2 实例:使用exit命令 121
5.7 实例:调试脚本 122
5.8 Shell脚本编程风格 125
5.9 小结 126
第6章 Shell的条件执行
6.1 条件测试 128
6.1.1 实例:使用test命令 128
6.1.2 if结构的语法格式 133
6.1.3 实例:if…else…fi语句 135
6.1.4 实例:嵌套的if/else语句 136
6.1.5 实例:多级的if…elif…else…fi 137
6.2 条件执行 139
6.2.1 实例:逻辑与“&&” 139
6.2.2 实例:逻辑或“||” 144
6.2.3 实例:逻辑非“!” 147
6.3 case语句实例 148
6.4 小结 151
第7章 Bash循环
7.1 for循环 152
7.1.1 for循环语法 152
7.1.2 实例:嵌套for循环语句 156
7.2 while循环 157
7.2.1 while循环语法 157
7.2.2 实例:定义无限while循环 160
7.3 until循环语句实例 162
7.4 select循环语句实例 163
7.5 循环控制 165
7.5.1 实例:break语句 165
7.5.2 实例:continue语句 167
7.6 小结 168
第8章 Shell函式
8.1 函式的定义 170
8.2 函式的参数、变数与返回值 171
8.2.1 实例:向函式传递参数 171
8.2.2 本地变数 173
8.2.3 实例:使用return命令 175
8.2.4 实例:函式返回值测试 176
8.3 函式的调用 176
8.3.1 实例:在Shell命令行调用函式 176
8.3.2 实例:在脚本中调用函式 177
8.3.3 实例:从函式档案中调用函式 178
8.3.4 实例:递归函式调用 181
8.4 实例:将函式放在后台运行 182
8.5 小结 184
第9章 正则表达式
9.1 什幺是正则表达式 185
9.1.1 定义 185
9.1.2 正则表达式类型 185
9.1.3 POSIX字元类 186
9.1.4 Bash正则表达式比较操作符 187
9.2 正则套用基础 189
9.2.1 实例:使用句点.匹配单字元 189
9.2.2 实例:使用插入符号^匹配 190
9.2.3 实例:使用美元符$匹配 190
9.2.4 实例:使用星号*匹配 190
9.2.5 实例:使用方括弧[ ]匹配 191
9.2.6 实例:使用问号?匹配 191
9.2.7 实例:使用加号+匹配 191
9.3 小结 192
第10章 脚本输入处理
10.1 参数处理 193
10.1.1 实例:使用case语句处理命令行参数 193
10.1.2 实例:使用shift命令处理命令行参数 198
10.1.3 实例:使用for循环读取多个参数 201
10.1.4 实例:读取脚本名 203
10.1.5 实例:测试命令行参数 204
10.2 选项处理 206
10.2.1 实例:使用case语句处理命令行选项 207
10.2.2 实例:使用getopts处理多命令行选项 209
10.2.3 实例:使用getopt处理多命令行选项 214
10.3 获得用户输入 221
10.3.1 实例:基本的读取 221
10.3.2 实例:输入逾时 222
10.3.3 实例:隐藏方式读取 223
10.3.4 实例:从档案中读取 224
10.4 小结 227
第11章 Shell重定向
11.1 输入和输出 230
11.1.1 标準输入 230
11.1.2 标準输出 232
11.1.3 标準错误 233
11.2 重定向 233
11.2.1 档案重定向 234
11.2.2 实例:从档案输入 236
11.2.3 实例:从文本或字元串输入 241
11.2.4 实例:空档案创建 244
11.2.5 实例:/dev/null丢弃不需要的输出 245
11.2.6 实例:标準错误重定向 246
11.2.7 实例:标準输出重定向 246
11.2.8 实例:标準错误和标準输出同时重定向 247
11.2.9 实例:追加重定向输出 247
11.2.10 实例:在单命令行进行标準输入输出重定向 247
11.3 档案描述符 249
11.3.1 实例:使用exec命令 249
11.3.2 实例:指定用于输入的档案描述符 251
11.3.3 实例:指定用于输出的档案描述符 254
11.3.4 实例:关闭档案描述符 260
11.3.5 实例:打开用于读和写的档案描述符 261
11.3.6 实例:在同一脚本中使用exec进行输入和输出重定向 261
11.4 小结 264
第12章 管道和过滤器
12.1 管道 266
12.1.1 操作符“|”和“>”之间的区别 266
12.1.2 为什幺使用管道 267
12.1.3 实例:使用管道连线程式 267
12.1.4 实例:管道中的输入重定向 269
12.1.5 实例:管道中的输出重定向 270
12.2 过滤器 271
12.2.1 实例:在管道中使用awk命令 272
12.2.2 实例:在管道中使用cut命令 273
12.2.3 实例:在管道中使用grep命令 274
12.2.4 实例:在管道中使用tar命令 275
12.2.5 实例:在管道中使用head命令 275
12.2.6 实例:在管道中使用paste命令 276
12.2.7 实例:在管道中使用sed命令 277
12.2.8 实例:在管道中使用sort命令 278
12.2.9 实例:在管道中使用split命令 278
12.2.10 实例:在管道中使用strings命令 279
12.2.11 实例:在管道中使用tail命令 279
12.2.12 实例:在管道中使用tee命令 280
12.2.13 实例:在管道中使用tr命令 282
12.2.14 实例:在管道中使用uniq命令 282
12.2.15 实例:在管道中使用wc命令 283
12.3 小结 283
第13章 捕获
13.1 信号 284
13.1.1 Linux中的信号 284
13.1.2 信号的名称和值 285
13.1.3 Bash中的信号 287
13.2 进程 288
13.2.1 什幺是进程 288
13.2.2 前台进程和后台进程 289
13.2.3 进程的状态 290
13.2.4 实例:怎样查看进程 290
13.2.5 实例:向进程传送信号 294
13.2.6 关于子Shell 296
13.3 捕获 300
13.3.1 trap语句 300
13.3.2 实例:使用trap语句捕获信号 303
13.3.3 实例:移除捕获 308
13.4 小结 309
第14章 sed和awk
14.1 sed编辑器基础 311
14.1.1 sed简介 311
14.1.2 sed的模式空间 312
14.2 基本的sed编辑命令 313
14.2.1 追加、更改、插入编辑命令 314
14.2.2 删除编辑命令 316
14.2.3 替换编辑命令 316
14.2.4 列印编辑命令 319
14.2.5 列印行号编辑命令 319
14.2.6 读取下一行编辑命令 320
14.2.7 读和写档案编辑命令 321
14.2.8 退出编辑命令 325
14.3 sed命令实例 326
14.3.1 实例:向档案中添加或插入行 326
14.3.2 实例:更改档案中指定的行 328
14.3.3 实例:删除档案中的行 328
14.3.4 实例:替换档案中的内容 331
14.3.5 实例:列印档案中的行 333
14.3.6 实例:列印档案中的行号 336
14.3.7 实例:从档案中读取和向档案中写入 336
14.4 sed与Shell 340
14.4.1 实例:在sed中使用Shell变数 340
14.4.2 实例:从sed输出中设定Shell变数 347
14.5 awk基础 348
14.5.1 awk简介 348
14.5.2 awk基本语法 349
14.5.3 第一个awk命令 350
14.5.4 使用awk列印指定的列 351
14.5.5 从awk程式档案读取awk指令 351
14.5.6 awk的BEGIN和END块 352
14.5.7 awk中使用正则表达式 352
14.5.8 awk的表达式和块 353
14.5.9 awk的条件语句 354
14.5.10 awk中的变数和操作符 354
14.5.11 awk中的特殊变数 355
14.5.12 awk中的循环结构 356
14.5.13 awk中的数组 358
14.6 awk与Shell 359
14.6.1 实例:在awk中使用Shell变数 359
14.6.2 实例:从awk命令的输出中设定Shell变数 360
14.7 awk命令实例 362
14.7.1 实例:使用awk编写字元统计工具 362
14.7.2 实例:使用awk程式统计档案的总列数 364
14.7.3 实例:使用awk自定义显示档案的属性信息 365
14.7.4 实例:使用awk显示ASCII字元 366
14.7.5 实例:使用awk来获取进程号 369
14.8 小结 371
第15章 其他Linux Shell种类介绍
15.1 C Shell 374
15.1.1 csh简介 374
15.1.2 csh的特性 375
15.1.3 csh的内部变数 376
15.1.4 csh的内部命令 376
15.1.5 tcsh在csh基础上的新特性 381
15.2 Korn Shell 389
15.2.1 ksh简介 389
15.2.2 ksh的特性 390
15.2.3 ksh的内部变数 395
15.2.4 ksh的内部命令 397
15.2.5 增强的ksh-ksh93 404
15.3 小结 408
声明:此文信息来源于网络,登载此文只为提供信息参考,并不用于任何商业目的。如有侵权,请及时联系我们:baisebaisebaise@yeah.net