这本书非常的棒,建议阅读。
这本书介绍如何生存在Linux 命令行的世界。不像一些书籍仅仅涉及一个程序,比如像shell 程序,bash。这本书将试着向你传授如何与命令行界面友好相处。它是怎样工作的?它能做什么?使用它的最好方法是什么?
这不是一本关于Linux 系统管理的书。然而任何一个关于命令行的深入讨论,都一定会牵涉到系统管理方面的内容,这本书仅仅提到一点儿管理方面的知识。但是这本书为读者准备好了学习更多内容的坚实基础,毕竟要胜任系统管理工作也需要良好的命令行使用基本功。
这本书是围绕Linux 而写的。许多书籍,为了扩大自身的影响力,会包含一些其它平台的知识,比如Unix, MacOS X 等。这样做,很多内容只能比较空泛的去讲了。另一方面,这本书只研究了当代Linux 发行版。虽然,对于使用其它类似于Unix 系统的用户来说,书中95%的内容是有用的,但这本书主要面向的对象是现代Linux 命令行用户。
liaojiaao 于 2014-12-04 23:41:09发表:
哈哈哈,谢谢了
wangweimin 于 2014-12-04 21:24:27发表:
阿斯顿撒
wangweimin 于 2014-12-04 21:24:23发表:
车道上非常大师傅
wangweimin 于 2014-12-04 21:24:15发表:
热舞热舞v
madcat3000 于 2014-12-04 18:49:25发表:
(6)m:b
没钱,下载不了!
(6)m:b
空降兵 于 2014-12-03 22:38:15发表:
感谢分享
sdq2003 于 2014-12-03 10:47:20发表:
感谢楼主
qdfc 于 2014-12-01 21:03:00发表:
好教程,要分享,分享过后要阅读,且看且下
micku 于 2014-12-01 12:33:27发表:
积分不足.回复顶起
gongjinsi 于 2014-11-29 13:48:05发表:
谢谢分享
hbsywl 于 2014-11-28 15:42:01发表:
菜鸟路过,学习下
jxzhanght 于 2014-11-26 11:13:34发表:
真的是非常的感谢啊!!!
即虚 于 2014-11-26 09:52:52发表:
谢谢分享
不只听说 于 2014-11-25 19:10:19发表:
很全的样子
不只听说 于 2014-11-25 19:08:05发表:
我是菜鸟,正好可以看看:0)1
qinqiulin1984 于 2014-11-25 10:18:52发表:
学习学习
lailisha 于 2014-11-25 10:17:49发表:
看着还不错的样子~
17095041171 于 2014-11-24 21:22:37发表:
:0w5ty(1 mhhhhhhhhhhhhhhh
xuexuejudy 于 2014-11-24 20:06:18发表:
看着目录感觉就不错!
506649264 于 2014-11-24 17:21:11发表:
我要下载啊 啊啊啊啊
california 于 2014-11-24 08:44:56发表:
很强大
wolfxl320 于 2014-11-22 23:59:01发表:
非常感谢分享!!!
zishu 于 2014-11-22 13:21:40发表:
得好好学习了
826 于 2014-11-21 23:04:08发表:
:0)1
dontfly1986 于 2014-11-20 23:21:16发表:
要好好学习了
瑞恩1975 于 2014-11-20 21:02:40发表:
要好好学习了
shinesha 于 2014-11-20 15:25:19发表:
菜鸟必看。
qlboo 于 2014-11-19 16:29:24发表:
目录
1 引言15
1.1 为什么使用命令行. . . 15
1.2 这本书讲什么. . . . . . 16
1.3 谁应该读这本书. . . . . 16
1.4 这本书的内容. . . . . . 17
1.5 怎样阅读这本书. . . . . 17
1.5.1 前提条件. . . . 18
1.6 拓展阅读19
2 什么是shell 20
2.1 终端仿真器. . . . . . . 20
2.2 第一次按键. . . . . . . 20
2.3 命令历史21
2.4 移动光标21
2.5 关于鼠标和光标. . . . . 21
2.6 试试运行一些简单命令. 22
2.7 结束终端会话. . . . . . 23
2.8 幕后控制台. . . . . . . 23
2.9 拓展阅读23
3 文件系统中跳转24
3.1 理解文件系统树. . . . . 24
3.2 当前工作目录. . . . . . 25
3.3 列出目录内容. . . . . . 26
3.4 更改当前工作目录. . . 26
3.5 绝对路径26
1
3.6 相对路径27
3.7 有用的快捷键. . . . . . 28
4 探究操作系统30
4.1 ls 乐趣. . 30
4.2 选项和参数. . . . . . . 31
4.3 深入研究长格式输出. . 32
4.4 确定文件类型. . . . . . 33
4.5 用less 浏览文件内容. . 34
4.6 less 就是more(禅语:色即是空) . . 36
4.7 旅行指南36
4.8 符号链接39
4.9 硬链接. . 40
4.10 拓展阅读40
5 操作文件和目录41
5.1 通配符. . 41
5.2 cp --复制文件和目录. . 45
5.3 有用的选项和实例. . . 45
5.4 mv --移动和重命名文件46
5.5 有用的选项和实例. . . 47
5.6 有用的选项和实例. . . 48
5.7 ln --创建链接. . . . . . 49
5.8 硬链接. . 49
5.9 符号链接50
5.10 创建游戏场(实战演习) . . . . . . . 50
5.11 创建目录50
5.12 复制文件51
5.13 移动和重命名文件. . . 52
5.14 创建硬链接. . . . . . . 53
5.15 创建符号链接. . . . . . 54
5.16 移动文件和目录. . . . . 55
5.17 总结. . . 57
2
6 使用命令58
6.1 到底什么是命令? . . . 58
6.2 识别命令59
6.3 type -显示命令的类型59
6.4 which -显示一个可执行程序的位置. 59
6.5 得到命令文档. . . . . . 60
6.6 help -得到shell 内部命令的帮助文档60
6.7 --help - 显示用法信息. 61
6.8 man -显示程序手册页61
6.9 apropos -显示适当的命令. . . . . . . 62
6.10 whatis -显示非常简洁的命令说明. . 63
6.11 info - 显示程序Info 条目. . . . . . . 63
6.12 README 和其它程序文档. . . . . . 64
6.13 用别名(alias)创建你自己的命令. . 64
6.14 拜访老朋友. . . . . . . 67
6.15 拓展阅读67
7 重定向68
7.1 标准输入,输出,和错误. . . . . . . 68
7.2 重定向标准输出. . . . . 69
7.3 重定向标准错误. . . . . 70
7.4 重定向标准输出和错误到同一个文件. 71
7.5 处理不需要的输出. . . 72
7.6 重定向标准输入. . . . . 72
7.7 cat -连接文件. . . . . 72
7.8 管道线. . 75
7.9 过滤器. . 75
7.10 uniq - 报道或忽略重复行75
7.11 wc -打印行,字和字节数. . . . . . . 76
7.12 grep -打印匹配行. . . 76
7.13 head / tail -打印文件开头部分/结尾部分. . . . . . 77
7.14 tee -从Stdin 读取数据,并同时输出到Stdout 和文件. . . . . . 78
7.15 总结归纳78
3
8 从shell 眼中看世界80
8.1 echo -显示一行文本. . 80
8.2 (字符) 展开. . . . . . . 80
8.3 路径名展开. . . . . . . 81
8.4 波浪线展开. . . . . . . 82
8.5 算术表达式展开. . . . . 83
8.6 花括号展开. . . . . . . 84
8.7 参数展开86
8.8 命令替换86
8.9 引用. . . 87
8.10 双引号. . 88
8.11 单引号. . 89
8.12 转义字符90
8.13 总结归纳91
8.14 拓展阅读91
9 键盘高级操作技巧92
9.1 命令行编辑. . . . . . . 92
9.2 移动光标92
9.3 修改文本93
9.4 剪切和粘贴文本. . . . . 93
9.5 自动补全94
9.6 利用历史命令. . . . . . 96
9.7 搜索历史命令. . . . . . 96
9.8 历史命令展开. . . . . . 98
9.9 总结归纳99
9.10 拓展阅读99
10 权限100
10.1 拥有者,组成员,和其他人. . . . . . 101
10.2 读取,写入,和执行. . 102
10.3 chmod -更改文件模式103
10.4 借助GUI 来设置文件模式. . . . . . . 106
10.5 umask -设置默认权限. 106
4
10.6 更改身份109
10.7 su -以其他用户身份和组ID 运行一个shell . . . . . 109
10.8 sudo -以另一个用户身份执行命令. . 111
10.9 chown -更改文件所有者和用户组. . 112
10.10chgrp -更改用户组所有权. . . . . . . 113
10.11练习使用权限. . . . . . 113
10.12更改用户密码. . . . . . 116
10.13拓展阅读117
11 进程118
11.1 进程是怎样工作的. . . 118
11.2 查看进程119
11.3 用top 命令动态查看进程. . . . . . . 121
11.4 控制进程123
11.5 中断一个进程. . . . . . 123
11.6 把一个进程放置到后台(执行) . . . . . 123
11.7 进程返回到前台. . . . . 124
11.8 停止一个进程. . . . . . 125
11.9 通过kill 命令给进程发送信号. . . . . 126
11.10通过killall 命令给多个进程发送信号. 129
11.11更多和进程相关的命令. 129
12 shell 环境131
12.1 什么存储在环境变量中? . . . . . . . 131
12.2 检查环境变量. . . . . . 131
12.3 一些有趣的变量. . . . . 132
12.4 一些有趣的变量. . . . . 134
12.5 如何建立shell 环境? . 135
12.6 一个启动文件的内容. . 136
12.7 修改shell 环境. . . . . 138
12.8 我们应该修改哪个文件? . . . . . . . 138
12.9 文本编辑器. . . . . . . 138
12.10使用文本编辑器. . . . . 139
12.11激活我们的修改. . . . . 142
5
12.12总结. . . 142
12.13拓展阅读142
13 vi 简介143
13.1 为什么我们应该学习vi . 143
13.2 一点儿背景介绍. . . . . 144
13.3 启动和停止vi . . . . . . 144
13.4 编辑模式145
13.4.1 插入模式. . . . 146
13.4.2 保存我们的工作. 146
13.5 移动光标147
13.6 基本编辑148
13.6.1 追加文本. . . . 148
13.6.2 打开一行. . . . 149
13.6.3 删除文本. . . . 150
13.6.4 剪切,复制和粘贴文本. . . . . 151
13.6.5 连接行. . . . . . 152
13.7 查找和替换. . . . . . . 153
13.7.1 查找一行. . . . 153
13.7.2 查找整个文件. . 153
13.7.3 全局查找和替代. 154
13.8 编辑多个文件. . . . . . 155
13.8.1 文件之间转换. . 156
13.8.2 从一个文件复制内容到另一个文件. . . . . . 157
13.8.3 插入整个文件到另一个文件. . 158
13.9 保存工作159
13.10拓展阅读159
14 自定制shell 提示符161
14.1 解剖一个提示符. . . . . 161
14.2 试试一些可替代的提示符设计. . . . . 163
14.3 添加颜色164
14.4 移动光标166
14.5 保存提示符. . . . . . . 168
6
14.6 总结归纳168
14.7 拓展阅读169
15 软件包管理170
15.1 打包系统170
15.2 软件包管理系统是怎样工作的. . . . . 171
15.3 包文件. . 171
15.4 资源库. . 171
15.5 依赖性. . 172
15.6 上层和底层软件包工具. 172
15.7 常见软件包管理任务. . 172
15.8 查找资源库中的软件包. 173
15.9 从资源库中安装一个软件包. . . . . . 173
15.10通过软件包文件来安装软件. . . . . . 173
15.11卸载软件174
15.12经过资源库来更新软件包. . . . . . . 175
15.13经过软件包文件来升级软件. . . . . . 175
15.14列出所安装的软件包. . 176
15.15确定是否安装了一个软件包. . . . . . 176
15.16显示所安装软件包的信息. . . . . . . 176
15.17查找安装了某个文件的软件包. . . . . 177
15.18总结归纳177
15.19拓展阅读178
16 存储媒介180
16.1 挂载和卸载存储设备. . 181
16.2 查看挂载的文件系统列表. . . . . . . 182
16.3 确定设备名称. . . . . . 186
16.4 创建新的文件系统. . . 189
16.5 用fdisk 命令操作分区. 189
16.6 用mkfs 命令创建一个新的文件系统. 192
16.7 测试和修复文件系统. . 193
16.8 格式化软盘. . . . . . . 193
16.9 直接把数据移入/出设备194
7
16.10创建CD-ROM 映像. . 195
16.10.1 创建一个CD-ROM 的映像拷贝195
16.10.2 从文件集合中创建一个映像. . 195
16.11写入CD-ROM 镜像. . 196
16.11.1 直接挂载一个ISO 镜像. . . . 196
16.11.2 清除一张可重写入的CD-ROM 197
16.11.3 写入镜像. . . . 197
16.12拓展阅读197
16.13友情提示197
17 网络系统199
17.1 检查和监测网络. . . . . 200
17.2 网络中传输文件. . . . . 203
17.3 与远程主机安全通信. . 205
17.4 拓展阅读211
18 查找文件212
18.1 locate -查找文件的简单方法. . . . . 212
18.2 find -查找文件的复杂方式. . . . . . 214
18.2.1 Tests . . . . . . . 214
18.2.2 操作符. . . . . . 217
18.3 预定义的操作. . . . . . 220
18.4 用户定义的行为. . . . . 222
18.5 提高效率223
18.5.1 xargs . . . . . . . 223
18.6 返回操练场. . . . . . . 224
18.6.1 选项. . . . . . . 227
18.7 拓展阅读228
19 归档和备份229
19.1 压缩文件229
19.2 归档文件233
19.3 同步文件和目录. . . . . 241
19.3.1 在网络间使用rsync 命令. . . 243
8
19.4 拓展阅读244
20 正则表达式245
20.1 中括号表达式和字符类. 250
20.2 传统的字符区域. . . . . 251
20.3 POSIX 字符集. . . . . 252
20.4 POSIX 基本的Vs. 扩展的正则表达式255
20.5 限定符. . 257
20.5.1 ? - 匹配一个元素零次或一次. 257
20.5.2 + - 匹配一个元素一次或多次. 259
20.5.3 { } - 匹配一个元素特定的次数259
20.6 让正则表达式工作起来. 260
20.6.1 通过grep 命令来验证一个电话簿. . . . . . . 260
20.6.2 用find 查找丑陋的文件名. . . 262
20.6.3 用locate 查找文件. . . . . . . 262
20.6.4 在less 和vim 中查找文本. . . 263
20.7 总结归纳265
20.8 拓展阅读265
21 文本处理266
21.1 文本应用程序. . . . . . 267
21.2 比较文本284
21.3 运行时编辑. . . . . . . 289
21.4 总结归纳303
21.5 拓展阅读304
21.6 友情提示304
22 格式化输出305
22.0.1 nl -添加行号. . 305
22.0.2 fold -限制文件列宽. . . . . . 308
22.0.3 fmt -一个简单的文本格式器. 309
23 打印311
23.1 打印简史311
23.1.1 早期的打印. . . 311
9
23.1.2 基于字符的打印机. . . . . . . 312
23.1.3 图形化打印机. . 313
23.2 在Linux 下打印. . . . 313
23.3 为打印准备文件. . . . . 314
23.3.1 pr ----转换需要打印的文本文件. . . . . . . 314
23.4 将打印任务送至打印机. 315
23.4.1 lpr----打印文件(Berkeley 风格) . . . . . . 315
23.4.2 lp----打印文件(System V 风格) . . . . . . 316
23.4.3 另一种选择:a2ps . . . . . . . 317
23.5 监视和控制打印任务. . 320
23.5.1 lpstat----显示打印系统状态. . 320
23.5.2 lpq----显示打印机队列状态. . 321
23.5.3 lprm 和cancel----取消打印任务. . . . . . . 321
24 编译程序323
24.1 什么是编译? . . . . . . 323
24.1.1 所有的程序都是可编译的吗? . 324
24.2 编译一个C 语言. . . . 325
24.2.1 得到源码. . . . 325
24.3 检查源码树. . . . . . . 327
24.3.1 构建程序. . . . 329
24.3.2 安装程序. . . . 333
24.4 总结. . . 333
24.5 拓展阅读334
25 编写第一个Shell 脚本335
25.1 什么是Shell 脚本? . . 335
25.2 怎样编写一个Shell 脚本335
25.3 脚本文件格式. . . . . . 336
25.4 脚本文件位置. . . . . . 337
25.4.1 脚本文件的好去处. . . . . . . 339
25.5 更多的格式技巧. . . . . 339
25.5.1 长选项名称. . . 339
25.5.2 缩进和行继续符. 339
10
25.6 总结归纳341
25.7 拓展阅读341
26 启动一个项目342
26.1 第一阶段:最小的文档. 342
26.2 第二阶段:添加一点儿数据. . . . . . 345
26.3 变量和常量. . . . . . . 345
26.3.1 给变量和常量赋值. . . . . . . 348
26.4 总结归纳352
26.5 拓展阅读353
27 自顶向下设计354
27.1 局部变量358
27.2 保持脚本运行. . . . . . 359
27.3 总结归纳363
27.4 拓展阅读363
28 流程控制:if 分支结构364
28.1 退出状态365
28.2 测试. . . 367
28.2.1 文件表达式. . . 367
28.2.2 字符串表达式. . 370
28.2.3 整型表达式. . . 371
28.3 更现代的测试版本. . . 372
28.4 (( )) - 为整数设计. . . 374
28.5 结合表达式. . . . . . . 375
28.6 控制操作符:分支的另一种方法. . . . 377
28.7 总结. . . 378
28.8 拓展阅读379
29 读取键盘输入380
29.1 read -从标准输入读取数值. . . . . . 381
29.1.1 选项. . . . . . . 383
29.2 校正输入387
29.3 菜单. . . 388
11
29.4 总结归纳390
29.4.1 友情提示. . . . 390
29.5 拓展阅读390
30 流程控制:while/until 循环391
30.1 循环. . . 391
30.2 跳出循环394
30.3 使用循环读取文件. . . 396
30.4 总结归纳397
30.5 拓展阅读397
31 疑难排解398
31.1 语法错误398
31.1.1 丢失引号. . . . 398
31.1.2 丢失或意外的标记. . . . . . . 399
31.1.3 预料不到的展开. 400
31.2 逻辑错误402
31.2.1 防错编程. . . . 402
31.2.2 验证输入. . . . 404
31.3 测试. . . 404
31.3.1 测试案例. . . . 405
31.4 调试. . . 406
31.4.1 找到问题区域. . 406
31.4.2 追踪. . . . . . . 407
31.4.3 执行时检查数值. 409
31.5 总结. . . 410
31.6 拓展阅读410
32 流程控制:case 分支411
32.1 case . . . 411
32.2 模式. . . 413
32.3 执行多个动作. . . . . . 415
32.4 总结. . . 417
32.5 拓展阅读417
12
33 位置参数418
33.1 访问命令行. . . . . . . 418
33.1.1 确定参数个数. . 419
33.1.2 shift - 访问多个参数的利器. . 420
33.1.3 简单应用. . . . 422
33.1.4 Shell 函数中使用位置参数. . . 422
33.2 处理集体位置参数. . . 423
33.3 一个更复杂的应用. . . 425
33.4 总结. . . 428
33.5 拓展阅读431
34 流程控制:for 循环432
34.1 for: 传统shell 格式. . . 432
34.2 for: C 语言格式. . . . . 435
34.3 总结. . . 436
34.4 拓展阅读438
35 字符串和数字439
35.1 参数展开439
35.1.1 基本参数. . . . 439
35.1.2 管理空变量的展开. . . . . . . 440
35.2 返回变量名的参数展开. 442
35.2.1 字符串展开. . . 442
35.2.2 大小写转换. . . 445
35.3 算术求值和展开. . . . . 447
35.3.1 数基. . . . . . . 448
35.3.2 一元运算符. . . 448
35.3.3 简单算术. . . . 448
35.3.4 赋值运算符. . . 450
35.3.5 位运算符. . . . 452
35.3.6 逻辑运算符. . . 453
35.4 bc --一种高精度计算器语言. . . . . . 455
35.4.1 使用bc . . . . . 456
35.4.2 一个脚本实例. . 457
13
35.5 总结. . . 458
35.6 额外加分458
35.7 拓展阅读459
36 数组460
36.1 什么是数组? . . . . . . 460
36.2 创建一个数组. . . . . . 460
36.3 数组赋值461
36.4 访问数组元素. . . . . . 462
36.5 数组操作464
36.5.1 输出整个数组的内容. . . . . . 464
36.5.2 确定数组元素个数. . . . . . . 465
36.5.3 找到数组使用的下标. . . . . . 465
36.5.4 在数组末尾添加元素. . . . . . 466
36.5.5 数组排序. . . . 466
36.5.6 删除数组. . . . 467
36.6 关联数组468
36.7 总结. . . 468
36.8 拓展阅读469
37 奇珍异宝470
37.1 组命令和子shell . . . . 470
37.1.1 进程替换. . . . 474
37.2 陷阱. . . 476
37.3 异步执行479
37.3.1 等待. . . . . . . 480
37.4 命名管道481
37.4.1 设置一个命名管道. . . . . . . 482
37.4.2 使用命名管道. . 482
37.5 总结. . . 483
37.6 拓展阅读483