致谢
导语
第一部分:Linux命令行
第一节:从Linux Shell开始
1 Linux是什么?
1.1 管窥Linux内核(Kernel)
1.2 GNU应用程序
1.3 Linux桌面环境
2 Linux发行版
2.1 主要的Linux发行版
2.2 专用的Linux发行版
2.3 Linux LiveCD
3 摘要
第二节:走进Shell
1 终端仿真(Terminal Emulation)
1.1 图形能力(Graphic capabilities)
1.2 键盘
2 Terminfo数据库
3 Linux控制台
4 xterm终端
4.1 命令行参数
4.2 xterm主菜单
4.3 VT选项菜单
4.4 VT字体菜单
5 Konsole终端
5.1 命令行参数
5.2 会话
5.3 菜单栏
6 GNOME终端
6.1 命令行参数
6.2 标签(Tabs)
6.3 菜单栏
7 摘要
第三节:基本的bash Shell命令
开始Shell之旅(Starting the Shell)
Shell提示符(Shell Prompt)
Bash手册
文件系统导航(Filesystem Navigation)
Linux文件系统
遍历目录
文件和目录列表(File and Directory Listing)
基本列表
更改显示的信息
完整的参数列表
过滤列表输出
文件处理(File Handling)
创建文件
拷贝文件
链接文件
重命名文件
删除文件
目录处理(Directory Handling)
创建目录
删除目录
查看文件内容(Viewing File Contents)
查看文件信息(File Statistics)
查看文件类型
查看整个文件
查看文件的一部分
摘要
第四节:更多bash Shell命令
监控程序(Monitoring Programs)
偷窥进程(Peeking at the progresses)
实时进程监控
终止进程
监控磁盘空间
安装介质(Mounting media)
使用df命令
使用du命令
操作数据文件
数据排序(Sorting data)
数据搜索(Search for data)
数据压缩(Compressing data)
数据归档(Archiving data)
摘要
第五节:使用Linux环境变量(Using Linux Environment Variables)
什么是环境变量?
全局环境变量(Global environment variables)
本地环境变量(Local environment variables)
设置环境变量
设置本地环境变量
设置全局环境变量
移除环境变量
默认Shell环境变量
设置PATH环境变量
定位(locate)系统环境变量
登录shell(Login shell)
交互shell(Interactive shell)
非交互shell(Non-interactive shell)
变量数组
使用简化命令(command aliases)
摘要
第六节:了解Linux文件权限(Linux File Permissions)
Linux安全
/etc/passwd文件
/etc/shadow文件
添加新用户
删除用户
修改用户
使用Linux用户组(Group)
/etc/group文件
创建新用户组
修改用户组
解码文件权限(Decoding file permissions)
使用文件权限符号
默认文件权限
更改安全设置
更改权限
更改所有权(Owership)
共享文件
摘要
第七节:使用编辑器
vim编辑器
vim基础知识
编辑数据
拷贝和粘贴
搜索和替换
emacs编辑器
在控制台使用emacs
在X Windows中使用emacs
KDE系列编辑器
KWrite编辑器
Kate编辑器
GNOME编辑器
启动gedit
gedit基本功能
设置偏好(preference)
摘要
第二部分:Shell脚本编程基础
第八节:基本的脚本编译(Scripting Building)
使用多条命令
创建脚本文件
显示消息
使用变量
环境变量
用户变量
backtick
重定向(Redirecting)输入和输出
输出重定向
输入重定向
管道(Pipes)
数学计算(Performing Math)
expr命令
使用括弧(bracket)
浮点计算(A floating-point solution)
退出脚本
检查退出状态
exit命令
摘要
第九节:使用结构化命令(Using Structured Commands)
使用if-then声明
if-then-else声明
if嵌套(Nesting ifs)
test命令
数字比较(Numeric comparisons)
字符串比较(String comparisons)
文件比较(File comparisons)
符合条件测试(compound Condition Testing)
if-then高级功能
使用双圆括号(Using double parentheses)
使用双方括号(Using double brackets)
case命令
摘要
第十节:更多结构化指令
for命令
读取列表中的值(Reading values in a list)
读取列表中复杂的值(Reading complex values in a variable)
从变量中读取一个列表(Reading a list from a varible)
从命令中读取值(Reading values from a command)
更改字段分隔符(field separator)
使用通配符(wildcards)读取目录
C语言样式的for命令(The C-style for Command)
C语言中的for命令
使用多个变量
while命令
基本的while格式
使用多个测试命令
until命令
嵌套循环(Nesting loops)
循环处理文件数据(Looping on File Data)
控制循环
break命令
continue命令
处理一个循环的输出
摘要
第十一节:处理用户输入
命令行参数
读取参数
读取程序名
测试参数
特殊参数变量
统计参数(counting parameters)
获取所有数据(Grabbing all the data)
使用shift命令(Being shifty)
使用选项(Working With Options)
找到你的选项
使用getopt命令
更高级的getopts命令
使选项标准化(Standardizing Options)
获得用户输入
第十二节:呈现数据(Presenting Data)
了解输入和输出
标准文件描述符(Standard file descriptors)
重定向错误
在脚本中重定向输出
临时性重定向(Temporary redirections)
永久性重定向(Permanent redirections)
在脚本中重定向输入
创建你自己的重定向
创建输出文件描述符
重定向文件描述符
创建输入文件描述符
创建一个读/写(Read/Write)文件描述符
关闭文件描述符
枚举打开的文件描述符
抑制脚本输出
使用临时文件
创建本地临时文件
在/tmp中创建临时文件
创建临时目录
记录消息(Logging Messages)
摘要
第十三节:脚本控制(Script Control)
信号处理(Handling Signals)
Linux信号知识温习(Linux Signals revisited)
生成信号(Generating Signals)
捕获信号(Trapping Signals)
捕获一个脚本退出
移除一个捕获(Removing a trap)
以后台模式运行脚本(Running Scripts in Background Mode)
后台运行
运行多个后台作业(Job)
退出终端
无控制台情况下运行脚本(Running Scripts without a Console)
作业控制(Job Control)
查看作业(Viewing Jobs)
重启已停止的作业
Being Nice
nice命令
renice命令
定时运行(Running like Clockwork)
使用at命令安排作业
使用batch命令
为常规脚本制定计划
开机启动(Start At The Beginning)
引导时(boot)启动你的脚本
使用一个新的shell启动
摘要
第三部分:高级Shell脚本编程(Advanced Shell Scripting)
第十四节:创建函数(Function)
基本的脚本函数
创建函数
使用函数
返回值
默认退出状态
使用返回命令
使用函数输出
在函数中使用变量
向函数传递参数
在函数中处理变量
数组变量和函数
向函数传递数组
从函数返回数组
函数递归(Function Recursion)
创建库(Library)
在命令行中使用函数
在.bashrc文件中定义文件
摘要
第十五节:为脚本添加颜色(Adding Color to Scripts)
创建文本菜单(Text Menus)
创建菜单布局(Menu Layout)
创建菜单函数(Menu Funcition)
加入菜单逻辑(Menu Logic)
整合上述模块(Put it all together)
使用select命令
添加颜色
ANSI转义码(escape codes)
显示ANSI转义码
在脚本中使用颜色
制作窗口(Doing Windows)
对话框包(dialog package)
对话框选项
在脚本中使用dialog命令
获取图形化界面(Getting Graphic)
KDE环境
GNOME环境
摘要
第十六节:介绍sed和gawk
文本处理(Text Manipaluation)
sed编辑器
gawk程序
sed编辑器基础
更多替换选项
使用地址
删除行
插入和添加文本
更改行(数据)(changing lines)
transform命令
打印命令温习(Printing revisited)
使用sed处理文件
摘要
第十七节:正则表达式(Regular Expressions)
什么是正则表达式?
定义
正则表达式类型
定义BRE模式匹配
纯文本
特殊字符
锚字符(Anchor Characters)
“.”字符
字符集(character class)
否定字符集(Negating character class)
使用范围(range)
特殊字符集
星号“*”
扩展的正则表达式
问号“?”
加号“+”
使用括号
管状符号“|”
表达式分组(Grouping expressions)
正则表达式实战(Regular Expressions in Actions)
统计目录文件
验证电话号码
解析电子邮件地址
摘要
第十八节:sed进阶
多行命令
next命令
多行删除命令
多行打印命令
保留空间(Hold Space)
否定一条命令(Negating a command)
变更命令脚本流(flow)
分支
测试
模式替换
“&”符号(anmpersand)
单个字符替换
在脚本中使用sed
使用wrapper
重定向sed输出
使用sed实用工具(Utilities)
行间距加倍(Double spacing lines)
使可能存在空行的文件行间距加倍(Double spacing files that have blanks)
为文件添加行编号
打印末尾行
删除行
删除HTML标签
摘要
第十九节:gawk进阶
使用变量
内建变量
用户自定义变量
使用数组
定义数组变量
遍历数组变量
删除数组变量
使用模式
正则表达式
匹配操作符(Matching Operator)
数学表达式(Mathematical Expressions)
结构化命令
if声明
while声明
do-while声明
for声明
格式化打印输出
内建函数
数学函数
字符串函数
时间函数
用户自定义函数
定义一个函数
使用你自己的函数
创建一个函数库
摘要
第四部分:可供选择的Linux Shell(Alternative Linux Shells)
第二十节:ash Shell
什么是ash Shell?
原始ash Shell
原始ash命令行参数
原始ash内建命令
ash Shell文件
dash Shell
dash命令行参数
dash环境变量
dash内建命令
在dash中编写脚本
创建ash和dash脚本
例外的东西
摘要
第二十一节:tcsh Shell
什么是tcsh Shell?
tcsh Shell组件
tcsh Shell命令行参数
tcsh文件
tcsh登陆(login)文件
Shell启动文件
退出(logout)文件
tcsh环境变量
Shell变量
环境变量
在tcsh中设置变量
使用set命令
使用setenv命令
tcsh内建命令
在tcsh中编写脚本
使用变量
数组变量
处理数学运算符
结构化命令
if声明
foreach声明
while声明
switch命令
摘要
第二十二节:Korn Shell
Korn Shell的历史
ksh93 Shell部分
命令行参数
默认文件
环境变量
内建命令
在ksh93 Shell中编写脚本
数学运算
结构化命令
命令重定向
discipline函数
摘要
第二十三节:zsh Shell
zsh Shell的历史
zsh Shell部分
Shell选项
zsh Shell文件
环境变量
内建命令
使用zsh编写脚本
数学运算
结构化命令
函数
摘要
第五部分:高级主题
第二十四节:使用数据库
MySQL数据库
安装MySQL
完成MySQL配置
MySQL客户端界面
创建MySQL数据库对象
PostgreSQL数据库
安装PostgreSQL
PostgreSQL命令界面
创建PostgreSQL数据库对象
使用数据表(Tables)
创建一个数据表
插入和删除数据
查询数据
在你的脚本中使用数据库
连接数据库
向服务器发送命令
格式化数据
摘要
第二十五节:使用网络
Lynx程序
安装Lynx
Lynx命令行
Lynx配置文件
Lynx环境变量
从Lynx捕捉数据
cURL程序
安装cURL
cURL命令行
使用curl网上冲浪
通过zsh联网
TCP模块
客户端/服务器(C/S)机制
使用zsh进行C/S编程
摘要
第二十六节:使用电子邮件
Linux电子邮件基础
Linux中的电子邮件
邮件传输代理(Mail Transfer Agent)
邮件投递代理(Mail Delivery Agent)
邮件用户代理(Mail User Agent)
安装自己的服务器
sendmail
Postfix
使用Mailx发送消息
Mutt程序
安装Mutt
Mutt命令行
使用Mutt
摘要
第二十七节:管理员所使用的Shell脚本
监测系统数据
监测磁盘空余空间
捕获磁盘空间使用情况(Catching Disk Hogs)
观查CPU和内存使用情况
执行备份
存档数据文件
在外部(off-site)存储数据备份
摘要
附录A:bash命令快速一览
内建命令
bash命令
环境变量
附录B:sed和gawk快速一览
sed编辑器
启动sed编辑器
sed命令
gawk程序
gawk命令格式
使用gawk
gawk变量
gawk程序特性
附录C:各种Shell的比较
变量
环境变量
用户自定义变量
数据变量
结构化命令
if-then、while和until声明
for声明
数学运算
索引