Linux Shell编程与编辑器使用详解

出版社:电子工业出版社
出版日期:2013-7
ISBN:9787121207174
作者:刘丽霞,杨宇
页数:424页

内容概要

刘丽霞:毕业于西安电子科技大学,获博士学位,现就职于武警工程大学。长期从事计算机信息工程专业的教学与科研工作,主要设计开发各种数据库管理信息系统和以面向对象技术为主的大型应用软件。熟悉Java、C++等开发语言和Linux、Windows CE等操作系统,精通SQL Server、Oracle等数据库。

杨宇:毕业于沈阳农业大学,获博士学位,现就职武警工程大学。长期从事计算机应用技术专业的教学与科研工作,从事数字化设计、人工智能等方面的研究,主要设计开发各种信息网站和管理信息系统。熟悉PHP,ASP,Java等开发语言和Linux操作系统,精通MySQL、SQL Server等数据库。主持科研项目1项,作为主要完成人参与科研项目5项,在国内外期刊上发表论文16篇,EI检索4篇,核心期刊12篇,出版个人专著3部。

书籍目录

第1篇  Linux系统学习基础
第1章 Shell编程基础
1
1.1 基本概念
1
1.1.1 Shell的功能
1
1.1.2 Linux Shell的常用命令
1
1.1.3 启动和退出
2
1.2 常用的Shell类型
3
1.2.1 Linux 默认Shell
3
1.2.2 Bourne Shell的扩展版
3
1.2.3 网关接口Shell
3
1.2.4 早期Shell
3
1.2.5 支持后台作业Shell
4
1.3 Shell基本语法
4
1.3.1 Shell脚本中的注释
4
1.3.2 Shell通配符的使用
4
1.3.3 大小写区分
6
1.3.4 指定使用某个Shell
6
1.3.5 IO重定向
7
1.3.6 管道(Pipe)
10
1.3.7 前台与后台执行任务
11
1.3.8 命令的执行顺序
12
1.3.9 Shell中3种引号的用法
13
1.3.10 运行脚本
13
第2章 系统管理与设置
16
2.1 常用的信息显示命令
16
2.1.1 cal命令:日期显示
16
2.1.2 cat /proc/meminfo:内存使用情况查询
17
2.1.3 free命令:内存详细信息查询
18
2.1.4 arch命令:CPU架构显示
19
2.1.5 cat /proc/cpuinfo命令:处理器CPU信息显示
19
2.1.6 cat /proc/modules:查询当前系统被加载模块
20
2.2 系统信息显示命令
21
2.2.1 proc文件系统:访问系统内核信息
21
2.2.2 modinfo命令:内核模块信息
23
2.2.3 cat /etc/issue命令:系统的当前发行版本
23
2.2.4 cat /proc/version:查看系统内核当前版本
24
2.2.5 cat /proc/partitions:查看系统当前分区
24
2.2.6 cat /proc/interrupts命令:显示中断信息
24
2.2.7 cat /proc/filesystems命令:常用文件系统信息
24
2.2.8 dmesg:启动信息查询
25
2.3 系统常用信息设置
26
2.3.1 date命令:系统时间显示与设置
26
2.3.2 hostname命令:当前系统的主机名显示与设置
28
2.3.3 hwclock命令:硬件时钟显示和设置
29
2.3.4 hash命令:显示、添加或清除哈希表
30
2.3.5 sysctl命令:系统核心参数的设置
31
2.4 文件系统信息显示常用命令
32
2.4.1 echo命令:文本行输出显示
32
2.4.2 isosize命令:iso9660文件系统大小的显示
33
2.4.3 minfo命令:ms-dos文件系统的各项参数的显示
34
2.4.4 pwd命令:当前工作目录的显示
34
2.4.5 procinfo命令:系统状态信息的显示
34
2.4.6 stat命令:文件/文件系统的详细信息的显示
37
2.5 Linux操作系统信息查询
38
2.5.1 uname命令:操作系统信息的显示
38
2.5.2 vmstat命令:虚拟内存的统计信息的显示
39
2.5.3 uptime命令:系统的运行信息的显示
39
2.5.4 locale命令:当前系统的语言设置
40
2.5.5 tload命令:系统负载显示
40
2.5.6 runlevel命令:系统运行级别显示
41
2.5.7 lsmod命令:所有已加载模块的显示
42
2.6 进程资源
43

