pdf

Linux命令行和shell脚本编程宝典

  • 1星
  • 日期: 2020-09-28
  • 大小: 52.93MB
  • 所需积分:0分
  • 下载次数:0
  • favicon收藏
  • rep举报
  • 分享
  • free评论
标签: linux

Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

bash

bash

shell

shell

在Linux系统中,命令和shell脚本是非常重要的内容,它们的功能非常强大,使用它们可以完成各种操作。《Linux命令行和sheell脚本编程宝典》分为5部分。第1部分介绍Linux shell的基础知识;第2部分介绍shell脚本;第3部分介绍shell脚本编程的高级内容;第4部分介绍如何使用Linux环境中的各种shell编写shell脚本;第5部分演示如何在实际情况中使用shell脚本。《Linux命令行和sheell脚本编程宝典》非常全面地介绍了Linux命令行和shell命令,并且提供了很多实践教程和实例应用程序信息,为学习的内容提供了相关环境,是Linux的爱好者以及Linux系统管理员的首选。

《Linux命令行和sheell脚本编程宝典》的基础部分需要学习的内容很多,本宝典不仅简明扼要地介绍了开源Linux软件的结构,并且展示了如何摒弃笨重的Linux图形用户界面,而使用一种更加快速而有效的方式――命令行和自动化脚本。您将学习如何在不使用GUI的情况下管理文件系统的文件;启动和终止程序;使用数据库,甚至执行Web编程,《Linux命令行和sheell脚本编程宝典》将教会您一切。

作者简介

Richard Blum,作为一名系统和网络管理员,已经在IT界经历了19年的风风雨雨。在此期间,他管理过Unix、Linux、Novell和Microsoft服务器,曾帮助设计和维护使用Cisco交换机和路由器的大型网络,共涉及3 500多名用户。他使用Linux服务器和shell脚本执行自动网络监控,并可以在所有Unix shell环境中编写shell脚本。

Rich拥有普渡大学电子工程学学士学位,并拥有管理信息系统方面的理学硕士学位。他编写过好几本Linux图书,包括《Sendmail for Linux》、《Running qmail》、《Postfix》、《Open Source E.Mail Security》、《Network Performance Open Source Toolkit》和Professional Assembly Language Programming》。他还是《Professional Linux Programming》和《Linux For Dummies》第8版的合著者。

目录

第1部分 Linux命令行

第1章 Linux shell入门 3

1.1 什么是Linux 3

1.1.1 深入研究Linux内核 4

1.1.2 GNU实用程序 9

1.1.3 Linux桌面环境 10

1.2 Linux发行版 13

1.2.1 核心Linux发行版 13

1.2.2 特定Linux发行版 14

1.2.3 Linux LiveCD 14

1.3 小结 15

第2章 了解shell 17

2.1 终端模拟 17

2.1.1 图形功能 18

2.1.2 键盘 20

2.2 terminfo数据库 21

2.3 Linux控制台 23

2.4 xterm终端 24

2.4.1 命令行参数 24

2.4.2 xterm主菜单 25

2.4.3 VT选项菜单 26

2.4.4 VT字体菜单 28

2.5 Konsole终端 29

2.5.1 命令行参数 29

2.5.2 会话 30

2.5.3 菜单栏 31

2.6 GNOME终端 34

2.6.1 命令行参数 34

2.6.2 选项卡 35

2.6.3 菜单栏 35

2.7 小结 37

第3章 基本的bash shell命令 38

3.1 启动shell 38

3.2 shell提示符 39

3.3 bash手册 40

3.4 文件系统导航 41

3.4.1 Linux文件系统 41

3.4.2 浏览目录 43

3.5 文件和目录列表 44

3.5.1 基本列表 44

3.5.2 修改显示的信息 45

3.5.3 完整的参数列表 46

3.5.4 过滤列表输出 48

3.6 文件处理 48

3.6.1 创建文件 48

3.6.2 复制文件 49

3.6.3 链接文件 50

3.6.4 重命名文件 51

3.6.5 删除文件 52

3.7 目录处理 53

3.7.1 创建目录 53

3.7.2 删除目录 53

3.8 查看文件内容 54

