本书面向UNIX的普通用户,介绍UNIX操作系统提供的用户接口。书中讲述了UNIX中的基本概念和原理,在此基础上讲述UNIX的主要命令和函数调用。书中重点突出,理论学习和实际操作相结合,强调在理解基本原理的基础上理解和掌握UNIX提供给操作员的命令和提供给程序员的函数调用,为深入研究UNIX系统打下基础。主要内容包括UNIX的命令,shell编程语言,进程控制和进程间通信,以及网络socket编程。本书适合高等院校本科生和研究生以及工程技术人员学习UNIX使用,读者不需要事先具备UNIX的操作经验,但需要有C语言的基本知识。
第1章UNIX简介
1.1UNIX的发展过程和标准化
1.1.1UNIX的发展过程
1.1.2什么是UNIX
1.1.3UNIX的标准化
1.2系统的登录与退出
1.2.1UNIX的主机和终端
1.2.2登录
1.2.3退出
1.2.4关机
1.3使用系统命令
1.3.1man:查阅联机手册
1.3.2获取系统情况
1.3.3passwd:更换用户口令
1.3.4与其他用户通信
1.3.5与其他主机通信
1.3.6几个实用工具
第2章基本UNIX实用程序
2.1more,less,pg:逐屏显示文件内容
2.2cat:列出文本文件内容
2.3od:列出文件每个字节的内容
2.4head与tail:打印文件头或尾
2,5WC:字计数
2.6son:对文件内容排序
2.7tee:三通
2.8正则表达式的概念
2.9grep,egrep与fgrep:在文件中查找字符串
2.10awk:文本处理语言
2.11sed:流编辑
2.12tr:翻译字符
2.13cmp和diff:比较两个文件
第3章全屏幕编辑程序Vi
3.1vi的启动方法
3.2Vi的选项
3.3vi的工作方式
3.4vi的编辑命令
3.4.1正文插入命令
3.4.2光标移动命令
3.4.3设置书签
3.4.4删除
3.4.5字符替换
3.4.6取消和重复
3.4.7文件命令
3.4.8段落的删除、复制和移动
3.4.9剪贴板
3.4.10其他命令
3.4.11模式查找
3.4.12模式替换
3.4.13编辑命令小结
第4章UNIX的文件和目录
4.1文件和目录的层次结构
4.2文件和目录的命名
4.3shell的文件名通配符
4.3.1规则
4.3.2与DOS文件名通配符的区别
4.3.3文件名通配符的处理过程
4.3.4验证文件名匹配的结果
4.4文件管理
4.4.11s:文件名列表
4.4.2cp:复制文件
4.4.3mv:移动文件
4.4.4rm:删除文件
4.4.5find:查找文件
4.5目录管理
4.5.1路径名
4.5.2pwd:打印当前工作目录
4.5.3cd:改变当前工作目录
4.5.4mkdir:创建目录
4.5.5rmdir:删除目录
4.5.6cp:复制目录
4.6文件的归档与压缩处理
4.6.1tar:文件归档
4.6.2compress:文件压缩
4.6.3应用
4.7文件系统的存储结构
4.7.1基本文件系统与子文件系统
4.7.2文件系统的结构
4.7.3目录结构
4.7.4命令df与du
4.8硬连接与符号连接
4.8.1硬连接
4.8.2符号连接
4.8.3硬连接与符号连接的比较和应用
4.9系统调用
4.10文件和目录的访问
4.10.1文件存取
4.10.2目录访问
4.10.3获取文件系统的信息
4.11获取文件的状态信息
4.12设备文件
4.13文件和目录的权限
4.13.1权限控制的方法
4.13.2查看文件和目录的权限
4.13.3chmod:修改权限
4.13.4mask:改变文件创建状态掩码
4.13.5SUID权限和SGID权限
第5章C-sheH的交互功能
5.1UNIX的shell
5.2csh启动与终止
5.3使用csh的历史机制
5.3.1历史表大小
5.3.2查看历史表
5.3.3引用历史机制
5.4别名
5.4.1在别名表中增加一个别名
5.4.2查看别名表
5.4.3给别名传递参数
5.4.4取消别名
5.5csh提示符
5.6csh的管道和重定向
5.6.1标准输入.标准输出.标准错误输出
5.6.2标准输出和标准错误输出重定向
5.6.3管道
第6章B-shell及编程
6.1启动B-shell
6.1.1启动一个交互式B-shell
6.1.2#!/bin/sh:脚本文件的执行
6.2重定向与管道
6.2.1输入重定向
6.2.2输出重定向
6.2.3管道
6.3变量
6.3.1变量赋值和引用
6.3.2read:读用户的输入
6.3.3环境变量和局部变量
6.3.4内置变量
6.3.5shell的标准变量
6.4替换
6.4.1文件名生成
6.4.2变量替换
6.4.3命令替换
6.5元字符
6.5.1空格、制表符和转义符
6.5.2回车和分号
6.5.3文件名通配符
6.5.4美元符和反撇号
6.5.5重定向和管道
6.5.6启动程序后台执行
6.5.7括号
6.5.8转义符
6.5.9双引号和单引号
6.5.10转义符与引号及反撇号
6.6条件判断
6.6.1条件
6.6.2最简单的条件判断
6.6.3命令true与命令false
6.6.4命令test与命令
6.6.5{}与()
6.6.6条件结构if
6.6.7case结构
6.7循环结构
6.7.1while结构
6.7.2expr:计算表达式的值
6.7.3for结构
6.7.4break与COndnUe
6.8函数
6.9shell开关和位置变量
6.9.1set:设置B-shell内部开关
6.9.2set:设置shell位置变量
6.9.3shin:位置变量的移位
第7章进程控制与进程间通信
7.1进程控制
7.1.1进程的基本概念
7.1.2fork:创建新进程
7.1.3exec:重新初始化进程
7.1.4wait:等待子进程运行结束
7.1.5xsh0.c:最简单的shell
7.1.6vfork和_exit
7.1.7system:在程序中运行一个命令
7;1.8ps:列出进程的状态
7.2信号
7.2.1信号的产生及信号类型
7.2.2kill:发送信号
7.2.3信号的捕捉与处理
7.2.4longjmp:全局跳转
7.2.5信号对进程执行的影响
7.2.6sleep.pause与alarm
7.2.7trap命令:shell对信号的处理
7.3进程与文件描述符
7.3.1内核中的文件打开结构
7.3.2文件描述符的继承和复制
7.3.3管道操作
7.4消息队列
7.4.1有关的系统调用
7.4.2程序举例
7.4.3消息队列的特点
7.4.4死锁
7.4.5命令中cs和中Cnn
7.4.6有关的主要系统参数
7.5信号量
7.5.1创建或获取信号量组
7.5.2信号量组的控制
7.5.3信号量操作
7.5.4相关命令和系统参数
7.6共享内存
7.6.1创建或获取共享内存段
7.6.2获取指向共享内存段的指针
7.6.3共享内存段的控制
7.6.4相关的命令和系统参数
7.7信号量和共享内存使用举例
7.8内存映射文件I/0
7.9文件和记录的锁定
7.9.1设置文件锁定的必要性
7.9.2锁定操作
7.9.3使用举例
7.9.4咨询式锁定和强制性锁定
7.9.5死锁
7.9.6文件锁的隐式释放
7.9.7获取记录的加锁状态
第8章网络程序设计
8.1概述
8.1.1SOCket
8.1.2TCP与UDP
8.1.3网络字节次序
8.2TCP客户一服务器程序
8.2.1TCP客户端程序
8.2.2最简单的TCP服务器端程序
8.2.3多进程并发处理的TCP服务器端程序
8.3与socket有关的系统调用
8.3.1socket:创建一个socket
8.3.2bind:指定本地端点名
8.3.3listen:开始监听到达的连接请求
8.3.4accept:接受一个连接请求
8.3.5connect:建立连接
8.3.6read和write:接收和发送
8.3.7send/sendto和recv/recvfrom
8.3.8fcntl:无阻塞UO
8.3.9getpeemame:获取对方的端点名
8.3.10getsockname:获取本地的端点名
8.3.11shutdown:禁止发送或接收
8.3.12close:关闭一个连接
8.3.13getsockopt.setsockopt和ioctl
8.3.14库函数
8.4单进程并发处理
8.4.1select:I/O多路转接
8.4.2单进程并发处理的TCP服务器端程序
8.5UDP通信
8.5.1UDP客户端程序
8.5.2UDP服务器端程序
8.6与TCP/IP通信相关的命令
8.6.1查看IP接口状态
8.6.2打印IP路由表
8.6.3协议统计信息
8.6.4查看连接和端点名
附录AASCII码表
参考文献
索引