2.6.1 top命令:进程信息显示
43
2.6.2 ipcs命令:IPC设备信息显示
44
2.6.3 time命令:进程执行时间显示
45
2.6.4 pstree命令:以树状图显示程序
45
2.6.5 ps命令:监测进程
46
2.6.6 pmap命令:显示程序的占用资源信息
49
2.6.7 jobs命令:后台作业
49
2.6.8 mev命令:监视鼠标情况
50
2.6.9 fuser命令:用套接口或者文件识别进程
51
2.7 Linux终端命令行操作
52
2.7.1 fgconsole命令:显示当前虚拟终端数目
52
2.7.2 history命令:显示历史指令
52
2.7.3 gdialog命令:Shell脚本创建对话框
53
2.7.4 yes命令:字符串的连续输出
59
第2篇 系统维护与管理
第3章 常用的系统管理命令
61
3.1 常用的系统管理任务
61
3.1.1 apm命令:BIOS电源管理
61
3.1.2 apmsleep命令:低功耗工作
62
3.1.3 open命令:开启虚拟终端
62
3.1.4 vlock命令:锁定终端
63
3.1.5 sudo命令:用户切换
63
3.1.6 rsh命令:远程用户设置登录Shell
64
3.1.7 chsh命令:切换系统登录时Shell
65
3.1.8 clear命令:清除终端屏幕
66
3.1.9 rlogin命令:智能化远端登录
66
3.2 进程任务管理
67
3.2.1 apmd命令:高级电源管理守护进程
67
3.2.2 fg命令:后台任务放前台
67
3.2.3 kill命令:结束进程
68
3.2.4 killall命令:杀死同名进程
70
3.2.5 nice命令:进程优先级切换
71
3.2.6 pgrep命令:查找符合条件的进程
71
3.2.7 pidof命令:查看正在运行程序的进程ID
73
3.2.8 renice命令:设定进程优先级
73
3.2.9 pkill命令:强制杀死进程
74
3.3 设置系统的各种任务
75
3.3.1 ntsysv命令:图形化设置系统的各种服务
75
3.3.2 symlinks命令:管理和维护符号链接工具
76
3.3.3 mtools:软盘操作工具集
77
3.3.4 gcov命令:coverage测试工具
78
3.3.5 screen命令:视窗程序管理工具
79
3.3.6 logrotate命令:管理log文件
81
3.3.7 pwck命令:检查密码文件
82
3.3.8 exec命令:交出控制权
83
3.3.9 &命令:后台执行任务
83
3.3.10 init命令:进程的父进程
83
3.4 后台任务管理
84
3.4.1 bg命令:后台执行程序
84
3.4.2 wait命令:等待程序返回状态
84
3.4.3 depmod命令:显示模块依赖关系
84
3.4.4 rmmod命令:删除模块
85
3.4.5 ipcrm命令:进程间机制管理
86
3.4.6 watch命令:重复执行命令
87
3.4.7 fc命令:修改执行命令
88
3.4.8 nohup命令:退出登录执行命令
89
3.4.9 suspend命令:暂停执行Shell
89
3.4.10 sleep命令:系统休眠
89
第4章 系统维护命令
91
4.1 常用的系统维护命令
91
4.1.1 bind命令:设置按键组合
91
4.1.2 enable命令:Shell内置命令
92
4.1.3 aumix命令:音效装置设置
94
4.1.4 配置系统的认证资源
96
4.1.5 export命令:设置环境变量
98
4.1.6 hostid命令:主机数字标识
103
4.1.7 alias命令:设置命令的别名
103
4.1.8 chkconfig命令:管理系统服务
104
4.1.9 eval命令:多个命令同时执行
106
4.1.10 dircolors命令:配置ls命令显示颜色
106
4.1.11 set命令:设置Shell执行方式
111
4.1.12 telinit命令:设置系统的运行等级
113
4.2 系统的日常配置
113
4.2.1 declare命令:Shell变量
113
4.2.2 fbset命令:帧缓存设备设置
115
4.2.3 insmod命令:加载模块
117
4.2.4 lilo命令:安装启动装载程序
119
4.2.5 modprobe命令:自动安装依赖模块
119
4.2.6 mkraid命令:raid磁盘阵列
120
4.2.7 losetup命令:设置和控制循环设备
121
4.2.8 rpm命令:RPM包管理
121
4.2.9 ldd命令:共享库文件的相互依赖关系
125
4.2.10 ldconfig命令:配置动态链接绑定
126
4.2.11 up2date命令:升级Red Hat Linux系统
129
4.3 其他常用命令
131
4.3.1 false命令:false返回值
131
4.3.2 true命令:true返回值
132
4.3.3 ulimit命令:控制Shell及进程的资源
132
4.3.4 mouseconfig命令:设置鼠标相关参数
134
4.3.5 setup命令:系统公用程序设置
135
4.3.6 swapoff命令:卸载交换区(swap area)
138
4.3.7 swapon命令:加载交换区(swap area)
139
4.3.8 resize命令:调整终端视窗
140
4.3.9 setserial命令:串口设备设置
140
4.3.10 unalias命令:删除指定的别名
141
4.3.11 unset命令:删除变量或函数
141
4.4 自动作业处理
142
4.4.1 anacron命令:调度守护进程任务
142
4.4.2 at命令:多任务执行排队处理
143
4.4.3 atd命令:执行已经排队的任务
145
4.4.4 atq命令:显示排队的任务
145
4.4.5 atrm命令:删除已经排队的任务
146
4.4.6 atrun命令:执行排好队的任务
146
4.4.7 crontab命令:定时执行程序
146
4.4.8 batch命令:批处理
149
4.5 系统日志
150
4.5.1 syslogd命令:启动syslog日志进程
150
4.5.2 syslog.conf:系统日志配置文件
150
4.5.3 logger命令:测试syslog.conf
153
4.5.4 echo清空日志
153
第5章 正则表达式
154
5.1 正则表达式介绍
154
5.2 元字符
154
5.2.1 元字符的定义
154
5.2.2 元字符的应用示例
155
5.3 字符集和类
156
5.3.1 字符集和类的定义
156
5.3.2 元字集和类的应用示例
157
5.4 重复
157
5.4.1 重复的定义
157
5.4.2 重复的应用示例
158
5.5 子表达式
158
5.5.1 子表达式的定义
158
5.5.2 子表达式的应用示例
159
5.6 定位字符串的开始和末尾
159
5.6.1 开始和末尾的定义
159
5.6.2 定位字符串的开始和末尾的应用示例
160
5.7 分支
161
5.7.1 分支的定义
161
5.7.2 分支的应用示例
161
5.8 匹配特殊字符
161
第3篇 vi编辑器与emacs编辑器
第6章 vi(vim)编辑器
163
6.1 vi(vim)编辑器概述
163
6.1.1 vi(vim)编辑器的发展史
163
6.1.2 启动vi(vim)
164
6.1.3 退出vi(vim)
165
6.1.4 命令模式
166
6.1.5 末行模式
166
6.1.6 插入模式
166
6.2 vi(vim)中的常用命令
167
6.2.1 插入文本命令
167
6.2.2 附加文本命令
167
6.2.3 光标移动命令
167
6.2.4 字符与块删除命令
168
6.2.5 添加新行命令
169
6.2.6 修改文本命令
169
6.2.7 行合并命令
170
6.2.8 文本替换命令
170
6.2.9 句点命令
171
6.2.10 撤销修改命令
171
6.2.11 复制文本命令
171
6.2.12 粘贴文本命令
171
6.2.13 重复执行命令
172
6.3 vi(vim)中的字符与文件操作
172
6.3.1 查找指定字符命令
172
6.3.2 普通与增量查找
172
6.3.3 替换指定字符串
172
6.3.4 更改大小写命令
173
6.3.5 文件读入命令
174
6.3.6 文件写入命令
174
6.3.7 定位到指定行命令
174
6.3.8 显示状态信息命令
175
6.3.9 保存和退出命令
175
6.4 窗口操作
175
6.4.1 窗口操作的快捷方式
175
6.4.2 窗口垂直拆分
176
6.4.3 窗口水平拆分
176
6.4.4 关闭窗口
177
6.4.5 屏幕重绘
177
6.4.6 屏幕滚动
178
6.4.7 文本定位
178
6.4.8 交互式Shell
178
6.4.9 在vi(vim)中执行Shell
179
6.4.10 获得帮助
179
第7章 emacs编辑器
181
7.1 emacs概述
181
7.1.1 emacs发展史
181
7.1.2 启动和退出
182
7.1.3 新建文本
183
7.1.4 保存文本
184
7.2 文本编辑
185
7.2.1 常用命令键
185
7.2.2 光标的移动
185
7.2.3 文本的输入
186
7.2.4 文本的删除
187
7.2.5 字符的查找和替换
187
7.3 缓冲区和窗口
188
7.3.1 水平与垂直拆分窗口
188
7.3.2 多个缓冲区同时进行工作
189
7.3.3 缓冲区中内容的滚动
190
7.4 emacs的扩展工具
190
7.4.1 日历显示
190
7.4.2 执行Shell命令
190
7.4.3 游戏调用
191
第4篇 grep命令、gawk与sed,其他常用文本命令
第8章 grep命令
192
8.1 grep介绍
192
8.1.1 grep的功能介绍
192
8.1.2 grep的工作原理
192
8.2 grep与正则表达式
193
8.2.1 grep正则表达式的元字符集
193
8.2.2 grep正则实例
196
8.2.3 grep的常用参数选项
198
8.2.4 grep与管道的配合使用
202
8.2.5 grep的退出状态
203
8.3 egrep与fgrep
203
8.3.1 egrep处理复杂字符串
203
8.3.2 fgrep处理简单字符串
206
第9章 gawk与sed
207
9.1 过滤器gawk
207
9.1.1 gawk发展史
207
9.1.2 gawk的程序处理模式
209
9.1.3 gawk的语法格式
209
9.1.4 gawk注释
211
9.1.5 变量赋值
211
9.1.6 模式的使用
212
9.1.7 指定动作
214
9.1.8 使用重定向输出
214
9.1.9 字段分隔符输出
215
9.1.10 记录与字段的介绍
215
9.2 gawk的编程设计
216
9.2.1 函数
216
9.2.2 关联数组
217
9.2.3 格式化输出命令
218
9.2.4 关系运算符
219
9.2.5 算术运算符
220
9.2.6 流程控制语句
222
9.2.7 getline:控制输入
224
9.2.8 协进程
225
9.2.9 网络数据交换
226
9.2.10 gawk的应用示例
227
9.3 流编辑器sed
228
9.3.1 sed编辑器介绍
229
9.3.2 sed的基本语法
229
9.3.3 地址的作用
230
9.3.4 指令的作用
231
9.3.5 删除指令
232
9.3.6 追加指令
232
9.3.7 打印指令
233
9.3.8 修改指令
233
9.3.9 替换指令
234
9.3.10 插入指令
236
9.3.11 退出指令
236
9.3.12 下一条指令
237
9.3.13 文件写入指令
237
9.3.14 文件读入指令
238
9.3.15 sed的控制结构
238
9.3.16 Pattern区和Hold区
239
9.3.17 sed的应用示例
241
第5篇 Shell编程及编程实战
第10章 其他常用的文本编辑命令
243
10.1 文本编辑常用命令
243
10.1.1 cat命令:标准输出设备显示文本内容
243
10.1.2 ed命令:行文本编辑器
245
10.1.3 fmt命令:重排文本文件
246
10.1.4 gedit命令:图形化文本编辑器
247
10.1.5 ed命令:行文本编辑器
248
10.1.6 jed命令:jed编辑文本文件
249
10.1.7 cut命令:文件剪切
250
10.1.8 colrm命令:删除指定的列
252
10.1.9 comm命令:对已排序文件逐行进行比较
253
10.1.10 od命令:格式化输出文件内容
254
10.1.11 joe命令:ASCII文本编辑器
255
10.1.12 aspell命令:检查文件的拼写错误
258
10.1.13 col命令:过滤控制字符
260
10.1.14 view命令:只读方式查看文件内容
260
10.1.15 more 命令:分屏显示文本内容
261
10.1.16 head命令:部分显示文本内容
262
10.2 其他常用的文本命令与技巧
264
10.2.1 cmp命令:文件属性比较
264
10.2.2 diff命令:文件内容比较
265
10.2.3 diffstat命令:diff结果的统计信息
268
10.2.4 patch命令:文件打补丁
269
10.2.5 csplit命令:按指定行数分割文件
270
10.2.6 uniq命令:显示文件中重复出现的行
271
10.2.7 pr命令:编排文件格式
272
10.2.8 pico命令:编辑文字文件
273
10.2.9 tail命令:读取文件的末尾部分
275
10.2.10 tac命令:反序显示文本内容
277
10.2.11 less 命令:前后翻阅文本内容
278
10.2.12 sort 命令:文件排序
279
10.2.13 indent命令:调整c代码文件格式
281
10.2.14 tr命令:转换文本指定字符串
285
10.2.15 join命令:连接两个相同字段文件
286
10.2.16 spell命令:检查文本拼写错误
287
10.2.17 tee命令:读取标准输入到标准输出或文件
287
10.2.18 wc命令:统计文本信息
288
第11章 Shell变量及相关操作
290
11.1 Shell变量类型
290
11.1.1 Shell环境变量
290
11.1.2 位置变量
292
11.1.3 预定义的特殊变量
293
11.1.4 用户自定义的变量
294
11.2 变量的操作
294
11.2.1 创建和设置变量
294
11.2.2 区分变量名
295
11.2.3 删除变量
295
11.3 变量的赋值
296
11.3.1 直接给变量赋值
296
11.3.2 使用read命令赋值
296
11.3.3 命令行参数赋值
298
11.3.4 命令的输出结果赋值
298
11.3.5 文件读入数据实现赋值
299
11.4 变量的输出
299
11.4.1 printf命令:格式化输出变量
300
11.4.2 echo命令:直接输出变量
301
11.5 数组变量
301
11.5.1 数组的定义
301
11.5.2 数组的复制
303
11.5.3 数组元素的个数
303
11.5.4 数组元素的长度
304
11.6 算术运算
305
11.6.1 expr命令
305
11.6.2 let命令
305
11.6.3 浮点算术运算
306
第12章 条件测试
307
12.1 Shell的测试命令
307
12.2 测试文件属性
307
12.2.1 测试文件存在
307
12.2.2 测试文件存在且可执行
308
12.2.3 测试文件存在且是目录
309
12.2.4 测试文件存在且是字符设备
309
12.2.5 测试文件存在且是块设备
310
12.3 测试数值
310
12.3.1 相等测试
310
12.3.2 不相等测试
311
12.3.3 小于测试
312
12.3.4 小于等于测试
312
12.3.5 大于测试
313
12.3.6 大于等于测试
313
12.4 测试字符串
314
12.4.1 相等测试
314
12.4.2 不相等测试
315
12.4.3 非空测试
316
12.4.4 长度为0测试
316
12.4.5 长度不为0测试
317
12.5 测试逻辑运算符
317
12.5.1 逻辑与测试
318
12.5.2 逻辑或测试
319
12.5.3 逻辑非测试
319
第13章 Shell的控制结构
321
13.1 if结构
321
13.1.1 if结构的语法格式
321
13.1.2 if…then…fi示例
322
13.1.3 if…then…else…fi示例
323
13.1.4 if…then…elif…示例
324
13.1.5 if嵌套
326
13.2 case结构
328
13.2.1 case结构的语法格式
328
13.2.2 case结构示例
328
13.2.3 case嵌套
334
13.3 select结构
335
13.3.1 select结构的语法格式
335
13.3.2 select结构示例
335
13.4 while循环
337
13.4.1 while语句的语法格式
337
13.4.2 while循环示例
338
13.4.3 while的嵌套
339
13.4.4 避免死循环
340
13.5 for循环
341
13.5.1 for循环语法结构
341
13.5.2 for循环示例
342
13.6 until循环
344
13.6.1 until循环的语法结构
344
13.6.2 until循环示例
345
13.7 break和continue语句
346
13.7.1 break语句
346
13.7.2 continue语句
348
第14章 函数
352
14.1 函数的定义
352
14.2 函数的调用
352
14.2.1 执行函数
353
14.2.2 函数参数传递
354
14.2.3 函数的返回值
356
14.2.4 载入函数
358
14.2.5 删除函数
359
14.3 函数的作用域
360
14.3.1 全局作用域
360
14.3.2 局部作用域
361
14.3.3 应用示例
362
14.4 函数的嵌套
363
14.5 函数的递归
364
第15章 Shell编程实例
367
15.1 判断文件类型
367
15.1.1 系统设计
367
15.1.2 代码实现
367
15.2 使用if语句编写选择菜单
367
15.2.1 系统设计
368
15.2.2 代码实现
368
15.3 使用while循环编写选择菜单
369
15.3.1 系统设计
369
15.3.2 代码实现
369
15.4 使用until循环编写选择菜单
371
15.4.1 系统设计
371
15.4.2 代码实现
371
15.5 对指定目录定时备份
374
15.5.1 系统设计
374
15.5.2 代码实现
374
15.6 连续对多个目录逐个备份
375
15.6.1 系统设计
375
15.6.2 代码实现
375
15.7 自动下载指定文档
376
15.7.1 系统设计
376
15.7.2 代码实现
377
15.8 自动上传指定文档
377
15.8.1 系统设计
377
15.8.2 代码实现
377
15.9 通过命令连续创建50个用户账号
379
15.9.1 系统设计
379
15.9.2 代码实现
379
15.10 通过操作文件创建多个用户
380
15.10.1 系统设计
380
15.10.2 代码实现
381
15.11 连续创建多个目录
383
15.11.1 系统设计
383
15.11.2 代码实现
383
15.12 检查系统资源使用情况
384
15.12.1 系统设计
384
15.12.2 代码实现
385
15.13 账户的一致性检查
388
15.13.1 系统设计
388
15.13.2 代码实现
388
15.14 文件类型转换
391
15.14.1 系统设计
391
15.14.2 代码实现
391
15.15 对输入的3个数字进行排序
393
15.15.1 系统设计
393
15.15.2 代码实现
393
15.16 计算奇数之和
395
15.16.1 系统设计
396
15.16.2 代码实现
396
15.17 使用select命令生成菜单
397
15.17.1 系统设计
397
15.17.2 代码实现
397
15.18 打印图形
398
15.18.1 系统设计
398
15.18.2 代码实现
398
15.19 处理压缩文件
399
15.19.1 系统设计
399
15.19.2 代码实现
399
15.20 数值进制转换
401
15.20.1 系统设计
401
15.20.2 代码实现
401
15.21 使用sed打印指定行
402
15.21.1 系统设计
402
15.21.2 代码实现
402
15.22 使用sed筛选普通文件
402
15.22.1 系统设计
402
15.22.2 代码实现
403
15.23 使用gawk反序输出各列
403
15.23.1 系统设计
403
15.23.2 代码实现
403
15.24 对文件进行大小写转换
404
15.24.1 系统设计
404
15.24.2 代码实现
404
15.25 统计文件中的文本信息
405
15.25.1 系统设计
405
15.25.2 代码实现
405

