linux命令行大全pdf电子书完整免费版|百度网盘下载

编者按:Linux命令行大全pdf百度云

《Linux命令行百科全书》主要介绍linux命令行的使用,循序渐进,深入浅出,引导读者全面掌握命令行的使用,适合新手和初级linux服务器管理员谁从其他平台过渡到 linux。如果您有兴趣,请下载并开始学习。

部分图书预览

简介

《Linux命令行百科全书》主要介绍linux命令行的使用,循序渐进,深入浅出,引导读者全面掌握命令行的使用。

《Linux 命令行百科全书》分为四个部分。第一部分开始了命令行基础语言的学习之旅,包括命令结构、文件系统的引导、命令行的编辑、命令的帮助系统和手册。

第二部分主要介绍配置文件的编辑,用于对计算机操作进行命令行控制。第三部分涵盖从命令行执行的一般任务。类 Unix 操作系统,如 linux,包含许多“经典”命令行程序,

这些程序有效地处理数据。第 4 部分介绍了 shell 编程,这是一种公认​​的基本且易于学习的技术,可以自动执行许多常见的系统任务。通过学习shell编程,读者还可以熟悉其他编程语言的使用。

“完整的 Linux 命令行”适用于从其他平台过渡到 Linux 的新用户和初学者 Linux 服务器管理员。没有任何linux基础和linux编程经验的读者也可以通过本书掌握linux命令行的使用

关于作者

William E. Shotts, Jr. 从事软件开发人员和狂热的 Linux 用户已有 15 年了。他在软件开发方面拥有扎实的背景,包括技术支持、质量保证和文档。

他也是 Linux 命令。 org 的创始人,这是一个 Linux 教育和宣传网站,以新闻、评论和对使用 Linux 命令行的人们的广泛支持而闻名

目录

《Linux命令行百科全书》

第 1 部分:学习 shell

第 1 章什么是 shell 3

1.1 终端仿真器3

1.2 第一次键盘输入4

1.2.1 命令历史 4

1.2.2 光标移动 4

1.3 几个简单的命令 5

1.4 结束终端会话 6

第 2 章导航 7

2.1 理解文件系统树7

2.2 当前工作目录 8

2.3 列出目录内容 9

2.4 改变当前工作目录9

2.4.1 绝对路径名 9

2.4.2 相对路径名 9

2.4.3 一些有用的快捷键 10

第 3 章 Linux 系统 13

3.1 ls 命令的乐趣 13

3.1.1 选项和参数 14

.3.1.2 详细了解长列表格式 15

3.2 使用file命令判断文件类型16

3.3 使用less命令查看文件内容16

3.4 快速浏览 18

3.5 符号链接 20

第 4 章操作文件和目录 23

4.1 通配符 24

4.2 mkdir - 创建目录 26

4.3 cp——复制文件和目录 26

4.4 mv - 删除和重命名文件 27

4.5 rm - 删除文件和目录 28

4.6 ln - 创建链接 29

4.6.1 硬链接 29

4.6.2 符号链接 30

4.7 实战演练30

4.7.1 创建目录 30

4.7.2 复制文件 31

4.7.3 移动和重命名文件 31

4.7.4 创建硬链接 32

4.7.5 创建符号链接 33

4.7.6 删除文件和目录 34

4.8 本章第 35 章的结论

第 5 章使用命令 37

5.1 究竟什么是命令 38

5.2 识别命令 38

5.2.1 type——显示命令的类型 38

5.2.2 which——显示可执行程序的位置 39

5.3 获取命令文档 39

5.3.1 help——获取shell内置命令的帮助文档39

5.3.2 help——显示命令使用信息40

5.3.3 man——显示程序手册页40

5.3.4 apropos——显示适当的命令 41

5.3.5 whatis——显示命令42的简要描述

5.3.6 info——显示程序信息条目42

5.3.7 自述文件和其他程序文档文件 43

5.4 使用别名创建自己的命令 43

5.5 以旧换新 45

第6章重定向47

6.1 标准输入、标准输出和标准错误 48

