第一篇 Linux基础入门 2
第1章 初识Linux 2
1.1 Linux简介 3
1.1.1 什么是Linux 3
1.1.2 Linux系统的产生 3
1.1.3 Linux系统的发展历程 3
1.1.4 Linux系统的应用 4
1.2 Linux系统的特点和组成 5
1.2.1 Linux系统的特点 5
1.2.2 Linux系统的组成 6
1.2.3 Linux系统与Windows系统的比较 6
1.3 Linux的版本介绍 7
1.3.1 Linux内核版本 7
1.3.2 Linux内核的发展史 8
1.3.3 Linux发行版本 8
1.4 Red Hat Linux操作系统介绍 9
1.4.1 Red Hat Linux的优点 9
1.4.2 Red Hat Linux版本介绍 10
1.4.3 Red Hat Enterprise Linux AS 4简介 11
1.5 课后练习 12
第2章 Linux系统的安装 13
2.1 准备安装Linux系统 14
2.1.1 安装RHEL4系统的软硬件要求 14
2.1.2 Linux系统下硬盘的基本知识 15
2.2 安装Red Hat Enterprise Linux AS 4系统 16
2.2.1 安装Linux的步骤 16
2.2.2 安装后的初始化配置 24
2.3 升级和删除RHEL 4 27
2.3.1 升级RHEL 4 27
2.3.2 删除安装的RHEL 4 28
2.4 RHEL 4安装过程中的故障排除 28
2.4.1 无法引导RHEL 4 28
2.4.2 安装起始部分的问题 29
2.4.3 安装过程中的问题 29
2.4.4 安装后的问题 30
2.5 课后练习 30
第3章 走进Linux图形界面 31
3.1 登录、注销和关闭系统 32
3.1.1 登录系统 32
3.1.2 注销 34
3.1.3 关机 34
3.2 使用GNOME图形化桌面 35
3.2.1 使用桌面 35
3.2.2 使用面板 36
3.3 使用Nautilus文件管理器 37
3.4 使用软盘和光盘 38
3.4.1 使用软盘 38
3.4.2 使用光盘 40
3.5 系统设置 40
3.5.1 系统监视器 40
3.5.2 硬件浏览器 41
3.5.3 显示设置 42
3.5.4 期和时间配置 42
3.5.5 改变桌面背景 44
3.6 KDE桌面简介 45
3.6.1 使用KDE桌面 45
3.6.2 使用面板 46
3.6.3 使用主菜单 47
3.6.4 使用小程序 47
3.6.5 使用多个桌面 47
3.6.6 查看任务栏 48
3.6.7 在面板上添加图标和小程序 48
3.6.8 配置KDE面板 49
3.7 使用Konqueror管理器 49
3.7.1 管理文件 49
3.7.2 导航面板 50
3.7.3 使用Konqueror浏览万维网 50
3.7.4 使用Konqueror来查看图像 50
3.8 定制KDE 51
3.9 课后练习 52
第4章 Linux应用软件的使用 53
4.1 播放音频 54
4.1.1 播放音频光盘 54
4.1.2 播放数码音乐文件 54
4.2 查看图像 55
4.2.1 使用Nautilus查看图像 55
4.2.2 使用gThumb查看图像 56
4.3 上网冲浪 57
4.3.1 配置互联网向导 57
4.3.2 使用Mozilla Firefox浏览万维网 59
4.4 收发电子邮件 60
4.4.1 使用Evolution收发电子邮件 60
4.4.2 使用KMail收发邮件 62
4.5 刻录CD-R和CD-RW 63
4.5.1 使用CD/DVD刻录 63
4.5.2 在命令行中使用CD-R和CD-RW 64
4.6 Linux下常用应用程序介绍 65
4.7 课后练习 66
第5章 Linux字符界面操作 67
5.1 字符界面简介 68
5.1.1 进入Linux字符界面 68
5.1.2 虚拟控制台 68
5.1.3 系统运行级别 68
5.1.4 关闭和启动系统 69
5.2 在Linux下获取帮助 71
5.2.1 使用man手册页 71
5.2.2 使用help命令 73
5.2.3 whereis命令 73
5.3 shell基础 73
5.3.1 shell起步 73
5.3.2 shell类型和功能 74
5.3.3 开始使用bash 75
5.4 shell实用功能 76
5.4.1 命令行自动补全 76
5.4.2 命令历史记录 77
5.4.3 命令的排列、替换和别名 78
5.4.4 文件名匹配和输出重定向 79
5.5 shell变量 83
5.5.1 bash配置文件 83
5.5.2 提示符 83
5.5.3 改变$PATH 84
5.6 vi编辑器的基本使用方法 86
5.6.1 vi的基本概念 86
5.6.2 vi的基本操作 86
5.6.3 命令行模式操作 87
5.6.4 末行模式操作 88
5.7 课后练习 89
第6章 Linux常用操作命令 90
6.1 文件和目录操作 91
6.1.1 显示工作目录路径的命令pwd 91
6.1.2 更改工作目录路径的命令cd 91
6.1.3 列出子目录和文件信息的命令ls 92
6.1.4 创建空文件、更改文件时间的命令touch 93
6.1.5 创建目录的命令mkdir 93
6.1.6 删除空目录的命令rmdir 94
6.1.7 复制文件和目录的命令cp 94
6.1.8 文件和目录改名、移动文件和目录路径的命令mv 95
6.1.9 删除文件和目录的命令rm 95
6.1.10 统计文件字节数、字数、行数的命令wc 96
6.2 文本显示和处理 96
6.2.1 显示文本文件的命令cat 96
6.2.2 分页显示文本文件的命令more 97
6.2.3 回卷显示文本文件的命令less 97
6.2.4 显示指定文件前若干行的命令head 98
6.2.5 查看文件末尾数据的命令tail 98
6.2.6 对文件中的数据进行排序的命令sort 99
6.2.7 将重复行从输出文件中删除的命令uniq 99
6.2.8 从文件每个行中写出选定的字节、字符或字段的命令cut 100
6.2.9 比较两个已排过序的文件的命令comm 100
6.2.10 逐行比较两个文本文件,列出其不同之处的命令diff 101
6.3 文件和命令查找 102
6.3.1 查找文件里符合条件字符串的命令grep 102
6.3.2 列出文件系统内符合条件的文件的命令find 102
6.3.3 在数据库中查找文件的命令locate 103
6.3.4 查找指定文件、命令和手册页位置的命令whereis 104
6.3.5 查询文件类型的命令file 104
6.3.6 查询命令功能的命令whatis 105
6.3.7 显示可执行命令路径的命令which 105
6.4 系统信息显示 105
6.4.1 显示计算机及操作系统相关信息的命令uname 105
6.4.2 显示或修改计算机主机名的命令hostname 106
6.4.3 显示开机信息的命令dmesg 106
6.4.4 显示日历的命令cal 107
6.4.5 显示和设置系统日期和时间的命令date 107
6.5 信息交流 109
6.5.1 在显示器上显示文字的命令echo 109
6.5.2 设定是否允许用write命令发送信息的命令mesg 109
6.5.3 对全部已登录用户发送信息的命令wall 110
6.5.4 向用户发送消息的命令write 110
6.5.5 发送信息给其他使用者的命令talk 110
6.6 其他命令 110
6.6.1 清除屏幕上信息的命令clear 110
6.6.2 将缓冲文件写到硬盘中的命令sync 111
6.6.3 显示系统已经运行时间的命令uptime 111
6.6.4 显示近期用户登录情况的命令last 111
6.7 在Linux系统中运行DOS命令 112
6.8 课后练习 113
第二篇 Linux系统管理 116
第7章 文件和目录 116
7.1 Linux文件 117
7.1.1 Linux文件的扩展名 117
7.1.2 Linux文件类型 118
7.2 Linux目录结构 120
7.3 查看Linux系统的软硬件信息 123
7.3.1 查看计算机CPU信息 123
7.3.2 查看主机DMA通道信息 123
7.3.3 查看文件系统信息 123
7.3.4 查看主机中断信息 124
7.3.5 查看主机I/O端口号信息 124
7.3.6 查看计算机内存信息 124
7.3.7 查看Linux版本信息 125
7.3.8 查看板卡信息 125
7.3.9 查看usb设备 126
7.4 链接文件 126
7.4.1 链接文件简介 126
7.4.2 链接文件的使用 127
7.5 课后练习 128
第8章 用户和组群账户管理 129
8.1 用户账户管理 130
8.1.1 Linux用户账户概述 130
8.1.2 Linux用户账户配置文件 130
8.1.3 图形界面下用户账户的设置 132
8.1.4 字符界面下用户账户的设置 134
8.2 组群账户管理 138
8.2.1 Linux组群账户配置文件 138
8.2.2 图形界面下组群账户的设置 139
8.2.3 字符界面下组群账户的设置 140
8.3 账户相关文件或目录 141
8.3.1 /etc/skel目录 141
8.3.2 /etc/login.defs配置文件 142
8.3.3 /etc/default/useradd文件 143
8.4 创建用户和组群的特殊方法 143
8.4.1 修改用户和用户组群配置文件来添加用户和组群 143
8.4.2 大批量添加用户 144
8.5 用户和组群维护命令 145
8.5.1 账户维护命令 145
8.5.2 账户信息显示 150
8.6 账户安全 152
8.7 课后练习 154
第9章 软件包管理 155
9.1 RPM软件包简介 156
9.1.1 什么是RPM软件包 156
9.1.2 RPM软件包的设计目标 156
9.1.3 RPM软件包管理的用途 156
9.2 RPM软件包管理 157
9.2.1 图形界面管理RPM软件包 157
9.2.2 RPM软件包命令的使用 159
9.3 tar包管理 163
9.3.1 tar包简介 164
9.3.2 tar包使用和管理 164
9.3.3 tar包的特殊使用 166
9.4 其他软件包管理命令 168
9.4.1 gzip命令 168
9.4.2 zip和unzip命令 169
9.5 课后练习 170
第10章 磁盘管理 171
10.1 Linux硬盘分区 172
10.1.1 硬盘分区知识 172
10.1.2 使用fdisk进行硬盘分区 172
10.2 逻辑卷管理器(LVM) 177
10.2.1 什么是LVM 177
10.2.2 LVM配置 178
10.3 RAID配置 180
10.3.1 RAID简介 180
10.3.2 软件RAID配置 182
10.4 课后练习 184
第11章 Linux文件系统 185
11.1 Linux文件系统简介 186
11.1.1 Linux文件系统的工作原理 186
11.1.2 Linux主流文件系统 186
11.1.3 查看RHEL 4支持的文件类型 189
11.2 创建文件系统 190
11.2.1 创建文件系统简介 190
11.2.2 创建文件系统 190
11.3 挂载和卸载文件系统 192
11.3.1 挂载文件系统 192
11.3.2 卸载文件系统 194
11.3.3 查看分区挂载情况 195
11.4 检查文件系统的错误 195
11.5 使用交换空间 197
11.5.1 交换空间简介 197
11.5.2 添加交换空间 197
11.5.3 删除交换空间 199
11.6 设置开机自动挂载文件系统 199
11.6.1 /etc/fstab简介 199
11.6.2 /etc/fstab文件详解 200
11.7 课后练习 201
第12章 磁盘配额和权限设置 202
12.1 磁盘配额的设置 203
12.1.1 磁盘配额简介 203
12.1.2 配置磁盘配额 203
12.1.3 管理磁盘配额 205
12.2 权限设置 206
12.2.1 文件和目录权限 206
12.2.2 权限设置 208
12.2.3 更改文件和目录的所有权 212
12.2.4 设置权限掩码 214
12.3 课后练习 215
第13章 Linux系统启动 216
13.1 Linux系统的启动过程 217
13.1.1 BIOS自检 217
13.1.2 启动GRUB/LILO 218
13.1.3 加载内核 218
13.1.4 执行init进程 218
13.1.5 通过/etc/inittab文件进行初始化 219
13.1.6 执行/bin/login程序 220
13.2 init进程 221
13.3 维护GRUB 224
13.3.1 引导加载程序和GRUB 224
13.3.2 GRUB配置文件 225
13.4 课后练习 226
第14章 进程和服务管理 227
14.1 Linux进程管理 228
14.1.1 进程及作业的概念 228
14.1.2 进程管理 228
14.1.3 守护进程工作原理和方式 230
14.2 查看系统进程信息 231
14.2.1 ps命令 231
14.2.2 top命令 233
14.3 管理服务 235
14.3.1 服务配置工具 235
14.3.2 ntsysv命令 238
14.3.3 chkconfig和service命令 239
14.4 课后练习 241
第15章 作业控制和任务计划 242
15.1 作业控制 243
15.1.1 进程的启动方式 243
15.1.2 进程的挂起及恢复 244
15.2 任务计划 245
15.2.1 配置cron实现自动化 246
15.2.2 使用at实现自动化 250
15.2.3 配置batch作业 252
15.3 课后练习 253
第16章 维护Linux系统 254
16.1 Linux日志管理 255
16.1.1 日志简介 255
16.1.2 日志的查看和配置 255
16.1.3 常用的日志文件 257
16.1.4 syslog程序 259
16.2 查看系统信息 260
16.2.1 查看内存信息 260
16.2.2 查看磁盘空间占用情况 262
16.2.3 显示目录或文件的大小 263
16.3 字符界面的中文化 264
16.3.1 zhcon的特点 264
16.3.2 安装和查看zhcon 265
16.3.3 zhcon的使用 266
16.3.4 zhcon配置文件 267
16.4 课后练习 270
第三篇 Linux网络服务 272
第17章 网络基本配置 272
17.1 网络基础知识 273
17.1.1 Internet所提供的服务 273
17.1.2 网络拓扑结构 274
17.1.3 网络互联的方式 276
17.1.4 OSI参考模型 277
17.1.5 TCP/IP 277
17.1.6 IP地址及其分类 279
17.2 Linux网络配置文件 280
17.2.1 /etc/sysconfig/network-scripts/ifcfg-ethN文件 280
17.2.2 /etc/resolv.conf文件 280
17.2.3 /etc/host.conf文件 281
17.2.4 /etc/sysconfig/network文件 281
17.2.5 /etc/hosts文件 281
17.2.6 /etc/services文件 281
17.3 网络测试命令 282
17.3.1 traceroute命令 282
17.3.2 ifconfig命令 284
17.3.3 ping命令 285
17.3.4 netstat命令 286
17.3.5 arp命令 287
17.3.6 tcpdump命令 288
17.4 字符界面的网络客户端 289
17.4.1 使用FTP命令实现远程文件传输 289
17.4.2 使用telnet命令访问远程计算机 293
17.4.3 使用wget命令下载资料 294
17.5 Linux下路由器的配置 295
17.5.1 路由器的基本概念 295
17.5.2 静态路由器的配置 296
17.5.3 静态路由配置举例 298
17.6 ADSL配置 299
17.6.1 ADSL介绍 299
17.6.2 ADSL配置 301
17.7 课后练习 303
第18章 远程管理Linux服务器 304
18.1 架设telnet服务器 305
18.1.1 安装telnet软件包 305
18.1.2 启动telnet服务 305
18.1.3 配置telnet服务器 306
18.2 OpenSSH配置 308
18.2.1 使用SSH的原因 308
18.2.2 配置OpenSSH服务器 308
18.2.3 Linux客户端的连接 309
18.2.4 Windows客户端的连接 311
18.3 使用VNC实现远程管理 314
18.3.1 VNC简介 314
18.3.2 VNC配置 315
18.4 课后练习 318
第19章 使用Samba实现文件共享 319
19.1 Samba简介 320
19.1.1 Samba和SMB 320
19.1.2 Samba的功能 320
19.1.3 安装和查看Samba软件包 320
19.2 图形界面配置Samba服务器 321
19.2.1 配置服务器设置 322
19.2.2 管理Samba用户 323
19.2.3 添加共享 323
19.3 字符界面配置Samba服务器 325
19.3.1 修改/etc/samba/smb.conf文件 325
19.3.2 设置Samba加密口令 325
19.4 控制Samba服务器 327
19.5 访问Samba共享 327
19.5.1 在Linux系统下访问Samba共享 327
19.5.2 在Windows系统下访问Samba共享 330
19.6 课后练习 330
第20章 DHCP和NFS服务器配置 331
20.1 DHCP服务器配置 332
20.1.1 DHCP简介 332
20.1.2 DHCP服务器配置 334
20.2 NFS服务器配置 338
20.2.1 NFS简介 338
20.2.2 NFS服务器配置 339
20.2.3 启动和停止服务器 341
20.2.4 挂载NFS文件系统 342
20.3 课后练习 344
第21章 使用Apache架设Web网站 345
21.1 Apache简介 346
21.2 基本设置 346
21.3 默认设置 347
21.3.1 页码选项 348
21.3.2 记录日志 349
21.3.3 环境变量 350
21.3.4 目录 351
21.4 虚拟主机设置 353
21.4.1 添加和编辑虚拟主机 353
21.4.2 SSL 354
21.4.3 其他虚拟主机选项 355
21.5 服务器设置 355
21.6 调整性能 356
21.7 保存设置 357
21.8 课后练习 357
第22章 实现Linux网络安全 358
22.1 提高Linux系统安全性能 359
22.2 Linux系统安全保护措施 361
22.3 检测Linux系统 363
22.3.1 Linux入侵检测方法 363
22.3.2 查找Linux系统漏洞 365
22.4 网络安全工具 367
22.4.1 TCP Wrappers实现访问控制 367
22.4.2 nmap的使用 368
22.5 课后练习 372
第四篇 Linux程序开发 374
第23章 shell编程 374
23.1 熟悉shell程序的创建 375
23.1.1 语法基本介绍 375
23.1.2 一个简单shell程序的创建过程 375
23.1.3 显示欢迎界面的shell程序 376
23.2 shell变量 376
23.2.1 shell定义的环境变量 377
23.2.2 用户定义的变量 377
23.2.3 位置参数 378
23.2.4 预定义变量 378
23.2.5 参数置换的变量 378
23.3 变量表达式 379
23.3.1 字符串比较 379
23.3.2 数字比较 380
23.3.3 逻辑测试 380
23.3.4 文件操作 381
23.3.5 进行test测试的标准方法 381
23.4 shell程序的执行和跟踪 381
23.4.1 shell程序的执行和调试 381
23.4.2 shell程序的跟踪 383
23.4.3 bash的内部命令 383
23.5 shell流程控制语句 384
23.5.1 条件判断 385
23.5.2 循环控制 387
23.6 函数 391
23.7 shell编程实例 392
23.7.1 检查输入参数和环境变量 392
23.7.2 当出现错误时,提供一个函数终止脚本 393
23.7.3 在每个脚本内捕获每个行命令的返回码 394
23.7.4 远程杀死僵进程 394
23.8 课后练习 395
第24章 Linux C语言编程基础 396
24.1 C语言简介 397
24.2 数据类型 397
24.2.1 整型(int) 397
24.2.2 浮点型(float) 398
24.2.3 字符型(char) 398
24.2.4 指针型(*) 399
24.2.5 无值型(void) 399
24.3 控制流程语句 399
24.3.1 条件语句 399
24.3.2 循环语句 401
24.3.3 break、continue和goto语句 404
24.4 文件的输入输出函数 406
24.4.1 标准文件函数 406
24.4.2 非标准文件函数 411
24.5 变量 412
24.5.1 变量声明 412
24.5.2 变量种类 412
24.5.3 变量存储类型 413
24.5.4 数组变量 415
24.5.5 变量的初始化和赋值 416
24.6 数组与指针 419
24.6.1 结构说明和结构变量定义 420
24.6.2 结构变量的使用 421
24.6.3 结构数组和结构指针 422
24.6.4 结构的复杂形式 424
24.7 课后练习 425
第25章 Linux程序编译和调试维护 426
25.1 C语言编译器GCC 427
25.1.1 GCC应用简介 427
25.1.2 GCC的使用 427
25.1.3 警告提示功能 428
25.1.4 库依赖 429
25.2 用GDB调试程序 430
25.2.1 GDB概述 430
25.2.2 GDB基本命令 431
25.2.3 GDB应用举例 432
25.3 使用make维护程序 435
25.3.1 makefile文件 435
25.3.2 make命令 437
25.3.3 隐含规则 438
25.4 课后练习 440
例5.1:显示当前系统运行级别 69
例5.2:切换运行级别为2,并显示 69
例5.3:关机 69
例5.4:重新启动计算机 69
例5.5:立即关闭系统 70
例5.6:定时45min后关闭系统 70
例5.7:重新启动系统,并发出警告信息 70
例5.8:使用halt命令关机 70
例5.9:使用reboot命令重启计算机 70
例5.10:显示ls命令的man手册页 71
例5.11:查看init命令帮助 73
例5.12:查找ls命令所在目录 73
例5.13:使用功能键 77
例5.14:使用排列命令“;”同时执行两个命令 78
例5.15:使用排列命令“&&”同时执行两个命令 78
例5.16:使用简单的管道 80
例5.17:使用复杂的管道 81
例5.18:将当前目录的内容保存到文件/root/abc 81
例5.19:使用echo命令和输出重定向创建文件 81
例5.20:将文件/root/a的内容作为输入,让cat命令执行 81
例5.21:查看不存在的/root/kk文件,出现报错信息,将其保存到文件/root/b中 82
例5.22:使用追加重定向 82
例5.23:同时使用输出和错误重定向 82
例5.24:同时使用输出和错误重定向 82
例5.25:查看当前定义的环境变量 84
例6.1:显示当前工作目录路径 91
例6.2:更改工作目录为/etc 91
例6.3:改变目录位置至当前目录的父目录 91
例6.4:改变目录位置至用户登录时的工作目录 91
例6.5:改变目录位置至用户tong的宿主目录 91
例6.6:显示/root目录下文件目录的简单信息 92
例6.7:显示当前目录下所有文件目录的详细信息,包括隐藏文件 92
例6.8:显示/etc/sysconfig/networking目录的信息 93
例6.9:显示当前目录下的文件目录信息,用标记标出文件类型 93
例6.10:创建空文件file、file1和file2 93
例6.11:将文件file的时间记录改为5月7日19点30分,时间格式为MMDDHHmm 93
例6.12:建立一个目录newdir1,其权限为755 94
例6.13:建立一个目录newdir2,其权限为777 94
例6.14:先用mkdir命令建立一些空的目录,然后用rmdir删除 94
例6.15:同时删除这两个空目录 94
例6.16:将文件exam1.c复制到/usr/wang这个目录下,并改名为shiyan1.c 95
例6.17:若上例中不希望重新命名,可以使用下面的命令 95
例6.18:将/usr/xu目录中的所有文件及其子目录复制到目录/usr/liu中 95
例6.19:将/root/picture目录下所有的后缀名为“.png”的文件移到/usr/local/share/picture目录下 95
例6.20:把/root/picture目录下的文件kdepic.png改名为life.png 95
例6.21:把整个pitcure目录改为mypicture 95
例6.22:删除当前目录下的Linux123文件 95
例6.23:删除具有下级文件的目录ab 95
例6.24:统计文件file1、file2的字节数、字数和行数 96
例6.25:显示/etc/shells文件的内容 96
例6.26:把textfile1的文件内容加上行号后输入textfile2文件 97
例6.27:把textfile1和textfile2的文件内容加上行号(空白行不加)之后将内容附加到textfile3 97
例6.28:分页显示文件/root/log.txt的内容 97
例6.29:逐页显示testfile文件的内容,如果有连续两行以上的空白行则以一行空白行显示 97
例6.30:从第20行开始显示testfile文件的内容 97
例6.31:一次显示/etc/passwd文件的两行 97
例6.32:显示/root/log.txt的内容 98
例6.33:/mnt/ittongluren目录下有一个文件“study.txt”,查看该文件前3行的内容 98
例6.34:查看文件/mnt/ittongluren/study.txt末尾3行数据 98
例6.35:读取文件file1,显示在屏幕上 99
例6.36:读取文件file1,以倒序排序该文件并显示在屏幕上 99
例6.37:在名为linux.txt的文件中搜索文本“Jones”,并排序搜索结果 99
例6.38:删除名为fruit的文件中的重复行并将其保存到一个名为newfruit的文件中 100
例6.39:显示文件/etc/passwd的登录名称和完整用户名称字段,由冒号隔开 100
例6.40:比较文件file1和file2 101
例6.41:比较文件file1和file2,只显示文件file1和file2中共有的行 101
例6.42:比较文件file1和file2,列出其不同之处 101
例6.43:在文件kkk中搜索匹配字符“test file” 102
例6.44:显示所有以“d”开头的文件中包含test的行 102
例6.45:显示在aa、bb、cc文件中匹配test的行 102
例6.46:显示所有包含至少有5个连续小写字符的字符串的行 102
例6.47:通过管道过滤“ls-l”输出的内容,只显示以“a”开头的行 102
例6.48:查找/boot目录下的启动菜单配置文件grub.conf 103
例6.49:查找/目录下所有以“conf”为扩展名的文件 103
例6.50:列出当前目录及其子目录下所有最近20min内更新过的文件 103
例6.5 1:查找文件MagicLinux-Tools-1.2pre5.iso 104
例6.52:寻找所有文件名为“abc”的100个文件 104
例6.53:查找mv命令的二进制文件所在目录 104
例6.54:查找mv的主要文件所在目录 104
例6.55:查看当前目录下所有文件类型 105
例6.56:查询ls命令的功能 105
例6.57:显示ls命令的可执行命令的路径和它的别名 105
例6.58:显示操作系统的内核版本 106
例6.59:显示计算机名 106
例6.60:显示计算机类型 106
例6.61:显示操作系统的全部信息 106
例6.62:显示计算机主机名 106
例6.63:修改计算机主机名为Linux 106
例6.64:显示开机信息 106
例6.65:显示本月的月历 107
例6.66:显示公元2001年的年历 107
例6.67:显示公元2001年5月的月历 107
例6.68:以星期一为每周的第一天的方式显示本月的月历 107
例6.69:以一月一日起的天数显示今年的年历 107
例6.70:显示当前的日期和时间 108
例6.71:设置日期和时间 108
例6.72:按照指定的格式显示日期和时间 108
例6.73:设置时间为上午9点16分 108
例6.74:设置时间为2004年4月14日 108
例6.75:用指定的格式显示时间 108
例6.76:将一段信息写到标准输出 109
例6.77:将文本“hello Linux”添加到文件notes中 109
例6.78:显示当前的状态 109
例6.79:允许别人给自己发送信息 109
例6.80:只允许别人给自己发送信息 109
例6.81:向所有用户发出“下班以后请关闭计算机”的信息 110
例6.82:向guest用户发送信息 110
例6.83:与机器的使用者tong对话,此时tong只有一个连线 110
例6.84:与linuxfab.cx上的使用者tong对话,使用pts/2来对话 110
例6.85:清除屏幕上的信息 111
例6.86:将缓冲文件写到硬盘中 111
例6.87:显示系统运行时间 111
例6.88:显示用户root在控制台终端的所有登录和注销记录 112
例6.89:显示系统两次重新引导的时间 112
例6.90:显示用户root在控制终端的所有登录和注销的前10行记录 112
例7.1:硬链接文件的使用 127
例7.2:软链接文件的使用 127
例8.1:创建用户账户tong并设置密码 134
例8.2:对用户账户设置密码和不设置密码比较 135
例8.3:创建用户moon,并设置该用户UID号为510 135
例8.4:创建用户newuser,并设置该用户宿主目录为/home/www 135
例8.5:创建用户old,并指定该用户是属于组群pp的成员 135
例8.6:创建用户abc,并设置该用户的shell类型是/bin/ksh 135
例8.7:修改用户tong的宿主目录为/home/kkk,并手动创建/home/kkk目录 136
例8.8:修改用户qq的宿主目录为/home/opop,并自动创建/home/opop目录 136
例8.9:修改用户tong的登录名为sun 136
例8.10:修改用户sun的用户名描述为太阳 136
例8.11:修改用户sun在密码过期后20天就关闭该账号 136
例8.12:修改用户sun所属的组群为ggg,该组群必须事先创建 137
例8.13:锁住用户sun密码,使密码无效 137
例8.14:解除用户sun的密码锁定 137
例8.15:修改用户sun账号的有效期限是2008年12月12号 137
例8.16:修改用户sun的shell类型为/bin/ksh 137
例8.17:删除用户sun 137
例8.18:删除用户zhangsan,并且在删除该用户的同时删除宿主目录 137
例8.19:创建名为hello的组群 140
例8.20:创建名为ou的组群,并且设置该组群GID号为800 140
例8.21:创建名为system的系统组群 140
例8.22:将组群ou的GID号更改为900 141
例8.23:更改组群ou的新组群名称为shanghai 141
例8.24:删除组群shanghai 141
例8.25:设置用户it的密码 146
例8.26:设置当前用户的密码 146
例8.27:锁住用户it的密码 146
例8.28:解锁用户it的密码 146
例8.29:删除用户shanghai的密码 146
例8.30:把用户it添加到组群kk中 147
例8.31:从组群kk中删除用户it 147
例8.32:设置组群kk的密码 147
例8.33:取消组群kk的密码 147
例8.34:更改用户linux的信息 148
例8.35:设置用户it的办公地址是财务室 148
例8.36:设置用户it的全名为张三 148
例8.37:列出当前系统中所有支持的shell类型 148
例8.38:更改用户linux所用的shell为ksh 148
例8.39:更改当前用户的shell类型为/bin/bash 148
例8.40:从root用户切换到用户it的登录系统 149
例8.41:检验用户配置文件/etc/passwd和/etc/shadow文件内容是否合法、完整 149
例8.42:将用户it以组群tong的身份登录系统 150
例8.43:显示所有用户的信息 150
例8.44:显示用户it的信息 150
例8.45:查看用户it所属的组群 151
例8.46:查询beinan用户的UID、GID以及归属用户组群的情况 151
例8.47:显示用户it所属组群的GID 151
例8.48:显示用户it所属附加组的GID 151
例8.49:显示用户it的UID 151
例8.50:详细查询已登录当前计算机的用户 152
例8.51:显示已登录当前计算机用户的简单信息 152
例8.52:设置用户shanghai的最小时间间隔为2天 153
例8.53:设置用户shanghai的最大时间间隔为10天 153
例8.54:设置用户shanghai的警告时间为1天 153
例8.55:设置用户shanghai的不活跃时间为10天 153
例8.56:设置用户shanghai的失效时间为2008-10-10 153
例8.57:查看用户shanghai当前口令失效的信息 153
例8.58:用交互式的方式设置用户shanghai的口令时效 153
例9.1:安装foo-2.0-1.i386.rpm软件包 159
例9.2:在foo-1.0-1.i386.rpm已安装的情况下仍旧安装该软件包 159
例9.3:foo-1.0-1.i386.rpm软件包冲突,忽略错误继续安装 159
例9.4:卸载foo软件包 160
例9.5:升级foo-2.0-1.i386.rpm软件包 160
例9.6:强制升级foo-1.0-1.i386.rpm软件包 160
例9.7:刷新foo-2.0-1.i386.rpm软件包 160
例9.8:查询foo软件包是否安装 161
例9.9:查询foo软件包是否安装 161
例9.10:查询系统内所有已安装的RPM软件包 161
例9.11:查询bind软件包的描述信息 161
例9.12:查询bind软件包所包含的文件列表 162
例9.13:查询bind软件包的依赖关系 162
例9.14:查询/etc/logrotate.d/named文件属于哪个软件包 162
例9.15:校验所有在bind软件包内的文件 162
例9.16:校验包含/etc/rndc.key文件的软件包 163
例9.17:校验所有安装的软件包 163
例9.18:根据readline-devel-4.3-13.i386.rpm软件包进行校验 163
例9.19:把/root/abc目录包括它的子目录全部做备份文件,备份文件名为abc.tar 165
例9.20:查看abc.tar备份文件的内容,并显示在显示器上 165
例9.21:将打包文件abc.tar解包出来 165
例9.22:将文件d增加到abc.tar包里面去 165
例9.23:更新原来tar包abc.tar中的文件a 166
例9.24:在/dev/fd0设备的软盘中创建一个备份文件,并将/home目录中所有的文件都复制到备份文件中 166
例9.25:恢复软盘设备磁盘中的文件。 166
例9.26:在/dev/fd0设备的软盘中创建一个备份文件,并将/home目录中所有的文件都复制到备份文件中,并在软盘已满的时候提醒用户再放入一张新的软盘 166
例9.27:恢复多张软盘设备磁盘中的文件,并在必要时提醒放入第二张软盘 166
例9.28:把/root/abc目录包括其子目录全部做备份文件,并进行压缩,备份文件名为abc.tar.gz 166
例9.29:查看abc.tar.gz备份文件的内容,并显示在显示器上 166
例9.30:将压缩文件abc.tar.gz解压缩出来 167
例9.31:将目录/root/abc及该目录所有文件压缩成abc.tar.bz2文件 167
例9.32:将abc.tar.bz2文件解压缩 167
例9.33:将文件a压缩成a.tar.Z文件 167
例9.34:将文件a.tar.Z解压缩 167
例9.35:将/root/a文件压缩成.gz文件 168
例9.36:详细显示例9.35中压缩的文件的信息 168
例9.37:将/root/a.gz文件解压缩 168
例9.38:将/root/a.tar文件压缩成.gz文件 169
例9.39:详细显示压缩文件/root/a.tar.gz的信息 169
例9.40:解压缩文件/root/a.tar.gz 169
例9.41:将当前目录下的文件a压缩成zip文件 169
例9.42:将/home目录压缩到当前目录下,生成zip文件 169
例9.43:将压缩文件a.zip在当前目录下解压缩 170
例9.44:将压缩文件text.zip在指定目录/tmp下解压缩 170
例9.45:查看压缩文件目录,但不解压缩 170
例11.1:创建文件系统 190
例11.2:使用mkfs.ext3命令将/dev/hda5设备格式化成ext3文件系统 191
例11.3:挂载文件系统/dev/hda5到/mnt/kk目录 193
例11.4:以只读形式挂载/dev/hda5 193
例11.5:将光盘放入光驱,挂载光盘到/media/cdrom目录中 193
例11.6:卸载光盘 193
例11.7:挂载软盘 194
例11.8:卸载软盘 194
例11.9:挂载文件系统是FAT16格式的U盘 194
例11.10:挂载文件系统是FAT32格式的U盘 194
例11.11:挂载U盘并支持中文 194
例11.12:挂载移动硬盘 194
例11.13:卸载/dev/hda5文件系统 194
例11.14:卸载光盘 195
例11.15:卸载软盘 195
例11.16:使用mount命令查看分区挂载情况 195
例11.17:使用/etc/mtab文件查看分区挂载情况 195
例11.18:扫描/dev/hda10分区(基于reiserfs文件系统) 196
例11.19:扫描并自动修复/dev/hda5文件系统为ext3 197
例11.20:添加交换分区 197
例11.21:添加交换文件 198
例11.22:删除交换分区 199
例11.23:删除交换文件 199
例12.1:添加所有者对文件a的写入权限 210
例12.2:取消所有者对文件a的读取权限 210
例12.3:重新分配用户组对文件a的写入权限 210
例12.4:更改文件a的权限,文件所有者有读取、写入权限,用户组有读取权限,其他用户有读取、写入和执行的权限 210
例12.5:取消所有用户的读取、写入和执行权限 210
例12.6:添加文件a的特殊权限为SUID 210
例12.7:添加文件a的特殊权限为SGID 210
例12.8:添加文件a的特殊权限为Sticky 210
例12.9:设置文件a的权限,使文件所有者拥有读取、写入和执行的权限 211
例12.10:设置文件a的权限,使文件所有者拥有读取权限,用户组有读取、写入和执行的权限 211
例12.11:设置文件a的权限,使所有用户拥有读取、写入和执行的权限 211
例12.12:设置文件a的权限,使其他用户拥有读取、写入和执行的权限 212
例12.13:设置文件a,使其具有SUID权限 212
例12.14:设置文件a,使其具有SGID权限 212
例12.15:设置文件a,使其具有Sticky权限 212
例12.16:设置文件a,使其具有SUID、SGID和Sticky权限 212
例12.17:设置/home/user目录及其子文件夹的权限为777 212
例12.18:将文件a的所有者改为it 213
例12.19:将文件a的用户组改为it 213
例12.20:将文件a的所有者和用户组一起改为root 213
例12.21:将文件a的用户组改为it 213
例12.22:将目录b连同它的下级子目录和文件的所有者和用户组一起改变 213
例12.23:更改文件a的用户组为it 214
例12.24:设置权限掩码为444 214
例12.25:设置权限掩码为222 214
例12.26:用umask设置权限为:所有者读取、用户组写入、其他用户读取 215
例12.27:查看系统当前的umask设置 215
例14.1:强制杀死进程号是726的进程 230
例14.2:分屏显示系统进程 232
例14.3:查看less进程是否在运行 232
例14.4:显示系统进程 232
例14.5:显示所有不带控制台终端的进程,并显示用户名和进程的起始时间 232
例14.6:显示用户名和进程的起始时间 233
例14.7:显示用户root的进程 233
例14.8:使用top命令动态显示进程信息 235
例14.9:查看各种不同的运行等级中各项服务的状况 239
例14.10:列出named服务在各个运行级别上的运行状态 239
例14.11:在运行级别3、4、5上启动named服务 239
例14.12:在运行级别3、4上停止named服务 240
例14.13:对httpd服务设置没有选择运行级别的启动 240
例14.14:启动Telnet服务并查看该服务的状态 240
例14.15:停止Telnet服务并查看该服务的状态 240
例14.16:添加一个由chkconfig管理的httpd服务 240
例14.17:停止named服务 240
例14.18:启动named服务 240
例14.19:查看named服务运行状态 240
例14.20:重新启动named服务 241
例15.1:查看前台启动进程 243
例15.2:挂起cat>/root/a作业后将作业放到前台执行 244
例15.3:用户正在使用vi编辑文件,挂起后将作业放到前台执行 244
例15.4:挂起作业后放到后台执行 245
例15.5:挂起作业后指定作业号,恢复作业 245
例15.6:以普通账号it登录系统,创建crontab文件 248
例15.7:以用户it登录恢复丢失的crontab文件 249
例15.8:在5天之后的此时此刻将/root/a文件复制到/home目录下 251
例15.9:使用echo命令向at命令提交作业 251
例15.10:使用“at-l”列出所有作业 251
例15.11:使用atq列出所有作业 252
例15.12:使用“at-l”删除作业 252
例15.13:使用atrm删除作业 252
例16.1:查看free命令帮助信息 261
例16.2:查看系统的物理内存和交换分区的总量 261
例16.3:以MB为单位查看系统的物理内存和交换分区的总量 261
例16.4:显示内存总容量 261
例16.5:显示系统的磁盘空间用量 262
例16.6:以MB和GB为单位显示系统的磁盘空间用量 262
例16.7:显示ext3文件系统类型的磁盘空间用量 262
例16.8:在显示磁盘空间用量时也显示文件系统类型 262
例16.9:以MB和GB为单位显示磁盘空间用量时也显示文件系统类型 263
例16.10:显示磁盘空间i节点使用情况 263
例16.11:分屏显示目录或文件的大小 263
例16.12:显示文件/root/abc的大小 264
例16.13:显示每个文件或目录所占用的数据块总数 264
例16.14:以MB为单位显示每个文件或目录所占用的数据块总数 264
例16.15:以字节为单位显示目录或文件的大小 264
例17.1:追踪从本地计算机网站的路径 283
例17.2:配置eth0的IP地址,同时激活该设备 284
例17.3:配置eth0别名设备eth0:1的IP地址 284
例17.4:激活eth0:1设备 284
例1 7.5:禁用eth0:1设备 284
例17.6:查看eth0网络接口的配置 284
例17.7:查看所有的网络接口配置 284
例17.8:测试与ittongluren.blog.com.cn站点的连通性 285
例17.9:设置ping计算机时每次发送的ICMP数据包大小为128字节 285
例17.10:测试与192.168.0.88计算机的连通性,要求返回4个ICMP数据包 286
例17.11:显示网络接口状态信息 287
例17.12:显示内核路由表信息 287
例17.13:显示TCP/UDP传输协议的连接状态 287
例17.14:显示所有监控的服务器的Socket和正在使用Socket的程序信息 287
例17.15:查看系统ARP缓存 287
例17.16:添加IP地址和MAC地址的对应记录 288
例17.17:删除IP地址和MAC地址的对应缓存记录 288
例17.18:使用指定的网络接口eth0读取数据链路层的数据包头 289
例17.19:对名为it的主机的通信数据包进行监视 289
例17.20:读取主机it发送的所有数据 289
例17.21:监视所有送到主机it的数据包 289
例17.22:监视通过指定网关的数据包 289
例17.23:监视地址到指定端口的TCP或UDP数据包 289
例17.24:ftp命令的使用 291
例17.25:下载ittongluren.blog.163.com的首页 295
例17.26:添加主机路由 297
例17.27:添加网络路由 297
例17.28:添加默认路由 297
例17.29:删除默认路由 297
例17.30:删除指定网络路由 297
例17.31:删除主机路由 297
例17.32:查看Linux系统路由表 297
例18.1:以用户账号it登录IP地址为192.168.1.229的远程ssh计算机 309
例18.2:以root账号连接远程主机192.168.1.229,并执行命令“ls/root” 310
例18.3:用root账号把本地文件root/a传送到192.168.1.229远程主机的/root目录下,并改名为b 310
例18.4:用root账号把本地/home目录下所有文件传送到192.168.1.229远程主机的/root目录 310
例18.5:用root账号把远程主机192.168.1.229上的文件/root/b传送到本地主机/root目录下,并改名为a 310
例18.6:使用sftp打开远程主机192.168.1.229的FTP会话 311
例18.7:查看VNC软件包是否安装 315
例18.8:安装VNC相关软件包 315
例18.9:启动VNC服务器 315
例18.10:设置VNC登录密码 315
例19.1:允许用户tfox和carole从Samba客户端中读写Samba服务器上的目录/home/share 325
例19.2:允许匿名用户从Samba客户端中读写Samba服务器上的目录/home/read 325
例19.3:允许匿名用户从Samba客户端中读取Samba服务器上的目录/home/tong 325
例20.1:挂载远程主机192.168.0.225的NFS目录/it到本地主机/mnt/it 342
例20.2:卸载上例中挂载的远程主机的NFS共享目录 342
例22.1:扫描网站www.163.com的所有TCP端口 370
例22.2:发起对内部计算机192.168.23.1的秘密SYN的扫描,同时还探测操作系统的指纹特征 371
例22.3:发起对tong.com所在网络上的所有255个IP地址的秘密SYN扫描,同时还探测每台主机操作系统的指纹特征 372
例22.4:对192.168.23.1发起圣诞树扫描,确定这些系统是否打开了22.53.110.143和4564端口 372
例22.5:对B类IP地址128.210.*.*中255个可能的8位子网的前半部分发起圣诞树扫描,确定这些系统是否打开了21、80和1433端口 372
例22.6:只扫描指定的IP范围,有时用于对这个Internet进行取样分析nmap将寻找Internet上所有后两个字节是“.2.3”、“.2.4”和“.2.5”的IP地址上的Wep服务器 372
例23.1:查看当前用户shell定义的环境变量的值 377
例23.2:用户定义变量的使用 377
例23.3:字符串比较的使用 379
例23.4:含有空格的变量字符串的比较 380
例23.5:数字相等比较 380
例23.6:数字大于比较 380
例23.7:逻辑测试 380
例23.8:文件操作测试 381
例23.9:简单的if程序 385
例23.10:根据输入的分数,判断分数是否及格 385
例23.11:创建Linux用户的脚本 386
例23.12:使用case语句建立一个菜单选择的shell脚本 387
例23.13:简单的for语句 388
例23.14:使用参数的for语句 388
例23.15:求命令行上所有整数之和 388
例23.16:计算1至5的平方 388
例23.17:根据输入的数值,求累加和(1+2+3+4+…+n) 389
例23.18:使用until结构计算1至5的平方 390
例23.19:输入exit退出的脚本 390
例24.1:简单的for循环语句 401
例24.2:简单的while循环语句 402
例24.3:复杂的while循环语句 402
例24.4:变量是整数型的swith开关语句 403
例24.5:变量是字符型的swith开关语句 404
例24.6:含有break的语句 404
例24.7:含有continue的语句 405
例24.8:goto语句的使用 405
例24.9:文件打开、关闭函数的使用 407
例24.10:文件顺序写函数的使用 408
例24.11:文件顺序读操作函数的使用 409
例24.12:文件随机读写函数的使用 409
例24.13:把一个浮点数组以二进制方式写入文件test_b.dat中 410
例24.14:从test b.dat文件中读100个整型数,并把它们放到dat数组中 410
例24.15:形式参数的定义 413
例24.16:全局变量的定义 413
例24.17:extern变量的使用 414
例24.18:一维数组的定义 415
例24.19:单个变量的初始化 416
例24.20:数组变量的初始化 416
例24.21:指针型变量的初始化 417
例24.22:整型变量和浮点变量的定义 417
例24.23:给多个变量赋同一值 417
例24.24:字符型变量的定义 417
例24.25:指针型变量的定义 417
例24.26:复杂的指针型变量的定义 418
例24.27:3个整型数指针型变量的定义 418
例24.28:整型数组和浮点数组的赋值 418
例24.29:字符串数组的赋值 419
例24.30:长字符串数组的赋值 419
例24.31:指针数组的赋值 419
例24.32:数组的基本使用 420
例24.33:定义结构变量 420
例24.34:结构变量的使用 421