目      录

译者序

前言

第一部分   shell

第1章   文件安全与权限1

1.1   文件1

1.2   文件类型2

1.3   权限2

1.4   改变权限位4

1.4.1   符号模式4

1.4.2   chmod命令举例5

1.4.3   绝对模式5

1.4.4   chmod命令的其他例子6

1.4.5   可以选择使用符号模式或绝对模式7

1.5   目录7

1.6   suid/guid7

1.6.1   为什么要使用suid/guid8

1.6.2   设置suid/guid的例子8

1.7   chown和chgrp9

1.7.1   chown举例9

1.7.2   chgrp举例9

1.7.3   找出你所属于的用户组9

1.7.4   找出其他用户所属于的组10

1.8   umask10

1.8.1   如何计算umask值10

1.8.2   常用的umask值11

1.9   符号链接12

1.9.1   使用软链接来保存文件的多个映像12

1.9.2   符号链接举例12

1.10   小结13

第2章   使用find和xargs14

2.1   find命令选项14

2.1.1   使用name选项15

2.1.2   使用perm选项16

2.1.3   忽略某个目录16

2.1.4   使用user和nouser选项16

2.1.5   使用group和nogroup选项16

2.1.6   按照更改时间查找文件17

2.1.7   查找比某个文件新或旧的文件17

2.1.8   使用type选项17

2.1.9   使用size选项18

2.1.10   使用depth选项18

2.1.11   使用mount选项18

2.1.12   使用cpio选项18

2.1.13   使用exec或ok来执行shell命令19

2.1.14   find命令的例子20

2.2   xargs20

2.3   小结21

第3章   后台执行命令22

3.1   cron和crontab22

3.1.1   crontab的域22

3.1.2   crontab条目举例23

3.1.3   crontab命令选项23

3.1.4   创建一个新的crontab文件24

3.1.5   列出crontab文件24

3.1.6   编辑crontab文件24

3.1.7   删除crontab文件25

3.1.8   恢复丢失的crontab文件25

3.2   at命令25

3.2.1   使用at命令提交命令或脚本26

3.2.2   列出所提交的作业27

3.2.3    清除一个作业27

3.3   &命令27

3.3.1   向后台提交命令28

3.3.2   用ps命令查看进程28

3.3.3   杀死后台进程28

3.4   nohup命令29

3.4.1  使用nohup命令提交作业29

3.4.2   一次提交几个作业29

3.5   小结30

第4章   文件名置换31

4.1   使用*31

4.2   使用?32

4.3   使用[...]和[!...]32

4.4   小结33

第5章   shell输入与输出34

5.1   echo34

5.2   read35

5.3   cat37

5.4   管道38

5.5   tee39

5.6   标准输入、输出和错误40

5.6.1   标准输入40

5.6.2   标准输出40

5.6.3   标准错误40

5.7   文件重定向40

5.7.1   重定向标准输出41

5.7.2   重定向标准输入42

5.7.3   重定向标准错误42

5.8   结合使用标准输出和标准错误43

5.9   合并标准输出和标准错误43

5.10   exec44

5.11   使用文件描述符44

5.12   小结45

第6章   命令执行顺序46

6.1   使用&&46

6.2   使用||46

6.3   用()和{ }将命令结合在一起47

6.4   小结48

第二部分   文本过滤

第7章  正则表达式介绍49

7.1  使用句点匹配单字符50

7.2   在行首以^匹配字符串或字符序列50

7.3   在行尾以$匹配字符串或字符51

7.4   使用*匹配字符串中的单字符或其重复

序列51

7.5   使用\屏蔽一个特殊字符的含义52

7.6   使用[]匹配一个范围或集合52

7.7   使用\{\}匹配模式结果出现的次数53

7.8   小结55

第8章   grep家族56

8.1   grep57

8.1.1   双引号引用57

8.1.2   grep选项57

8.1.3   查询多个文件57

8.1.4   行匹配57

8.1.5   行数58

8.1.6   显示非匹配行58

8.1.7   精确匹配58

8.1.8   大小写敏感58

8.2   grep和正则表达式58

8.2.1   模式范围59

8.2.2   不匹配行首59

8.2.3   设置大小写59

8.2.4   匹配任意字符59

8.2.5   日期查询59

8.2.6   范围组合60

8.2.7   模式出现机率60

8.2.8   使用grep匹配“与”或者“或”模式61