6.1.1 标准输出重定向 48

6.1.2 标准错误重定向 50

6.1.3 将标准输出和标准错误重定向到同一个文件 50

6.1.4 处理不需要的输出 51

6.1.5 标准输入重定向 51

6.2 管道 53

6.2.1 过滤器 53

6.2.2 uniq - 报告或忽略文件 54 中的重复行

6.2.3 wc——打印行、字和字节54

6.2.4 grep -- 打印匹配的第 54 行

6.2.5 head/tail - 输出文件55的开始/结束

6.2.6 tee - 从stdin读取数据,同时输出到stdout和file 56

6.3 本章第 57 章的结论

第7章通过壳看世界59

7.1 扩展 59

7.1.1 路径扩展名 60

7.1.2 Wave 扩展 61

7.1.3 算术扩展 61

7.1.4 大括号扩展 62

7.1.5 参数扩展63

7.1.6 命令替换 64

7.2 引文 65

7.2.1 双引号65

7.2.2 单引号 67

7.2.3 转义字符 67

7.3 结论 68

第8章高级键盘技巧69

8.1 编辑命令行 69

8.1.1 光标移动 70

8.1.2 修改文字 70

8.1.3 杀死和拉扯文本 71

8.2 自动补全 71

8.3 使用历史命令 73

8.3.1 搜索历史命令 73

8.3.2 历史扩展 75

8.4 本章第 76 章的结论

第 9 章权限 77

9.1 所有者、组成员和所有其他用户 78

9.2 读、写和执行 79

9.2.1 chmod -- 更改文件模式 81

9.2.2 使用gui设置文件模式84

9.2.3 umask - 设置默认权限 85

9.3 身份变更 87

9.3.1 su -- 以另一个用户和组 ID 运行 shell 88

9.3.2 sudo -- 以另一个用户身份执行命令 89

9.3.3 chown - 更改文件所有者和组 90

9.3.4 chgrp - 更改文件所属的组 91

9.4 权限的使用 91

9.5 修改用户密码 93

第10章流程95

10.1 流程如何工作 96

10.1.1 使用ps命令查看进程信息96

10.1.2 使用top命令动态查看进程信息98

10.2 控制流程 100

10.2.1 中断进程 100

10.2.2 保持进程在后台运行 101

10.2.3 将进程带回前台 101

10.2.4 停止(暂停)进程 102

10.3 信号 102

10.3.1 使用kill命令向进程103发送信号

10.3.2 使用killall命令向多个进程发送信号105

10.4 更多与进程相关的命令 105

第二部分配置和环境

第11章环境109

11.1 环境中存储的内容 109

11.1.1 检查环境110

11.1.2 一些有趣的变量 111

11.2 环境是如何创建的 112

11.2.1 登录和非登录shell 112

11.2.2 启动文件113里有什么

11.3 修改环境114

11.3.1 用户应该修改哪些文件114

11.3.2 文本编辑器 115

11.3.3 使用文本编辑器 115

11.3.4 激活我们的更改 117

11.4 本章第 118 章的结束语

第 12 章 vi 119 简介

12.1 为什么要学习 vi 119

12.2 vi 背景 120

12.3 启动和退出 vi 120

12.4 编辑模式121

12.4.1 进入插入模式122

12.4.2 保存工作 122

12.5 移动光标123

12.6 基本编辑 124

12.6.1 添加文本 124

12.6.2 插入第 125 行

12.6.3 删除文本 126

12.6.4 剪切、复制和粘贴文本 127

12.6.5 合并第 128 行

12.7 查找和替换 128

12.7.1 内联搜索 128

12.7.2 搜索整个文件 129

12.7.3 全局搜索和替换 129

12.8 编辑多个文件 130

12.8.1 切换文件 131

12.8.2 加载更多文件 132

12.8.3 在文件之间复制内容 132

12.8.4 插入整个文件 133

12.9 保存工作 134

第 13 章自定义提示 135

13.1 提示135的分解

13.2 尝试设计提示 137