3.8.1 查看文件统计数据 54

3.8.2 查看文件类型 54

3.8.3 查看整个文件 55

3.8.4 查看部分文件 57

3.9 小结 58

第4章 更多bash shell命令 59

4.1 监控程序 59

4.1.1 进程查看 59

4.1.2 实时进程监控 64

4.1.3 停止进程 66

4.2 监控磁盘空间 67

4.2.1 挂载介质 68

4.2.2 使用df命令 70

4.2.3 使用du命令 71

4.3 操作数据文件 71

4.3.1 数据排序 72

4.3.2 搜索数据 74

4.3.3 压缩数据 75

4.3.4 归档数据 78

4.4 小结 79

第5章 使用Linux环境变量 80

5.1 什么是环境变量 80

5.1.1 全局环境变量 80

5.1.2 本地环境变量 81

5.2 设置环境变量 83

5.2.1 设置本地环境变量 83

5.2.2 设置全局环境变量 84

5.3 移除环境变量 84

5.4 默认的shell环境变量 85

5.5 设置PATH环境变量 87

5.6 定位系统环境变量 88

5.6.1 登录shell 88

5.6.2 交互式shell 90

5.6.3 非交互式shell 92

5.7 变量数组 92

5.8 使用命令别名 93

5.9 小结 94

第6章 理解Linux文件权限 96

6.1 Linux安全性 96

6.1.1 /etc/passwd文件 96

6.1.2 /etc/shadow文件 98

6.1.3 添加新用户 98

6.1.4 删除用户 100

6.1.5 修改用户 100

6.2 使用Linux用户组 102

6.2.1 /etc/group文件 103

6.2.2 创建新用户组 103

6.2.3 修改用户组 104

6.3 解码文件权限 104

6.3.1 使用文件权限符号 105

6.3.2 默认文件权限 105

6.4 修改安全设置 107

6.4.1 修改权限 107

6.4.2 修改所有者 108

6.5 共享文件 108

6.6 小结 109

第7章 使用编辑器 111

7.1 vim编辑器 111

7.1.1 vim基本用法 111

7.1.2 编辑数据 113

7.1.3 复制和粘贴 113

7.1.4 搜索和替换 114

7.2 emacs编辑器 114

7.2.1 在控制台中使用emacs 114

7.2.2 在X Windows中使用emacs 118

7.3 KDE系列编辑器 119

7.3.1 KWrite编辑器 119

7.3.2 Kate编辑器 121

7.4 GNOME编辑器 124

7.4.1 启动gedit 124

7.4.2 基本gedit特性 125

7.4.3 设置首选项 125

7.5 小结 128

第2部分 shell脚本的基础知识

第8章 基本脚本编译 131

8.1 使用多条命令 131

8.2 创建脚本文件 131

8.3 显示消息 133

8.4 使用变量 134

8.4.1 环境变量 134

8.4.2 用户变量 135

8.4.3 反引号 136

8.5 重定向输入输出 137

8.5.1 输出重定向 137

8.5.2 输入重定向 137

8.6 管道 138

8.7 数学计算 140

8.7.1 expr命令 140

8.7.2 使用括号 141

8.7.3 浮点解决方案 142

8.8 退出脚本 145

8.8.1 核对退出状态 145

8.8.2 退出命令 146

8.9 小结 147

第9章 使用结构化命令 148

9.1 使用if-then语句 148

9.2 if-then-else语句 150

9.3 嵌套if语句 150

9.4 test命令 151

9.4.1 数值比较 151

9.4.2 字符串比较 152

9.4.3 文件比较 155

9.5 复合条件检查 161

9.6 if-then的高级特征 161

9.6.1 使用双圆括号 162

9.6.2 使用双方括号 162

9.7 case命令 163

9.8 小结 164

第10章 更多结构化命令 165

10.1 for命令 165

10.1.1 读取列表中的值 165

10.1.2 读取列表中的复杂值 166

10.1.3 从变量读取列表 168

10.1.4 读取命令中的值 168

10.1.5 改变字段分隔符 169

10.1.6 使用通配符读取目录 170

10.2 C式的for命令 171