8.2.9   空行61

8.2.10   匹配特殊字符61

8.2.11   查询格式化文件名61

8.2.12   查询IP地址61

8.3   类名62

8.4   系统grep命令62

8.4.1   目录63

8.4.2   passwd文件63

8.4.3   使用ps命令63

8.4.4   对一个字符串使用grep64

8.5   egrep64

8.6   小结65

第9章   AWK介绍66

9.1   调用awk66

9.2   awk脚本67

9.2.1   模式和动作67

9.2.2   域和记录67

9.2.3   awk中正则表达式及其操作70

9.2.4   元字符70

9.2.5   条件操作符70

9.2.6   awk内置变量73

9.2.7   NF、NR和FILENAME74

9.2.8   awk操作符75

9.2.9   内置的字符串函数78

9.2.10   字符串屏蔽序列80

9.2.11   awk输出函数printf81

9.2.12   printf修饰符81

9.2.13   awk数组86

9.3   小结88

第10章   sed 用法介绍89

10.1   sed怎样读取数据89

10.2   调用sed89

10.2.1   保存sed输出90

10.2.2   使用sed在文件中查询文本的方式90

10.2.3   基本sed编辑命令90

10.3   sed和正则表达式91

10.4   基本sed编程举例91

10.4.1   使用p(rint)显示行91

10.4.2   打印范围91

10.4.3   打印模式92

10.4.4   使用模式和行号进行查询92

10.4.5   匹配元字符92

10.4.6   显示整个文件92

10.4.7   任意字符92

10.4.8   首行92

10.4.9   最后一行93

10.4.10   打印行号93

10.4.11   附加文本93

10.4.12   创建sed脚本文件94

10.4.13   插入文本94

10.4.14   修改文本95

10.4.15   删除文本96

10.4.16   替换文本96

10.5   使用替换修改字符串97

10.6   将sed结果写入文件命令97

10.7   从文件中读文本98

10.8   匹配后退出98

10.9   显示文件中的控制字符99

10.10   使用系统sed99

10.10.1   处理控制字符99

10.10.2   处理报文输出101

10.10.3   去除行首数字101

10.10.4   附加文本102

10.10.5   从shell向sed传值102

10.10.6   从sed输出中设置shell变量102

10.11   快速一行命令102

10.12   小结103

第11章   合并与分割104

11.1   sort用法104

11.1.1   概述104

11.1.2   sort选项104

11.1.3   保存输出105

11.1.4   sort启动方式105

11.1.5   sort对域的参照方式105

11.1.6   文件是否已分类105

11.1.7   基本sort106

11.1.8   sort分类求逆106

11.1.9   按指定域分类106

11.1.10   数值域分类106

11.1.11   唯一性分类107

11.1.12   使用k的其他sort方法108

11.1.13   使用k做分类键排序108

11.1.14   指定sort序列108

11.1.15   pos用法108

11.1.16   使用head和tail将输出分类109

11.1.17   awk使用sort输出结果109

11.1.18   将两个分类文件合并110

11.2   系统sort110

11.3   uniq用法111

11.4   join用法112

11.5   cut用法114

11.5.1   使用域分隔符115

11.5.2   剪切指定域115

11.6   paste用法116

11.6.1    指定列116

11.6.2   使用不同的域分隔符116

11.6.3   paste命令管道输入117

11.7   split用法117

11.8   小结118

第12章   tr用法119

12.1   关于tr119

12.1.1   字符范围119

12.1.2   保存输出120

12.1.3   去除重复出现的字符120

12.1.4   删除空行120

12.1.5   大写到小写121

12.1.6   小写到大写121

12.1.7   删除指定字符121

12.1.8   转换控制字符122

12.1.9   快速转换122

12.1.10   匹配多于一个字符123

12.2   小结123

第三部分   登录环境

第13章   登录环境125

13.1   /etc/profile125

13.2   用户的$HOME.profile128

13.3   stty用法129

13.4   创建.logout文件131

13.5   小结131

第14章   环境和shell变量132

14.1   什么是shell变量132

14.2   本地变量132

14.2.1    显示变量133

14.2.2   清除变量133

14.2.3   显示所有本地shell变量133

14.2.4   结合变量值134

14.2.5   测试变量是否已经设置134

14.2.6   使用变量来保存系统命令参数135

14.2.7   设置只读变量135

14.3   环境变量136