13.3 添加颜色 138

13.4 移动光标140

13.5 保存提示 141

13.6 章结束语 141

第三部分常见任务和主要工具

第 14 章包管理 145

14.1 包装系统 146

14.2 包系统如何工作 146

14.2.1 包文件 146

14.2.2 库 147

14.2.3 依赖关系 147

14.2.4 高级和低级封装工具 147

14.3 常见的包管理任务 148

14.3.1 在存储库中查找包 148

14.3.2 在存储库中安装包 148

14.3.3 从包文件 149 安装包

14.3.4 删除包 149

14.3.5 更新存储库中的包 150

14.3.6 更新包文件中的包 150

14.3.7 列出已安装的包 150

14.3.8 判断是否安装了包151

14.3.9 显示已安装包的信息 151

14.3.10 查看151具体文件安装了哪个软件包

14.4 章节结束语 152

第15章存储介质155

15.1 安装和卸载存储设备 156

15.1.1 查看挂载文件系统列表 157

15.1.2 确定设备名称160

15.2 创建新文件系统 162

15.2.1 使用 fdisk 命令 162 进行磁盘分区

15.2.2 使用 mkfs 命令 164 创建新文件系统

15.3 测试和修复文件系统 165

15.4 格式化软盘 166

15.5 直接从/向设备传输数据 166

15.6 创建 cd-rom 映像 167

15.6.1 创建 cd-rom 文件镜像副本 167

15.6.2 从文件集合创建图像文件 168

15.7 将图像文件写入 cd-rom 168

15.7.1 直接挂载iso镜像文件168

15.7.2 擦除读写 CD-ROM 169

15.7.3 写入图像文件 169

15.8 附加认证 169

第16章网络171

16.1 检查和监控网络 172

16.1.1 ping——向网络主机 172 发送特殊数据包

16.1.2 traceroute——追踪网络数据包173的传输路径

16.1.3 netstat - 检查网络设置和相关统计 174

16.2 通过网络传输文件 175

16.2.1 ftp——使用ftp(File Transfer Protocol)传输文件175

16.2.2 lftp - 更好的 ftp(文件传输协议)177

16.2.3 wget——非交互式网络下载工具177

16.3 与远程主机的安全通信 178

16.3.1 ssh - 安全登录到远程计算机 178

16.3.2 scp 和 sftp - 安全传输文件 181

第17章文件搜索183

17.1 定位——查找文件 184 的更简单方法

17.2 find——以更复杂的方式查找文件 185

17.2.1 测试选项 186

17.2.2 操作选项 190

17.2.3 返回 Playground 文件夹 194

17.2.4 选项 196

第 18 章存档和备份 197

18.1 文件压缩 198

18.1.1 gzip - 文件压缩解压198

18.1.2 bzip2——牺牲速度换取高质量数据压缩 200

18.2 档案 201

18.2.1 tar - 磁带存档器 201

18.2.2 zip——打包压缩文件205

18.3 同步文件和目录 207

18.3.1 rsync - 远程文件和目录的同步 207

18.3.2 通过网络使用 rsync 命令 209

第19章正则表达式211

19.1 什么是正则表达式 211

19.2 grep——文本搜索 212

19.3 元字符和文字 213

19.4 任意字符 214

19.5 锚点 214

19.6 括号表达式和字符类 215

19.6.1 负 216

19.6.2 传统字符范围 216

19.6.3 posix 字符类 217

19.7 POSIX基本正则表达式与扩展正则表达式比较220

19.8 或选项 221

19.9 预选赛 222

19.9.1? ——匹配一个元素0或1次222

19.9.2 *——匹配一个元素多次或零次 222

19.9.3+——匹配一个元素一次或多次 223

19.9.4 {} — 将元素匹配指定次数 223

19.10 正则表达式的应用 224

19.10.1 使用 grep 验证目录 224

19.10.2 使用 find 查找文件名奇怪的文件 225

19.10.3 使用 locate 查找文件 226

19.10.4 使用 less 和 vim 命令搜索文本 226