作者简介

本书由浅入深,全面、系统地介绍了Linux技术,书中提供了大量实例,供读者实战演练。另外,本书有很多关于Linux下的命令操作内容,所以对于每个命令、每个管理设置,作者都实际运行了一遍,供读者参考,在后面的Shell编程中,作者详细介绍了Shell变量、函数、语法、控制结构等重要内容,最后一章中介绍综合实例,使读者对于Shell编程的理解进一步加深。
本书共分5篇。第1篇介绍Shell编程基础、系统管理与设置;第2篇介绍常用的系统管理命令、系统维护命令、正则表达式;第3篇介绍vi编辑器、emacs编辑器;第4篇介绍grep命令、gawk与sed;第5篇介绍其他常用的文本编辑命令、Shell变量及相关操作、条件测试、Shell的控制结构、函数、Shell编程实例。
本书适合Linux初学者、想全面学习Linux开发技术的人员、Linux专业开发人员、利用Linux做开发的工程技术人员、Linux开发爱好者、大中专院校的学生、社会培训班学员等。对于经常使用Linux做开发的人员,更是一本不可多得的案头必备参考书。


 Linux Shell编程与编辑器使用详解下载 更多精彩书评



发布书评

 
 


精彩书评 (总计1条)

  •     这本书配合大量实际例子运行操作,学习效果非常好,讲解由浅入深,循序渐进,内容全面,囊括了Linux下编程的方方面面。适合各个层次的读者阅读。贯穿大量的开发实例和技巧,迅速提升工作效率。并且提供10多个典型实例,帮助读者提高实战水平。很不错的一本书

精彩短评 (总计3条)

  •     书很一般。。。
  •     作为查找命令的工具书还是很有帮助的.
  •     工具书
 

外国儿童文学,篆刻,百科,生物科学,科普,初中通用,育儿亲子,美容护肤PDF图书下载,。 零度图书网 

零度图书网 @ 2024