14.3.1   设置环境变量136

14.3.2   显示环境变量136

14.3.3   清除环境变量137

14.3.4   嵌入shell变量137

14.3.5   其他环境变量139

14.3.6   set命令140

14.3.7   将变量导出到子进程140

14.4   位置变量参数141

14.4.1   在脚本中使用位置参数142

14.4.2   向系统命令传递参数142

14.4.3   特定变量参数143

14.4.4   最后的退出状态144

14.5   小结145

第15章   引号146

15.1   引用必要性146

15.2   双引号146

15.3   单引号147

15.4   反引号147

15.5   反斜线148

15.6   小结149

第四部分   基础shell编程

第16章   shell脚本介绍151

16.1   使用shell脚本的原因151

16.2   脚本内容151

16.3   运行一段脚本152

16.4   小结153

第17章   条件测试154

17.1   测试文件状态154

17.2   测试时使用逻辑操作符155

17.3   字符串测试155

17.4   测试数值156

17.5   expr用法157

17.5.1   增量计数158

17.5.2   数值测试158

17.5.3   模式匹配158

17.6   小结159

第18章   控制流结构160

18.1   退出状态160

18.2   控制结构160

18.2.1   流控制161

18.2.2   循环161

18.3   if then else语句161

18.3.1   简单的if语句162

18.3.2   变量值测试162

18.3.3   grep输出检查163

18.3.4   用变量测试grep输出163

18.3.5   文件拷贝输出检查164

18.3.6   当前目录测试164

18.3.7   文件权限测试165

18.3.8   测试传递到脚本中的参数165

18.3.9   决定脚本是否为交互模式165

18.3.10   简单的if else语句166

18.3.11  变量设置测试166

18.3.12   检测运行脚本的用户166

18.3.13   将脚本参数传入系统命令167

18.3.14   null:命令用法167

18.3.15   测试目录创建结果168

18.3.16   另一个拷贝实例169

18.3.17   多个if语句169

18.3.18   测试和设置环境变量169

18.3.19   检测最后命令状态170

18.3.20   增加和检测整数值171

18.3.21   简单的安全登录脚本172

18.3.22   elif用法173

18.3.23   使用elif进行多条件检测173

18.3.24   多文件位置检测174

18.4   case语句175

18.4.1   简单的case语句175

18.4.2   对匹配模式使用|176

18.4.3   提示键入y或n177

18.4.4   case与命令参数传递177

18.4.5   捕获输入并执行空命令178

18.4.6   缺省变量值179

18.5   for循环180

18.5.1   简单的for循环181

18.5.2   打印字符串列表181

18.5.3   对for循环使用ls命令181

18.5.4   对for循环使用参数182

18.5.5   使用for循环连接服务器183

18.5.6   使用for循环备份文件183

18.5.7   多文件转换183

18.5.8   多sed删除操作184

18.5.9    循环计数184

18.5.10   for循环和本地文档184

18.5.11   for循环嵌入185

18.6   until循环186

18.6.1   简单的until循环186

18.6.2   监视文件187

18.6.3   监视磁盘空间187

18.7   while循环188

18.7.1   简单的while循环188

18.7.2   使用while循环读键盘输入188

18.7.3   用while循环从文件中读取数据189

18.7.4   使用IFS读文件189

18.7.5   带有测试条件的文件处理190

18.7.6   扫描文件行来进行数目统计191

18.7.7   每次读一对记录193

18.7.8   忽略#字符193

18.7.9   处理格式化报表194

18.7.10   while循环和文件描述符196

18.8   使用break和continue控制循环197

18.8.1   break197

18.8.2   跳出case语句197

18.8.3   continue197

18.8.4   浏览文件行198

18.9   菜单199

18.10   小结201

第19章   shell函数202

19.1   在脚本中定义函数203

19.2   在脚本中使用函数203

19.3   向函数传递参数203

19.4   从调用函数中返回203

19.5   函数返回值测试204

19.6   在shell中使用函数204

19.7   创建函数文件204

19.8   定位文件205

19.9   检查载入函数205

19.10   执行shell函数205

19.10.1   删除shell函数206

19.10.2   编辑shell函数206

19.10.3   函数举例207

19.10.4   将函数集中在一起219

19.11   函数调用219

19.11.1   在脚本中调用函数219

19.11.2   从函数文件中调用函数220

19.12   定位文件不只用于函数222