10.2.1 C语言中的for命令 171

10.2.2 使用多个变量 172

10.3 while命令 173

10.3.1 while的基本格式 173

10.3.2 使用多条测试命令 174

10.4 until命令 175

10.5 嵌套循环 176

10.6 文件数据的循环 178

10.7 控制循环 178

10.7.1 break命令 179

10.7.2 continue命令 181

10.8 处理循环的输出 183

10.9 小结 184

第11章 处理用户输入 185

11.1 命令行参数 185

11.1.1 读取参数 185

11.1.2 读取程序名称 187

11.1.3 测试参数 188

11.2 特殊的参数变量 188

11.2.1 参数计数 188

11.2.2 获取所有数据 190

11.3 移位 190

11.4 处理选项 191

11.4.1 找出选项 191

11.4.2 使用getopt命令 194

11.4.3 更高级的getopts命令 196

11.5 标准化选项 197

11.6 获取用户输入 198

11.6.1 基本读取 198

11.6.2 计时 199

11.6.3 默读 200

11.6.4 读取文件 200

11.7 小结 201

第12章 显示数据 202

12.1 了解输入和输出 202

12.1.1 标准文件描述符 202

12.1.2 重定向错误 204

12.2 在脚本中重定向输出 205

12.2.1 临时重定向 205

12.2.2 永久重定向 206

12.3 在脚本中重定向输入 207

12.4 创建自己的重定向 207

12.4.1 创建输出文件描述符 207

12.4.2 重定向文件描述符 208

12.4.3 创建输入文件描述符 208

12.4.4 创建读取/写入文件描述符 209

12.4.5 关闭文件描述符 210

12.5 列出开放文件描述符 210

12.6 禁止命令输出 212

12.7 使用临时文件 212

12.7.1 创建本地临时文件 213

12.7.2 在/temp中创建临时文件 213

12.7.3 创建临时目录 214

12.8 记录消息 215

12.9 小结 216

第13章 脚本控制 217

13.1 处理信号 217

13.1.1 Linux信号回顾 217

13.1.2 生成信号 218

13.1.3 捕获信号 219

13.1.4 捕获脚本退出 220

13.1.5 移除捕获 220

13.2 以后台模式运行脚本 221

13.2.1 以后台模式运行 221

13.2.2 运行多个后台作业 222

13.2.3 退出终端 222

13.3 在不使用控制台的情况下运行脚本 222

13.4 作业控制 223

13.4.1 查看作业 223

13.4.2 重新启动停止的作业 225

13.5 变得更好 225

13.5.1 nice命令 226

13.5.2 renice命令 226

13.6 准确无误地运行 227

13.6.1 使用at命令调度作业 227

13.6.2 使用batch命令 229

13.6.3 调度定期脚本 229

13.7 从头开始 230

13.7.1 在启动时启动脚本 231

13.7.2 随新shell一起启动 232

13.8 小结 232

第3部分 高级shell脚本编程

第14章 创建函数 235

14.1 基本脚本函数 235

14.1.1 创建函数 235

14.1.2 使用函数 236

14.2 返回值 237

14.2.1 默认退出状态 237

14.2.2 使用return命令 238

14.2.3 使用函数输出 239

14.3 在函数中使用变量 239

14.3.1 向函数传递参数 240

14.3.2 在函数中处理变量 241

14.4 数组变量与函数 243

14.4.1 向函数传递数组 243

14.4.2 从函数返回数组 244

14.5 函数递归 245

14.6 创建库 246

14.7 在命令行中使用函数 247

14.7.1 在命令行创建函数 247

14.7.2 在.bashrc文件中定义函数 248

14.8 小结 249

第15章 在脚本中添加颜色 250

15.1 创建文本菜单 250

15.1.1 创建菜单布局 250

15.1.2 创建菜单函数 251

15.1.3 添加菜单逻辑 252

15.1.4 将其全部组合在一起 252

15.1.5 使用select命令 253

15.2 添加颜色 254

15.2.1 ANSI转义码 254

15.2.2 显示ANSI转义码 255

15.2.3 在脚本中使用颜色 256

15.3 制作窗口 257

15.3.1 dialog软件包 257