19.11 章结束语 227

第20章文本处理229

20.1 文本应用程序 230

20.1.1 文件 230

20.1.2 网页 230

20.1.3 电子邮件 230

20.1.4 打印机输出 231

20.1.5 程序源代码231

20.2 以旧换新 231

20.2.1 cat - 连接文件并输出到标准输出 231

20.2.2 sort——232行文本排序

20.2.3 uniq——通知或省略重复的第 238 行

20.3 切片和切块 239

20.3.1 cut——删除239行的部分文本

20.3.2粘贴——合并文本242行

20.3.3 join - 将两个文件中具有相同字段的行连接起来 243

20.4 文本比较 245

20.4.1 comm -- 逐行比较两个排序的文件 245

20.4.2 diff - 逐行比较文件 246

20.4.3补丁——对原文件248的diff操作

20.5 非交互式文本编辑 249

20.5.1 tr - 替换或删除字符 249

20.5.2 sed - 用于文本过滤和转换的流编辑器 251

20.5.3 aspell - 交互式拼写检查器 258

20.6 章结束语 260

20.7 附加组件 261

第21章格式化输出263

21.1 简单的格式化工具 264

21.1.1 nl -- 标记行 264

21.1.2折——将文本中的行长设置为指定长度266

21.1.3 fmt——一个简单的文本格式化工具267

21.1.4 pr - 格式化打印文本 270

21.1.5 printf——格式化并打印数据270

21.2 文档格式化系统 273

21.2.1 roff 和 tex 系列 274

21.2.2 groff——文档格式化系统 274

21.3 本章结束 279

第22章印刷281

22.1 印刷操作简史 282

22.1.1 在黑暗时期打印 282

22.1.2 基于字符的打印机 282

22.1.3 图形打印机 283

22.2 linux模式284打印

22.3 准备打印文档 284

22.3.1 pr——将文本文件转换为打印文件285

22.4 将打印作业发送到打印机 285

22.4.1 lpr -- 打印文件(伯克利类型)286

22.4.2 lp -- 打印文件(system v type)287

22.4.3 另一个参数选项:a2ps 287

22.5 监视和控制打印作业 290

22.5.1 lpstat - 显示打印系统状态 290

22.5.2 lpq——显示打印队列状态291

22.5.3 lprm 和取消 - 删除打印作业 291

第23章编译程序293

23.1 什么是编译 294

23.2 是否所有程序都需要编译295

23.3 编译 C 程序 295

23.3.1 获取源代码296

23.3.2 检查源代码树 297

23.3.3 生成程序 298

23.3.4 安装程序 302

23.4 章节结束语 302

第四部分:编写 Shell 脚本

第 24 章编写你的第一个 Shell 脚本 305

24.1 什么是 shell 脚本 305

24.2 如何编写shell脚本306

24.2.1 脚本文件格式306

24.2.2 可执行权限307

24.2.3 脚本文件 307 的位置

24.2.4 脚本 308 的理想位置

24.3 更多格式化技巧 309

24.3.1 长选项名称 309

24.3.2 缩进和线连接 309

24.5 本章 310 的结束语

第25章启动项目311

25.1 阶段 1:最少文档 311

25.2 第二阶段:添加一点数据313

25.3 变量和常量 314

25.3.1 创建变量和常量 314

25.3.2 给变量和常量赋值316

25.4 这里是文档 317

25.5 本章 319 的结束语

第26章自顶向下设计321

26.1 外壳函数 322

26.2 局部变量 325

26.3 保持脚本运行 326

26.4 章结束语 328

第 27 章流控制:if-Branch 语句 329

27.1 使用 if 330

27.2 退出状态 330

27.3 使用测试命令332

27.3.1 文件表达式 332

27.3.2 字符串表达式 334

27.3.3 整数表达式 335

27.4 更现代的测试命令版本 336

27.5 (( ))——专为整数338设计

27.6 组合表达式 339

27.7 控制运算符:另一种方式的分支 341

27.8 章结束语 342

第 28 章阅读键盘输入 343