19.13   小结223

第20章   向脚本传递参数224

20.1   shift命令225

20.1.1   shift命令简单用法225

20.1.2   命令行输入的最后一个参数225

20.1.3   使用shift处理文件转换226

20.2   getopts229

20.2.1   getopts脚本实例229

20.2.2   getopts使用方式231

20.2.3   使用getopts指定变量取值231

20.2.4   访问取值方式232

20.2.5   使用getopts处理文件转换233

20.3   小结235

第21章   创建屏幕输出236

21.1   tput用法236

21.1.1   字符串输出236

21.1.2   数字输出237

21.1.3   布尔输出237

21.2   tput用法237

21.2.1   设置tput命令237

21.2.2   使用布尔输出237

21.2.3   在脚本中使用tput237

21.2.4   产生转义序列238

21.2.5   光标位置239

21.2.6   在屏幕中心位置显示文本240

21.2.7   查找终端属性240

21.2.8   在脚本中使用功能键241

21.2.9   使用颜色242

21.2.10   产生颜色243

21.2.11   创建精致菜单246

21.3   小结251

第22章   创建屏幕输入252

22.1   增加记录252

22.2   删除记录262

22.3   修改记录266

22.4   查看记录270

22.5   小结273

第23章   调试脚本274

23.1   一般错误274

23.1.1   循环错误274

23.1.2   典型的漏写引号274

23.1.3   测试错误274

23.1.4   字符大小写275

23.1.5   for循环275

23.1.6   echo275

23.2   set命令275

23.3   小结276

第24章   shell嵌入命令277

24.1   shell嵌入命令完整列表277

24.1.1   pwd277

24.1.2   set278

24.1.3   times278

24.1.4   type278

24.1.5   ulimit279

24.1.6   wait279

24.2   小结279

第五部分   高级shell编程技巧

第25章   深入讨论<<281

25.1   快速创建一个文件281

25.2   快速创建打印文档281

25.3   自动选择菜单282

25.4   自动ftp传输283

25.5   访问数据库286

25.6   小结288

第26章   shell 工具289

26.1   创建保存信息的文件289

26.1.1   使用date命令创建日志文件289

26.1.2   创建唯一的临时文件290

26.2   信号291

26.2.1   杀死一个进程292

26.2.2   检测信号293

26.3   trap294

26.3.1   捕获信号并采取相应的行动294

26.3.2   捕获信号并采取行动的另

一个例子295

26.3.3   锁住终端297

26.3.4   忽略信号298

26.4   eval300

26.4.1   执行含有字符串的命令300

26.4.2   给每个值一个变量名301

26.5   logger命令302

26.5.1   使用logger命令303

26.5.2   在脚本中使用logger命令303

26.6   小结305

第27章   几个脚本例子306

27.1   pingall306

27.2   backup_gen306

27.3   del.lines312

27.4   access.deny313

27.5   logroll316

27.6   nfsdown317

27.7   小结317

第28章   运行级别脚本318

28.1   怎么知道系统中是否含有运行

级别目录318

28.2   确定当前的运行级别319

28.3   快速熟悉inittab319

28.4   运行级别320

28.4.1   各种运行级别321

28.4.2   运行级别脚本的格式321

28.4.3   安装运行级别脚本322

28.5   使用inittab来启动应用程序323

28.6   启动和停止服务的其他方法324

28.7   小结324

第29章   cgi脚本325

29.1   什么是Web页面?325

29.2   cgi325

29.3   连接Web服务器326

29.4    cgi和HTM脚本326

29.4.1   基本cgi脚本326

29.4.2   显示shell命令输出328

29.4.3   使用SSI330

29.4.4   访问计数器330

29.4.5   使用一个链接来显示当前Web

环境变量332

29.4.6   其他常用的环境变量334

29.5   get和post方法简介335

29.5.1   get方法335

29.5.2   post方法340

29.5.3   填充列表项347

29.5.4   自动刷新页面348

29.6   小结349

附录   常用shell命令350