15.3.2 dialog选项 261

15.3.3 在脚本中使用dialog命令 263

15.4 获取图形 265

15.4.1 KDE环境 265

15.4.2 GNOME环境 267

15.5 小结 270

第16章 sed和gawk介绍 271

16.1 文本处理 271

16.1.1 sed编辑器 271

16.1.2 gawk程序 273

16.2 sed编辑器基础知识 278

16.2.1 更多替换选项 278

16.2.2 使用地址 279

16.2.3 删除行 281

16.2.4 插入和附加文本 282

16.2.5 更改行 283

16.2.6 变换命令 284

16.2.7 打印命令温习 284

16.2.8 将文件用于sed 286

16.3 小结 288

第17章 正则表达式 289

17.1 正则表达式是什么 289

17.1.1 正则表达式的定义 289

17.1.2 正则表达式的类型 290

17.2 定义BRE模式 290

17.2.1 纯文本 290

17.2.2 特殊字符 291

17.2.3 定位符 292

17.2.4 点字符 293

17.2.5 字符类 294

17.2.6 否定字符类 295

17.2.7 使用范围 296

17.2.8 特殊字符类 296

17.2.9 星号 297

17.3 扩展的正则表达式 298

17.3.1 问号 298

17.3.2 加号 299

17.3.3 使用大括号 299

17.3.4 管道符号 300

17.3.5 将表达式分组 300

17.4 正则表达式实战 301

17.4.1 计算目录文件 301

17.4.2 验证电话号码 302

17.4.3 解析电子邮件地址 303

17.5 小结 304

第18章 高级sed编程 306

18.1 多行命令 306

18.1.1 next命令 306

18.1.2 多行删除命令 309

18.1.3 多行打印命令 310

18.2 保留空间 310

18.3 否定命令 311

18.4 更改命令流 313

18.4.1 分支 313

18.4.2 测试 314

18.5 模式替换 315

18.5.1 与号 315

18.5.2 替换个别单词 315

18.6 在脚本中使用sed 316

18.6.1 使用包装器 316

18.6.2 重定向sed输出 317

18.7 创建sed工具 317

18.7.1 双倍行距 318

18.7.2 对可能有空行的文件使用双倍行距 318

18.7.3 对文件中的行记数 319

18.7.4 打印最后几行 319

18.7.5 删除行 320

18.7.6 删除HTML标记 322

18.8 小结 323

第19章 高级gawk编程 324

19.1 使用变量 324

19.1.1 内置变量 324

19.1.2 用户定义的变量 328

19.2 使用数组 329

19.2.1 定义数组变量 329

19.2.2 在数组变量中递归 330

19.2.3 删除数组变量 330

19.3 使用模式 331

19.3.1 正则表达式 331

19.3.2 匹配操作符 331

19.3.3 数学表达式 332

19.4 结构化命令 332

19.4.1 if语句 333

19.4.2 while语句 334

19.4.3 do-while语句 335

19.4.4 for语句 335

19.5 格式化打印 335

19.6 内置函数 337

19.6.1 数学函数 337

19.6.2 字符串函数 338

19.6.3 时间函数 339

19.7 用户定义的函数 340

19.7.1 定义函数 340

19.7.2 使用自己的函数 340

19.7.3 创建函数库 341

19.8 小结 341

第4部分 可选的Linux shell

第20章 ash shell 345

20.1 什么是ash shell 345

20.2 原始ash shell 346

20.2.1 原始ash命令行参数 346

20.2.2 原始ash内置命令 347

20.2.3 ash shell文件 349

20.3 dash shell 349

20.3.1 dash命令行参数 349

20.3.2 dash环境变量 350

20.3.3 dash内置命令 352

20.4 在dash中编写脚本 355

20.4.1 创建ash和dash脚本 355

20.4.2 失效的特性 355

20.5 小结 359

第21章 tcsh shell 360

21.1 什么是tcsh shell 360

21.2 tcash shell的组成部分 360

21.2.1 tcsh命令行参数 361

21.2.2 tcsh文件 361

21.2.3 tcsh登录文件 362

21.2.4 shell启动文件 362

21.2.5 退出文件 363