28.1 read——从标准输入344读取输入值

28.1.1 选项 346

28.1.2 使用 ifs 分隔输入字段 347

28.2 验证输入 349

28.3 菜单 350

28.4 章结束语 351

28.5 附加项目 352

第 29 章流控制:While 和 Until 循环 353

29.1 循环 353

29.2 而 354

29.3 跳出循环 356

29.4 到 357

29.5 使用循环读取文件 358

29.6 章结束语 358

第 30 章故障排除 359

30.1 语法错误 359

30.1.1 引用缺少 360 度

30.1.2 符号缺失冗余 360

30.1.3 意外扩展 361

30.2 逻辑错误 362

30.2.1 防御性编程 363

30.2.2 输入值验证 364

30.3 测试 364

30.3.1 桩 365

30.3.2 测试用例 365

30.4 调试 366

30.4.1 找到问题域366

30.4.2 跟踪 366

30.4.3 运行期间变量的测试 368

30.5 本章结束语 369

第 31 章流控制:案例分支 371

31.1 案例 371

31.1.1 模式 373

31.1.2 多种模式的组合 374

31.2 本章结束语 375

第32章位置参数377

32.1 访问命令行 377

32.1.1 确定参数的数量 378

32.1.2 shift - 处理大量参数 379

32.1.3 简单应用程序 380

32.1.4 在shell函数中使用位置参数381

32.2 处理多个位置参数 381

32.3 更完整的应用程序 383

32.4 章节结束语 386

第 33 章流控制:For 循环 389

33.1 for:传统的 shell 形式 389

33.2 for:c语言形式392

33.3本章393的结论

第 34 章字符串和数字 395

34.1 参数扩展395

34.1.1 基本参数 396

34.1.2 空变量扩展管理 396

34.1.3 返回变量名扩展397

34.1.4 字符串操作 398

34.2 算术计算和扩展 400

34.2.1 数字基数 401

34.2.2 一元运算符 401

34.2.3 简单算术401

34.2.4 作业 402

34.2.5 位操作 404

34.2.6 逻辑运算 405

34.3 bc:任意精度计算语言 407

34.3.1 使用 bc 407

34.3.2 脚本示例 408

34.4 章节结束语 409

34.5 附加项目 409

第35章数组411

35.1 什么是数组411

35.2 创建数组412

35.3 数组赋值412

35.4 访问数组元素 413

35.5 数组操作 414

35.5.1 输出数组415的全部内容

35.5.2 确定数组元素的数量 415

35.5.3 查找数组中使用的下标 416

35.5.4 向数组末尾添加元素 416

35.5.5 数组排序操作 416

35.5.6 数组删除 417

35.6 章结束语 418

第36章其他命令419

36.1 组命令和子shell 419

36.1.1 执行重定向 420

36.1.2 流程替换 420

36.2 陷阱 422

36.3 异步执行 425

36.4 命名管道 426

36.4.1 设置命名管道 427

36.4.2 使用命名管道 427

36.5 本章第 428 章的结束语

前言

我想给你讲个故事。故事不是 Linus Torvalds 如何在 1991 年编写 Linux 内核的第一个版本,你可以在许多 Linux 书籍中找到。我也不想告诉你,早些时候,Richard Stallman 如何启动 GNU 项目并设计了一个免费的类 UNIX 操作系统。这是一个非常有意义的故事,但大多数 Linux 书籍也涵盖了它。我想告诉你一个关于如何收回对计算机的控制权的故事。

在 1970 年代后期,当我第一次开始使用计算机时,作为一名大学生,一场革命正在发生。微处理器的发明使像你我这样的普通人真正拥有一台计算机成为可能。今天,很难想象一个只有大公司和强大的政府机构才能使用计算机的世界。让我说,你实际上无法想象多少宋。