linux与shell编程指南,LINUX与UNIX SHELL编程指南相关推荐

  1. linux下网络编程设置非阻塞,UNIX网络编程 非阻塞connect的实现

    一.<UNIX网络编程>-非阻塞connect 在一个TCP套接口被设置为非阻塞之后调用connect,connect会立即返回EINPROGRESS错误,表示连接操作正在进行中,但是仍未 ...

  2. unix系统编程c语言,关于unix系统编程的一个小问题

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 /* rlsd.c - a remote ls server - with paranoia */ #include #include #include ...

  3. Linux学习基础文章1:Linux一句话精彩问答

    0001 修改主机名(陈绪) vi /etc/sysconfig/network,修改HOSTNAME一行为"HOSTNAME=主机名"(没有这行?那就添加这一行吧),然后运行命令 ...

  4. Unix网络编程 学习记录01

    写在前面 秋招面试微信折戟,决定好好折腾一下c++和网络,武装一下自己的技术栈,先从最基本的网咯编程开始.<UNIX网络编程 卷1>有不少实践的机会,于是先从这本书下手. 能坚持多久是多久 ...

  5. shell脚本系列:1、shell、bash和shell脚本

    shell脚本系列:1.shell.bash和shell脚本 文章目录 shell脚本系列:1.shell.bash和shell脚本 1. 前言 2. shell.Bash.shell script简 ...

  6. 《Linux与unix Shell编程指南》 总结

    <Linux与unix Shell编程指南> 总结 标签: linux网络dstcron服务器 2011-01-10 18:27 3742人阅读 评论(0) 收藏 举报 分类: Linux ...

  7. 2008年度LINUX与UNIX SHELL编程指北系列大片

    2008年度LINUX与UNIX SHELL编程 指北 系列大片 前言:这个世界是公平的,机会是平等的,学习的机会人人都有,只要你有不甘平庸的上进之心,定会成功! 主演:rootman rootman ...

  8. 【编程实践】Linux / UNIX Shell编程极简教程

    不同于一般的介绍Linux Shell 的文章,本文并未花大篇幅去介绍 Shell 语法,而是以面向"对象" 的方式引入大量的实例介绍 Shell 日常操作,"对象&qu ...

  9. 林世霖. linux环境编程图文指南,linux环境编程图文指南

    linux环境编程图文指南是一本linux编程环境配置指南,由林世霖.钟锦辉和李建辉三人共同编著.本书定位Linux环境编程入门与提高,全书拥有近400余幅案例图表,200多篇源代码,作者很多编程初入 ...

最新文章

  1. java -version cmd_java如何运行步骤cmd?Java执行cmd命令方法有哪些?
  2. C++ 内存泄漏检测:valgrind和AddressSanitizer
  3. Git创建ssh密匙时报错Too many arguments解决方法
  4. 微信小程序开发之scroll-view上拉加载数据实现
  5. Python 数据分析三剑客之 Pandas(三):算术运算与缺失值的处理
  6. 华为面试分配_什么时候不做面试分配
  7. 如何修改tomcat项目的图标
  8. 计算机等级报考备注填什么用,计算机二级有什么用
  9. 用C#实现屏幕键盘!
  10. Android OpenCV 身份证训练
  11. Xilinx平台SRIO介绍(二)SRIO IP核基础知识
  12. zui消息推送服务器,ZUI
  13. 计算机windows10怎么找word,Win10 word路径在哪?Win10如何修改word路径
  14. 【转】怎样评价寒武纪的芯片1P 1M和MLU100?能够叫板英伟达吗?
  15. 什么是贴片元器件,有哪些优缺点和种类
  16. NOJ 1116 哈罗哈的大披萨 【淡蓝】 状态压缩DP
  17. 究极风暴3 计算机丢失,究极风暴4 丢失d3dcompiler_47.dll怎么处理
  18. c++函数返回一个数组
  19. box-shadow的具体使用方法(一分钟详解)
  20. 爬虫基础:python实现爬取无水印某瓜视频(附有完整代码,超详细)

热门文章

  1. 闲鱼有流量,毒具特色,“全面”的转转如何突围?
  2. linux项目运行日志查看,Linux项目部署、后台启动和终止运行及查看日志信息_MQ...
  3. c#.net配置mysql数据库连接池_C#MySQL连接池
  4. mysql 5.5 替换字符_Mysql 5.7替换表中某些字段的字符串
  5. flutter刷新页面_Flutter BottomNavigationBar切换会刷新当前页面解决方
  6. Python 空值与非空值
  7. python中的内部函数和闭包函数
  8. Python变量的作用域的使用
  9. Python_函数做字典的值
  10. powershell共享服务器写文件,Windows PowerShell:共享您的脚本 - 轻松实现