21.2.6 tcsh环境变量 364

21.2.7 shell变量 364

21.2.8 环境变量 367

21.2.9 在tcsh中设置变量 369

21.2.10 使用set命令 369

21.2.11 使用setenv命令 369

21.2.12 tcsh内置命令 370

21.3 在tcsh中编写脚本 372

21.3.1 处理变量 372

21.3.2 数组变量 372

21.3.3 处理数学运算 372

21.3.4 结构化命令 373

21.3.5 if语句 373

21.3.6 foreach语句 375

21.3.7 while语句 375

21.3.8 switch命令 375

21.4 小结 376

第22章 Korn shell 378

22.1 Korn shell的历史 378

22.2 ksh93 shell的组成部分 378

22.2.1 命令行参数 379

22.2.2 默认文件 380

22.2.3 环境变量 380

22.2.4 内置命令 385

22.3 在ksh93 shell中编写脚本 387

22.3.1 数学运算 387

22.3.2 结构化命令 389

22.3.3 命令重定向 391

22.3.4 规程函数 391

22.4 小结 392

第23章 zsh shell 393

23.1 zsh shell的历史 393

23.2 zsh shell的组成部分 393

23.2.1 shell选项 394

23.2.2 zsh shell文件 396

23.2.3 环境变量 398

23.2.4 内置命令 401

23.3 使用zsh编写脚本 405

23.3.1 数学运算 405

23.3.2 结构化命令 406

23.3.3 函数 406

23.4 小结 408

第5部分 高级主题

第24章 使用数据库 411

24.1 MySQL数据库 411

24.1.1 安装MySQL 411

24.1.2 完成MySQL配置 413

24.1.3 MySQL客户端接口 414

24.1.4 创建MySQL数据库对象 417

24.2 PostgreSQL数据库 419

24.2.1 安装PostgreSQL 419

24.2.2 PostgreSQL命令接口 421

24.2.3 创建PostgreSQL数据库对象 422

24.3 处理表 424

24.3.1 创建表 424

24.3.2 插入和删除数据 425

24.3.3 查询数据 426

24.4 在脚本中使用数据库 427

24.4.1 连接到数据库 427

24.4.2 向服务器发送命令 428

24.4.3 格式化数据 431

24.5 小结 432

第25章 使用Web 433

25.1 Lynx程序 433

25.1.1 安装Lynx 434

25.1.2 Lynx命令行 434

25.1.3 Lynx配置文件 438

25.1.4 Lynx环境变量 439

25.1.5 从Lynx捕获数据 439

25.2 cURL程序 441

25.2.1 安装cURL 441

25.2.2 cURL命令行 442

25.2.3 研究curl 444

25.3 使用zsh连接网络 445

25.3.1 TCP模块 445

25.3.2 客户端/服务器模型 446

25.3.3 使用zsh进行客户端/服务器编程 446

25.4 小结 449

第26章 使用电子邮件 450

26.1 Linux电子邮件基础知识 450

26.1.1 Linux中的电子邮件 450

26.1.2 邮件传输代理 451

26.1.3 邮件分发代理 452

26.1.4 邮件用户代理 452

26.2 设置服务器 454

26.2.1 sendmail 455

26.2.2 Postfix 456

26.3 使用Mailx发送消息 459

26.4 Mutt程序 461

26.4.1 安装Mutt 461

26.4.2 Mutt命令行 462

26.4.3 使用Mutt 462

26.5 小结 463

第27章 管理员使用的shell脚本 465

27.1 监视系统统计信息 465

27.1.1 监视磁盘空闲空间 465

27.1.2 谁在霸占磁盘资源 467

27.1.3 监视CPU和内存使用情况 469

27.2 执行备份 474

27.2.1 归档数据文件 474

27.2.2 脱机存储备份文件 477

27.3 小结 478

附录A bash命令快速指南 479

A.1 内置命令 479

A.2 bash命令 480

A.3 环境变量 481

附录B sed和gawk快速指南 484

B.1 sed编辑器 484

B.1.1 启动sed编辑器 484

B.1.2 sed命令 484

B.2 gawk程序 487

