本书由浅入深、全面、系统地介绍了Linux系统的基础命令和Shell脚本的开发。作为一本面向Linux入门用户的书籍,本书力求语言通俗易懂,用例简单明了,便于读者阅读领会。同时,全书穿插了不少要求读者动手实践的内容,不但可加深读者对内容的理解和消化,同时也可通过动手实践激发读者对Linux系统和Shell编程的兴趣,从而更好地驱动读者学习。 全书共计18章,从知识结构上分为三部分。第一部分为前8章,全面介绍了Linux的基础知识和常用命令;第二部分为第9章和第10章,主要是Linux下交互和非交互编辑器的使用;第三部分为第11~18章,主要是Shell脚本开发。这三部分内容各有偏重,读者可以根据实际需要选择阅读。 本书根据作者多年来Linux环境运维管理工作的经验编著而成,内容丰富,且注重实践讲解,非常适合Linux初学者和基于Linux平台的软件开发者学习或查阅。从内容结构上来看,本书摒弃了各章独立的写作风格,而是采取了各章有机结合的方式,自上而下自成一体,既加深了读者对单个知识点的理解,也有利于从全局把控Linux系统和Shell编程的精髓。
目录
- 第1章 Linux简介
- 1.1 Linux的发展历史
- 1.2 Linux的特点
- 1.3 系统安装
- 1.3.1 安装前的规划
- 1.3.2 安装RedHat
- 1.3.3 安装CentOS
- 1.4 系统登录
- 1.4.1 第一次登录系统的设置
- 1.4.2 使用图形模式登录
- 1.4.3 使用终端模式登录
- 1.4.4 开始学习使用Linux的命令
- 1.5 系统启动流程
- 1.5.1 系统引导概述
- 1.5.2 系统运行级别
- 1.5.3 服务启动脚本
- 1.5.4 Grub介绍
- 1.6 获得帮助
- 1.6.1 使用man page
- 1.6.2 使用info page
- 1.6.3 其他获得帮助的方式
- 第2章 Linux用户管理
- 2.1 Linux用户和用户组
- 2.1.1 UID和GID
- 2.1.2 /etc/passwd和/etc/shadow
- 2.2 Linux账号管理
- 2.2.1 新增和删除用户
- 2.2.2 新增和删除用户组
- 2.2.3 检查用户信息
- 2.3 切换用户
- 2.3.1 切换成其他用户
- 2.3.2 用其他用户的身份执行命令:sudo
- 2.4 例行任务管理
- 2.4.1 单一时刻执行一次任务:at
- 2.4.2 周期性执行任务:cron
- 2.4.3 /etc/crontab的管理
- 第3章 Linux文件管理
- 3.1 文件和目录管理
- 3.1.1 绝对路径和相对路径
- 3.1.2 文件的相关操作
- 3.1.3 目录的相关操作
- 3.1.4 文件时间戳
- 3.2 文件和目录的权限
- 3.2.1 查看文件或目录的权限:ls -al
- 3.2.2 文件隐藏属性
- 3.2.3 改变文件权限:chmod
- 3.2.4 改变文件的拥有者:chown
- 3.2.5 改变文件的拥有组:chgrp
- 3.2.6 文件特殊属性:SUID/SGID/Sticky
- 3.2.7 默认权限和umask
- 3.2.8 查看文件类型:file
- 3.3 查找文件
- 3.3.1 一般查找:find
- 3.3.2 数据库查找:locate
- 3.3.3 查找执行文件:which/whereis
- 3.4 文件压缩和打包
- 3.4.1 gzip/gunzip
- 3.4.2 tar
- 3.4.3 bzip2
- 3.4.4 cpio
- 第4章 Linux文件系统
- 4.1 文件系统
- 4.1.1 什么是文件系统
- 4.1.2 ext2文件系统简介
- 4.1.3 ext3文件系统简介
- 4.2 磁盘分区、创建文件系统、挂载
- 4.2.1 创建文件系统:fdisk
- 4.2.2 磁盘挂载:mount
- 4.2.3 设置启动自动挂载:/etc/fstab
- 4.2.4 磁盘检验:fsck、badblocks
- 4.3 Linux逻辑卷
- 4.3.1 什么是逻辑卷
- 4.3.2 如何制作逻辑卷
- 4.4 硬链接和软链接
- 4.4.1 什么是硬链接
- 4.4.2 什么是软链接
- 第5章 字符处理
- 5.1 管道
- 5.2 使用grep搜索文本
- 5.3 使用sort排序
- 5.4 使用uniq删除重复内容
- 5.5 使用cut截取文本
- 5.6 使用tr做文本转换
- 5.7 使用paste做文本合并
- 5.8 使用split分割大文件
- 第6章 网络管理
- 6.1 网络接口配置
- 6.1.1 使用ifconfig检查和配置网卡
- 6.1.2 将IP配置信息写入配置文件
- 6.2 路由和网关设置
- 6.3 DNS客户端配置
- 6.3.1 /etc/hosts
- 6.3.2 /etc/resolv.conf
- 6.4 网络测试工具
- 6.4.1 ping
- 6.4.2 host
- 6.4.3 traceroute
- 6.4.4 常见网络故障排查
- 第7章 进程管理
- 7.1 什么是进程
- 7.2 进程和程序的区别
- 7.3 进程的观察:ps、top
- 7.4 进程的终止:kill、killall
- 7.5 查询进程打开的文件:lsof
- 7.6 进程优先级调整:nice、renice
- 第8章 Linux下的软件安装
- 8.1 源码包编译安装
- 8.1.1 编译、安装、打印HelloWorld程序
- 8.1.2 使用源码包编译安装Apache
- 8.2 RPM安装软件
- 8.2.1 什么是RPM
- 8.2.2 RPM包管理命令:rpm
- 8.2.3 包依赖关系
- 8.2.4 使用RPM包安装gcc
- 8.2.5 使用RPM包安装Apache
- 8.3 yum安装软件
- 8.3.1 yum命令的基本用法
- 8.3.2 使用yum安装Apache
- 8.3.3 RedHat使用yum的问题
- 8.3.4 自建本地yum源
- 8.3.5 自建网络yum源
- 8.4 三种安装方法的比较
- 8.5 重建RPM包
- 8.5.1 创建重建环境
- 8.5.2 快速重建RPM包
- 8.5.3 以spec文件重建RPM包
- 8.5.4 spec文件简介
- 第9章 vi和vim编辑器
- 9.1 vi和vim编辑器简介
- 9.2 vi编辑器
- 9.2.1 模式介绍
- 9.2.2 案例练习
- 9.3 vim编辑器
- 9.3.1 多行编辑
- 9.3.2 多文件编辑
- 9.3.3 使用vimtutor深入学习vim
- 9.4 gedit编辑器
- 9.4.1 gedit编辑器简介
- 9.4.2 启动gedit编辑器
- 第10章 正则表达式
- 10.1 正则表达式基础
- 10.1.1 什么是正则表达式
- 10.1.2 基础的正则表达式
- 10.1.3 扩展的正则表达式
- 10.1.4 通配符
- 10.2 正则表达式示例
- 10.3 文本处理工具sed
- 10.3.1 sed介绍
- 10.3.2 删除
- 10.3.3 查找替换
- 10.3.4 字符转换
- 10.3.5 插入文本
- 10.3.6 读入文本
- 10.3.7 打印
- 10.3.8 写文件
- 10.3.9 sed脚本
- 10.3.10 高级替换
- 10.3.11 sed总结
- 10.4 文本处理工具awk
- 10.4.1 打印指定域
- 10.4.2 指定打印分隔符
- 10.4.3 内部变量NF
- 10.4.4 打印固定域
- 10.4.5 截取字符串
- 10.4.6 确定字符串的长度
- 10.4.7 使用awk求列和
- 第11章 Shell编程概述
- 11.1 Shell简介
- 11.1.1 Shell是什么
- 11.1.2 Shell的历史
- 11.1.3 Shell的功能
- 11.1.4 Shell编程的优势
- 11.2 第一个Shell脚本
- 11.2.1 编辑第一个Shell脚本
- 11.2.2 运行脚本
- 11.2.3 Shell脚本的排错
- 11.3 Shell的内建命令
- 第12章 Bash Shell的安装
- 12.1 确定你的Shell版本
- 12.2 安装bash
- 12.3 使用新版本的Bash Shell
- 12.4 在Windows中安装bash
- 第13章 Shell编程基础
- 13.1 变量
- 13.1.1 局部变量
- 13.1.2 环境变量
- 13.1.3 变量命名
- 13.1.4 变量赋值和取值
- 13.1.5 取消变量
- 13.1.6 特殊变量
- 13.1.7 数组
- 13.1.8 只读变量
- 13.1.9 变量的作用域
- 13.2 转义和引用
- 13.2.1 转义
- 13.2.2 引用
- 13.2.3 命令替换
- 13.3 运算符
- 13.3.1 算术运算符
- 13.3.2 位运算符
- 13.3.3 自增自减
- 13.4 其他算术运算
- 13.4.1 使用$[]做运算
- 13.4.2 使用expr做运算
- 13.4.3 内建运算命令declare
- 13.4.4 算术扩展
- 13.4.5 使用bc做运算
- 13.5 特殊字符
- 13.5.1 通配符
- 13.5.2 引号
- 13.5.3 注释符
- 13.5.4 大括号
- 13.5.5 控制字符
- 13.5.6 杂项
- 第14章 测试和判断
- 14.1 测试
- 14.1.1 测试结构
- 14.1.2 文件测试
- 14.1.3 字符串测试
- 14.1.4 整数比较
- 14.1.5 逻辑测试符和逻辑运算符
- 14.2 判断
- 14.2.1 if判断结构
- 14.2.2 if/else判断结构
- 14.2.3 if/elif/else判断结构
- 14.2.4 case判断结构
- 第15章 循环
- 15.1 for循环
- 15.1.1 带列表的for循环
- 15.1.2 不带列表的for循环
- 15.1.3 类C的for循环
- 15.1.4 for的无限循环
- 15.2 while循环
- 15.2.1 while循环的语法
- 15.2.2 使用while按行读取
- 文件
- 15.2.3 while的无限循环
- 15.3 until循环
- 15.3.1 until循环的语法
- 15.3.2 until的无限循环
- 15.4 select循环
- 15.5 嵌套循环
- 15.6 循环控制
- 15.6.1 break语句
- 15.6.2 continue语句
- 第16章 函数
- 16.1 函数的基本知识
- 16.1.1 函数的定义和调用
- 16.1.2 函数的返回值
- 16.2 带参数的函数
- 16.2.1 位置参数
- 16.2.2 指定位置参数值
- 16.2.3 移动位置参数
- 16.3 函数库
- 16.3.1 自定义函数库
- 16.3.2 函数库/etc/init.d/functions简介
- 16.4 递归函数
- 第17章 重定向
- 17.1 重定向简介
- 17.1.1 重定向的基本概念
- 17.1.2 文件标识符和标准输入输出
- 17.2 I/O重定向
- 17.2.1 I/O重定向符号和用法
- 17.2.2 使用exec
- 17.2.3 Here Document
- 第18章 脚本范例
- 18.1 批量添加用户脚本
- 18.2 检测服务器存活
- 18.3 使用expect实现自动化输入
- 18.4 自动登录ftp备份
- 18.5 文件安全检测脚本
- 18.6 ssh自动登录备份
- 18.7 使用rsync备份
- 18.8 使用netcat备份
- 18.9 使用iptables建立防火墙
- 18.10 自定义开机启动项的init脚本
- 18.11 使用脚本操作MySQL数据库
- 18.12 基于LVM快照的MySQL数据库备份
- 18.13 页面自动化安装LAMP环境