今天的世界非常不同。从小型手表到大型数据中心以及介于两者之间的所有事物,都可以找到计算机。除了无处不在的计算机,我们还有一个连接所有计算机的无处不在的网络。这开启了个人赋权和创作自由的奇妙新时代。但在过去的两三年里,却悄然发生了一些事情。一家大公司不断地将其控制权强加于世界上绝大多数计算机,并决定您对计算机的操作能力。幸运的是,世界各地的人们都在努力奋斗。他们通过编写自己的软件来争夺对自己计算机的控制权。他们创造了 Linux!

很多人在提到 Linux 时都会提到“自由”,但并不是每个人都理解这种自由的真正含义。自由是能够决定计算机能做什么,而获得这种自由的唯一方法就是知道你的计算机在做什么;自由是一台电脑没有秘密,如果你仔细看,你会发现它的全部内容。

为什么要使用命令行

读者应该已经注意到了,电影中的“超级黑客”,能够在 30 秒内入侵超级安全的军用计算机的家伙,都坐在电脑前,从不碰鼠标。这是因为电影制作人意识到,我们人类本能地理解,让计算机执行任何任务的唯一方法是通过键盘输入命令。

如今,大多数计算机用户只熟悉图形用户界面 (GUI),产品供应商和专家继续灌输这样一种观念,即命令行界面 (CLI) 是一个可怕的东西,而且已经过时了。这是不幸的,因为一个好的命令行界面是一种与人交互的惊人方式,就像我们用字母交流一样。有人说“图形用户界面可以使简单的任务更容易,而命令行界面可以处理复杂的任务”,这种说法今天仍然适用。

由于Linux系统指的是UNIX系列的操作系统,它共享了UNIX系统丰富的命令行工具。 UNIX 系统在 1980 年代初开始流行(尽管它是在 1970 年代才开发的),因此,在广泛采用图形用户界面之前就开发了广泛使用的命令行界面。事实上,Linux 开发人员更喜欢使用命令行界面(而不是其他系统,例如 Windows NT)的原因之一是因为它强大的命令行界面使得“复杂的任务成为可能”。

本书内容

这是一本关于如何使用 Linux 命令行的综合性书籍。与只处理一个程序(例如 shell 程序、bash)的书籍不同,本书教读者如何在更广泛的意义上使用命令行,它是如何工作的,它做了什么,以及使用它的最佳方式是什么方式。

这不是一本关于 Linux 系统管理的书。任何有关命令行的主要讨论都不可避免地涉及系统管理的某些方面,但本书仅涵盖少数管理方面。本书为读者准备了额外的学习内容,以帮助您为使用命令行打下坚实的基础,命令行是完成系统管理任务所必需的重要工具。

本书以 Linux 为中心。许多其他书籍包括其他平台,例如常见的 UNIX 和 Mac OS X 系统,以扩大他们的读者群和影响力。而为了做到这一点,他们只能“淡化”本书的内容,只涵盖一些笼统的话题。本书仅涵盖当前的 Linux 发行版。尽管本书中 95% 的内容对其他类 UNIX 系统的用户有所帮助,但本书主要针对现代 Linux 命令行用户。

本书的读者

本书适合从其他平台切换到Linux的新用户。这些新用户可能已经成为 Microsoft Windows 版本的超级用户;他们可能是老板要求管理 Linux 服务器的管理员;或者他们可能是厌倦了桌面安全问题并想要体验 Linux 的用户。没关系,无论你属于哪一种用户,都欢迎你阅读本书。

但是,一般来说,Linux的启蒙学习没有捷径可走。学习命令行是具有挑战性和令人筋疲力尽的,不是因为它太难,而是因为它涵盖的内容太多。毫不夸张地说,一般的 Linux 系统都有数千个可从命令行使用的程序。您需要提醒自己,命令行不是您可以偶然学习的东西。

另一方面,学习 Linux 命令行是非常值得的。如果您认为自己已经是“超级用户”,请注意您可能不知道什么是真正的“超级用户”。与许多其他计算机技术不同,命令行知识是经久不衰的。今天学到的技能在 10 年后仍然有用。换句话说,命令行是经过时间考验的。

如果读者没有编程经验,别担心,你仍然可以从这本书开始。

阅读剩余
THE END