B.2.1 gawk命令格式 487

B.2.2 使用gawk 487

B.2.3 gawk变量 488

B.2.4 gawk程序功能 489

附录C shell版本比较 491

C.1 变量 491

C.1.1 环境变量 491

C.1.2 用户定义的变量 491

C.1.3 数组变量 492

C.2 结构化命令 492

C.2.1 if-then、while和until语句 492

C.2.2 for语句 493

C.3 数学计算 493

更多简介内容

推荐帖子

STM32F103通过TIM+DMA发送指定个数脉冲,数量会多
如题,我用STM32F103VCT6的TIM+DMA功能,在1ms里发送指定个数的脉冲个数。通过DMA改变TIM->CCRx,TIM的比较输出时间触发DMA传输,当DMA长度为0,触发DMA中断事件,清零TIM->CCRx的值,停止TIM发送PWM。我需要发10、200、500、1000、2000、5000个的脉冲数。目前当我发送500个脉冲的时候,会多1个。然后我也移植到407VET6去进行测试
ckjjjj stm32/stm8
评估板快速测试-基于TI Sitara Cortex-A9(2)
SD卡读写测试   本小节使用评估板配套的Linux系统启动卡来测试SD卡的读写速度。不同的SD卡以及不同大小的测试文件,对SD卡的测试结果会造成一定差异。评估板启动后,Linux系统启动卡的BOOT分区将会挂载在文件系统”/run/media/mmcblk0p1”目录下。 Target# ls /run/media/mmcblk0p1 图 40  
Tronlong小分队 ARM技术
【CH579M-R1】1. 开箱上电及开发环境搭建
本帖最后由 yanxinboy 于 2020-9-9 20:25 编辑 昨天周一(9-7)终于收到了开发板!本来以为上周五可以收到,那样的话周末就有更多的时间可以折腾下。  0. 开箱 先上靓照, 包装中规中矩,打印了沁恒的LOGO, 网址,及公众号二维码,以及沁恒的口号“专业 易用。 底部有公司地址销售技术支持信息。  现在我们来看看主角。 CH5
yanxinboy 国产芯片交流
基于C2000的旋变软件解码方案
     在工信部发布的《新能源汽车产业发展规划(2021-2035年)》(征求意见稿)中提出,到2025年,新能源汽车新车销量占比达到25%左右,智能网联汽车新车销量占比达到30%,高度自动驾驶智能网联汽车实现限定区域和特定场景商业化应用。新能源汽车主要以电能为动力源,通过电动机驱动行驶。为了获得更好的驾驶体验,工程师往往需要知道电机当前的角度位置以及速度信息,在算法上提供相应扭矩和功率。汽车应
Jacktang 微控制器 MCU
电动工具的挑战带来的变革,三相无刷直流电机诞生。
在电动工具发展的前 100 年,设计和制造钻头、打磨机、磨床、螺丝刀、吹风机、锯等工具时,仅需一部电源、一台电机和一个开关/电位器。然而,在 20 世纪,高能量密度电池的出现改变了这一情况。此外,我们还看到了绿色能源解决方案的出现,以及将其融入所有设计形式中的趋势。  我们所面临的挑战是如何继续使用电位计来控制工具的运转速度,而不必让高电流通过其电阻组件。正如我们稍后将看到的,这是一个相当简
alan000345 RF/无线
一周测评情报来啦~新鲜速递就在这里
上周TI测评上线,这周我们的灵动微电子的eminiboard测评也马上准备上线了哦~这一周过去又有很多测评报告出炉,快来看看吧~~   处于申请期和还有名额可以继续申请的活动: 1.TI LAUNCHXL-280049C免费测评试用 http://bbs.eeworld.com.cn/elecplay/content/143 2.TI MSP430F5529 Laun
okhxyyo 开发板测评专版

评论

登录/注册

意见反馈

求资源

回顶部

datasheet推荐 换一换

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版 版权声明

北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD.com.cn, Inc. All rights reserved
$(function(){ var appid = $(".select li a").data("channel"); $(".select li a").click(function(){ var appid = $(this).data("channel"); $('.select dt').html($(this).html()); $('#channel').val(appid); }) })