1、Linux操作系统实用教程,第1章 Linux操作系统概述,1.1 自由软件简介Linux是自由软件的代表,运行在该系统上的应用程序几乎都是自由软件。 自由软件含义 自由软件相关词语 1.2 Linux操作系统概述 Linux的发展历史 Linux的内核版本与发行版本 Linux的特点,自由软件含义,自由软件是指用户拥有以下三个层次自由的软件: 研究程序运行机制,源代码公开并根据用户自己的需要修改它的自由; 重新分发拷贝,以使其他人能够共享软件的自由; 改进程序,为使他人受益而散发它的自由; 简言之,就是用户有运行、拷贝、研究、改进软件的自由。,自由软件相关词语,FSF自由软件基金会GPL协议
2、 GUN工程,1.2 Linux操作系统概述,Linux的发展历史 Linux的内核版本与发行版本,Linux的内核版本,Linux内核版本由3个数字组成:r.x.y r:目前发布的Kernel主版本。x:偶数是稳定版本,奇数是开发中的版本。 y:错误修补次数。,Linux的内核版本,一般来说,x位为偶数的版本表明这是一个可以使用的稳定版本,如:2.6.18;x位为奇数的版本一般加入了一些新内容,不一定稳定,是测试版本,如:2.7.22。Red Hat Enterprise Linux 5 使用的内核版本是2.6.18。,Linux的发行版本,Linux免费的内核,以及允许用户或厂商自行搭配其
3、他应用程序的特性,目前世界上已经有超过百种不同的组合,这些不同的厂商把发布的内核与应用程序包组合就成了不同发行套件版本的Linux系统,相对于内核版本,发行套件版本号随着发布者的不同而不同,与系统内核的版本号是相对独立的。,国内外常见的Linux发行版本,红旗LinuxopenSUSE Linux,国内外常见的Linux发行版本,Ubuntu Linux Red Hat Linux,国内外常见的Linux发行版本,Mandrake Linux Turbo Linux,Linux的特点,开放性 多用户 多任务 良好的用户界面 设备独立性 把所有外部设备统一当作文件对待,只要安装设备的驱动程序,任
4、何用户都可以像使用文件一样,操纵、使用这些设备,而不必知道它们的具体存在形式。,Linux的特点,提供了丰富的网络功能 可靠的系统安全性良好的可移植性,Linux的特点,兼容其他Unix系统 同样遵循POSIX(Portable Operating System for Unix)标准来开发,所以Linux与现今的System V以及BSD等主流Unix系统均可兼容,而原来Unix系统下可以执行的程序,也几乎可以完全移植到Linux上。 支持多种文件系统,关于Red Hat Linux,Red Hat Linux 9.0版本以后,Red Hat公司然宣布不再推出个人使用的发行套件而专心发展商业
5、版本(Red Hat Enterprise Linux)的套件,也同时宣布将原有的 Red Hat Linux 开发计划和 Fedora 计划整合成一个新的 Fedora Project。Fedora Project 将会由红帽公司赞助,以 Red Hat Linux 9为范本加以改进,原本的开发团队将会继续参与 Fedora 的开发计划,同时也鼓励开放原始码社群参与开发工作。,END OF CHAPTER 1,第2章 Linux的安装、启动与关闭,2.1 Linux系统的安装准备 用户首先明确安装用途以及和现有计算机操作系统的关系,进行确认,了解掌握Linux操作系统安装的一般性常识,采取什
6、么样的安装方法 安装程序的获取 硬件需求,硬件需求,硬件的兼容性最新的硬件支持列表可在下面的网址中查到:http:/ 最低配置要求 CPU硬盘空间 内存 目前Linux可以支持的最大内存为4G,所以内存越大越好。如果要执行X窗口图形界面,需要拥有192M以上的内存,另外,对于多用户登录,则每增加一个文本模式用户,则系统会消耗0.51M的内存;如果用户以X窗口图形方式登录,则每个用户需要则加46M的内存。,安装方式,按安装界面进行划分 (1) 字符界面安装 通过键盘操作进行,该方式安装速度快,适合所有要安装的主机,并且条件具备时可进行网络环境下通过服务器主机进行安装,如FTP、NFS、HTTP等
7、方式。 (2) 图形界面安装 通过鼠标操作进行安装,该方式安装速度相对于字符界面要慢,但操作简单明了,更适合普通用户在本地进行安装。,2.2 Linux操作系统的安装,可以从多种介质进行安装,包括光盘、硬盘及网络等,这里以常见的光盘介质为例进行安装。 Linux的安装步骤 (1) 选择界面安装 (2) 测试光盘介质 (3) 语言选择 (4) 填写安装号码,Linux的安装步骤,(5) 磁盘初始化 (6) 选择磁盘分区方式 (7) 为系统分区 (8) 引导装载程序配置 (9) 网络配置 (10) 设置根口令及验证 (11) 软件包的选择,选择界面安装,测试安装介质,语言选择,安装号码,是否硬盘初
8、始化,选择分区方式,磁盘分区,添加分区,引导装载程序配置,网络配置,编辑网卡参数,设置根口令,选择软件包安装类别,选择软件包,显示安装进度的安装界面,完成安装,Linux系统的首次启动的设置步骤,(1) 欢迎语及许可协议 (2) 防火墙设置 (3) “SELinux”配置 (4) 新增系统用户 (5) 检测声卡状态,防火墙设置,“SELinux”配置,新增系统用户,检测声卡状态,Linux系统的升级,1. 系统升级2. 内核升级,Linux系统的删除,如果一个计算机中安装了Linux系统,同时也安装了Windows系统时,在Windows分区中是看不到Linux分区的。所以在Windows分区
9、中会出现Linux分区不存在的现象。这样可以使用Linux安装光盘来进行删除操作 。,Linux系统的删除步骤如下:,(1) 首先,插入Linux光盘来引导系统,选择全新安装而不是升级安装。 (2) 然后,删除所有的Linux分区,之后按“Ctrl+Alt+Del”组合键重新引导,并中断原有的安装程序。 (3) 在重新启动系统后,还是会出现GRUB引导管理程序,因为它保存在MBR中,此时可以准备DOS引导盘重新引导系统,然后执行以下命令即可删除有关GRUB或LILO的信息: fdisk/mbr 要删除Linux分区,也可以使用分区工具或GHOST镜像方法进行删除。,2.3 Linux系统的多重
10、引导安装,Linux操作系统中的多重引导程序GRUB,不仅可以对各种发行版本的Linux进行引导,也能够正常引导计算机上的其他操作系统。 实现多系统的引导功能时的磁盘分区是重点难点,所以安装多操作系统前应做好备份,以防资料丢失。,磁盘分区基础,硬盘分区是针对一个硬盘进行操作的,它可以分为:主分区、扩展分区、逻辑分区。其中主分区可以是1-3个,扩展分区可以有0-1个,逻辑分区则没有什么限制。,磁盘分关系样式示例,Linux系统中磁盘设备名,系统第一块IDE接口的硬盘称为/dev/hda,而它的第一个分区则称为/dev/hda1。 系统第二块IDE接口的硬盘称为/dev/hdb,而它的第三个分区则
11、称为/dev/hdb3。 系统第一块SCSI接口的硬盘称为/dev/sda,而它的第一个分区则称为/dev/sda1。 系统第二块SCSI接口的硬盘称为/dev/sdb,而它的第五个分区则称为/dev/sdb5。,Linux中的分区数字编号,Linux中的分区数字编号,14留给主分区和扩展分区,逻辑分区从5开始。,Linux和Windows操作系统多重引导安装,对于Windows和Linux间的多重引导问题,最好是先安装Windows操作系统,然后再在Windows分区的文件系统下进行Linux分区 。,2.4 VMware虚拟机下安装Linux系统,VMware简介 VMware works
12、tation是VMware公司设计的专业虚拟机,可以虚拟现有任何操作系统,即在现有的操作系统上在运行另一个操作系统,VMware可以在计算机所安装的操作系统上构建多个虚拟的计算机系统,那个真实的计算机上安装的操作系统被称为主操作系统,虚拟计算机上安装的操作系统则被称为客户操作系统。,VMware虚拟机安装操作系统主要有以下目的和意义, 单机构建网络环境 软件开发跨平台移植 系统学习 进行危险操作,VMware虚拟机下安装运行Linux操作系统,VMware的安装 VMware可以在网上下载,它既有Windows版本又有Linux版本,因此借助不同的版本,即也可以在Linux操作系统下安装运行W
13、indows操作系统,也可以在Windows操作系统下安装运行Linux等操作系统 。,新建虚拟机并安装Linux虚拟系统,VMware的主界面下我们可以按照“向导”来建立一个新的Linux虚拟机 ,虚拟机建立完后,在光驱中放入Linux安装光盘或者使用镜像文件即可正常安装虚拟的Linux系统了。,建立完成的虚拟机 等待安装Red Hat Linux,2.5 Linux系统的启动与关闭,Linux系统的启动引导步骤 Linux系统启动是显示一行行的文本接连滚动出现的信息,它可以告诉您目前机器在启动时加载了哪些进程、服务、设备等信息,是否正常运行。用户通过了解启动信息的前后顺序以及每一行信息的意
14、义,掌握系统的功能状态,对于系统管理工作来说是相当重要的,系统管理的成功与否也就由此开始。,Linux系统的启动引导步骤,(1) 加载BIOS(Basic Input/Output System) (2) 进入GRUB (3) 加载Linux Kernel (4) 执行init (5) 运行/etc/rc.d/rc.sysinit (6) 执行/etc/inittab (7) 执行默认级别中的所有Script (8) 执行/bin/login程序,Linux系统的引导系统启动菜单程序GRUB,1. GRUB简介2. GRUB的启动菜单3. GRUB启动配置文件参数含义,2.5.3 Linux系
15、统的登录,1. 登录模式 (1) 图形界面登录 (2) 文本模式登录 2. 模式切换 (1) X窗口下切换到字符终端 (2) 字符界面进入X窗口界面,2.5.3 系统的注销与关闭,1. 注销字符界面下输入logout或exit命令 2. 关闭系统立刻关闭系统 shutdown h now halt是系统正常关机,reboot是系统重新启动,poweroff是系统关机后还会关闭电源。,END OF CHAPTER 2,第3章 Linux操作基础,Shell简介 每种操作系统都有其特定的shell , Linux的缺省shell是Bash(Bourne Again shell) ,用户登录以后sh
16、ell进入内存。 查看它的shell解释器bash的版本执行的命令为: bash version shell的命令解释器功能为:接收用户键入的命令,进行分析,创建子进程,由子进程实现命令所规定的功能,等子进程终止后,发出提示符。,简单命令,pwd命令 date命令 who命令 cal命令 uname命令 wc命令 Clear命令,Shell命令的操作基础,shell命令的一般格式 命令名称 选项 参数 在线帮助命令 man 命令名 命令名 -help Info 命令名 Whatis 命令名 与shell有关的配置文件,3.5 Shell命令的高级操作,shell的命令补全 shell的历史命令
17、 shell的重定向 shell的管道操作,shell的命令补全,先输入命令的前几个字母,然后按TAB键,如果与输入字母匹配的仅有一个命令名或文件名,系统将自动补全,如果有多个与之匹配,系统将发出报警声音,如果再按一下TAB键,系统将列出所有与之匹配的命令或文件名,从而方便用户操作。,shell的历史命令,用户在命令行操作中输入的所有命令,系统都会将其自动记录到用户宿主目录下的一个文件中(/.bash_history),记录的多少由用户环境变量中的HISTSIZE决定。 在提示符下输入history命令查看所有历史命令 若执行以前历史命令列表中的某一个命令,则执行“!n”,n为历史命令列表中的
18、编号 向上方向键可以翻出最近使用的命令,shell的重定向,输出重定向符号有“”和“”,“”叫做重定向附加。而输入重定向符为“”,可以把命令行出错的信息保存到指定的文件中去。,shell的管道操作,管道线“|”前面的命令的输出是管道线“|”后面命令的输入。 例如: rootwdg-linux-5 # cal | wc | wc1 3 24,3.6 Linux的X Window,X Window系统简介 Linux的桌面环境 GNOME桌面环境简介 GNOME桌面中的菜单系统 使用Nautilus文件管理器,END OF CHAPTER 3,第4章 Linux文件系统,“文件系统”有以下几种含义
19、: (1) 指一种特定的文件格式。例如,我们说Linux的文件系统是ext3,MSDOS的文件系统是FAT16,而Windows XP的文件系统是NTFS或FAT32,就是指这个意思。 (2) 指按特定格式进行了“格式化”的一块存储介质。当我们说“安装”或“拆卸”一个文件系统时,指的就是这个意思。 (3) 指操作系统中(通常在内核中)用来管理文件系统以及对文件进行操作的机制及其实现。,4.1 Linux系统的文件及其类型,Linux系统的文件含义 文件的含义 文件的成分 文件的命名 Linux系统的目录结构 Linux文件系统使用单一的根目录结构,所有的分区都挂载到单一的“/”目录上 Linu
20、x的文件类型,Linux的文件类型,普通文件 链接文件 设备文件 链接文件,4.2 Linux系统的文件操作命令,Linux的文件导航命令 1s命令 cd命令 Linux的文件信息显示命令 cat查看文件信息命令 more逐屏显示文件内容,Linux系统的文件操作命令,Linux的文件复制、删除及移动命令 cp复制命令 mv文件移动及改名命令 Linux的文件检索、排序命令grep文件信息检索命令 sort排序命令 Linux的目录操作命令 mkdir创建目录命令 rmdir删除目录命令,4.3 文件的权限,文件的属主与属组 chown 选项 所有者:组 文件列表 文件的访问权限 文件的权限表
21、示方法,文件权限的修改方法,字母形式修改权限 字母模式形式即“用户对象 操作符号 操作权限”,其命令格式为: chmod 选项 模式,模式 文件名 数字形式修改权限 数字形式即由三位八进制数字组成,其命令格式为: chmod 八进制模式 文件名,文件的特殊权限,SUID、SGID和Sticky的表示 suid/sgid程序 程序的t属性 目录的s属性 目录的T属性 文件默认权限umask掩码,4.4 文件的链接,硬链接 不带选项,ln命令创建硬链接。在另外的目录或本目录中增加目标文件的一个目录项,一个文件就登记在多个目录中 软链接(符号链接 ) 用“ln -s”命令建立符号链接时,最好源文件用
22、绝对路径名,这样可以在任何工作目录下进行符号链接。类似于Windows系统中的快捷方式。,END OF CHAPTER 4,第5章 Linux系统管理,本章主要介绍了Linux操作系统管理的方法,它主要包括用户和组的管理、软件包管理及文件压缩、网络通信管理、进程控制和系统的服务启动管理等。,5.1 用户和组管理,用户和组概述 账户 用户和组 用户和组的配置文件 passwd文件 shadow文件 group文件 gshadow文件 用户及组的管理命令,用户及组的管理命令,帐户管理命令 useradd usermod passwd userdel 组帐户管理命令 groupadd groupde
23、l gpasswd,添加用户到组,将指定用户添加到指定用户组中 gpasswd -a username groupname,5.2 软件包管理,Linux下软件包简介 rpm包 tar包 bz2包 gz包 deb包 sh结尾的文件 src源码文件 bin文件,RPM软件包的管理,RPM概述 RPM的含义 使用RPM的好处 RPM的功能 RPM包的名称格式 获得RPM包的途径,RPM包的命令,RPM包的安装 安装RPM包的基本命令格式是: rpm -ivh RPM包的删除 删除RPM包的基本命令格式是: rpm -e ,RPM包的命令,RPM包的查询 rpm -qa rpm -q rpm -qp
24、 rpm -qi rpm -ql rpm -qf ,RPM包的命令,RPM包的升级 升级RPM包的基本命令格式是: rpm -Uvh RPM包的验证 验证RPM包的基本命令格式是: rpm -V 参数,TAR的软件包管理,TAR包概述 TAR包的含义 TAR包的名称格式 TAR包的作用 获得TAR软件包,TAR包的命令,建立TAR包 有两种方式:一种是建立普通的TAR包,只打包,不压缩 tar cvf 另一种是打包并压缩,选项是“zcvf”,其中“z”代表使用“gzip”程序进行文件的压缩 tar zcvf ,TAR包的命令查询TAR包,查询TAR包 在释放TAR包之前,查看TAR包中的文件内
25、容。其格式如下: tar ztf 查询的参数是“ztf”, 其中“z”同上,指查询压缩的TAR包,若无“z”则是普通的TAR包,“t”(Test)指查询TAR包,“f”指定 TAR包的文件名。,TAR包的命令释放TAR包,释放TAR包比较简单,它使用“zxvf”参数,其中“x”指释放(eXtract)。它也分为解非压缩和压缩包两种方式,命令格式如下:(注意,默认释放的路径是当前文件的路径)tar zxvf 若释放TAR包为非压缩的TAR包,则不需用参数“z”。,src源代码包的编译及安装,(1) 释放TAR包 (2) 查看并阅读包内附带的软件安装说明 (3) 进行编译准备 (4) 进行编译 (
26、5) 进行软件安装 (6) 清除临时文件,5.3 网络通信管理,网络的基本配置网络相关概念 IP地址 主机名 网关地址 DNS服务器地址 Red Hat Enterprise Linux 5下的网络配置文件,网络配置工具netconfig,配置方法 在字符界面下输入如下命令: Netconfig 使用键使光标点移到相应位置后,输入相应的网络属性,包括IP地址、子网掩码、默认网关和DNS服务器的地址,确认设置完后,按键使光标移到“OK”按钮,回车保存并退出该配置程序。 重新启动网络服务 service network restart,常用网络管理命令,hostname ifconfig 显示当前
27、活动的(或指定的)网卡设置。其格式为: ifconfig 网卡设备名 重新设置网卡的IP地址,一般由root用户进行设置。其格式为: ifconfig 网卡设备名 IP地址,一块网卡设为多个虚拟IP地址,把指定的一块网卡设为多个虚拟IP地址,格式为:Ifconfig 网卡设备名:n IP n为指定网卡的编号,ping,ping命令是最常用的网络测试命令,该命令通过向被测试的目的主机地址发送ICMP报文并收取回应报文,来测试当前主机到目的主机的网络连接状态。ping命令默认会不间断地发送ICMP报文直到用户+c组合键可以中途终止该命令。 使用“-c”选项可以控制ping命令发送报文的数量。其格式
28、为: ping -c 报文数 目的主机地址,常用的内部通信命令,write $ write username tty Message +d wall mesg talk,mail,(1) 撰写和发送邮件 mail username Subject:topic text . +d Cc:usernamemail s topic username filename,Mail(2) 接收和阅读邮件,直接输入mail命令后会看到所有的邮件,最后一行会有“&”符号,它为邮件命令提示符,在其后可输入各种邮件命令。如想看哪一封邮件,则输入如下: & n 其中n为mail的编号,mail命令的常用内部命令,5
29、.4 进程管理,熟练掌握Linux下常用的进程管理,可以高效率地进行系统的管理。 进程的概念 进程属性 进程的类型,进程的控制命令ps命令,ps命令 ps ef ps -axu,ps输出信息的含义,进程状态含义,进程的控制命令 free命令,free命令 显示系统内存的使用情况,包括内存总量、已经使用内存数量,空闲内存数量等信息。,进程的控制命令top命令,实时监控系统进程 top环境中常用的功能 排序 监视指定用户 指定刷新时间 删除指定的进程 查阅帮助 退出top环境,sleep命令,sleep命令用于使进程延迟一段时间再执行。其格式为: sleep time; command 其中tim
30、e为延迟时间,时间单位为s,进程的控制命令 kill命令,用kill命令来杀死程序产生的进程来结束程序的运行。 格式1 : kill PID 格式2 : kill -9 PID “-9”为SIGKILL信号,属于强制结束 。,进程的前台与后台控制,前台与后台运行含义 前台与后台运行相关命令 command command jobs命令可以查看挂起到后台的进程 fg命令将后台挂起的进程恢复到前台来运行,格式为:fg 后台进程编号 快捷键“ + Z”,定时作业管理 at作业,由守护进程atd管理的计划任务作业 用户指定系统在将来的某个时间执行作业,则使用at命令可以完成。 创建at作业 创建at作
31、业有如下几种实例格式 显示at作业 删除at作业,定时作业管理 crond作业,由守护进程crond等管理的计划任务作业 要想实现以固定的间隔时间执行作业,并且能统一管理所有作业,at命令就不能胜任了,我们可以利用强大的crontab命令来实现cron作业。 cron作业的分类 系统cron作业 用户cron作业,系统cron作业,使用cron作业服务必须安装vixie-cron RPM软件包,而且必须运行crond服务,要启动crond服务使用如下命令: service crond restart cron的配置文件为“/etc/crontab”,cron作业列表文件每列含义说明,用户cro
32、n作业,方法一 首先利用vi创建cron作业列表文件,文件命名为cronfile1 (这个文件名随意起) 按规定格式创建好任务文件 用命令行crontab cronfile1把它写入“/var/spool/cron/username”文件中 方法二 用crontab e就会自动进入vi编辑器中 按规定格式编辑好任务:wq退出就保存为“/var/spool/cron/username”文件,5.5 系统的服务管理,服务在不同运行级别启动的情况可能不同 INIT进程及其配置文件 运行级别 runlevel命令 显示运行级别 转换运行级别,系统服务管理的常用命令 chkconfig,chkconfi
33、g服务启动状态 查看系统服务启动状态 chkconfig -list 服务名 设置系统服务的启动状态。其格式为: chkconfig -level 服务名 ,系统服务管理的常用命令 service,service服务状态控制 启动、停止或重新启动某个服务。其格式: service 服务名 status|start|stop|restart 例:service httpd status service httpd start service httpd restart,ntsysv系统自启动服务控制,在字符终端执行的命令,用于设置系统启动时自动启动服务的一个命令行程序,该命令只有管理员才有权限执
34、行此程序。 ntsysv 进入界面后,如图5-5所示,用上下箭头移动到需启动的服务上,单击空格选中此服务,这样下次启动时就可以自动启动了。注意:选择的前提是必须要先安装完需要的软件包,否则看不到此服务。,ntsysv,5.6 磁盘操作管理,文件系统是逻辑概念,磁盘是物理概念,文件系统以磁盘为基础存储文件。磁盘操作管理中,如何掌握系统的磁盘使用情况、挂接新的磁盘文件系统、掌握系统的磁盘分区等也是系统管理员的重要工作之一。 Linux文件系统类型简介 存储设备的名称 查看系统磁盘分区情况命令: fdisk l,磁盘文件系统的挂载与卸载,使用命令手工挂载 mount -t fs-type -o op
35、tion device mountpoint 系统启动时自动挂载 在/etc/fstab中添加如下一行 卸载 umount device dir,常用的磁盘操作命令,fdisk磁盘分区 fdisk -l device du磁盘统计 du -a directoryname 可以在新的磁盘上用fdisk创建新的磁盘分区,然后用mkfs命令创建新的文件系统,然后手工命令挂载,以此体会Linux文件系统的使用特点,END OF CHAPTER 5,第6章 vi编辑器的使用,用户无论是建立文本文件,还是编写程序、配置系统环境,都要用到文本编辑器。Linux操作系统环境下提供了许多文本编辑器,本章重点讲解
36、vi编辑器,启动、保存、退出和其工作模式等内容,并对利用vi编辑器建立、编辑、加工处理文本文件操作方法进行了详细介绍,其中包括文本的插入、修改、恢复、光标移动、字符串检索、全局替换、vi编辑器的设置以及编辑多个文本文件和文本块的移动、复制等内容。,6.1 认识Linux 的文本编辑器,Unix提供了一系列的文本编辑器,包括ex、edit和vi。Vi是Unix世界里极为普遍的全屏幕文本编辑器,VIM是它的改进版本Vi IMproved的简称。几乎可以说任何一台Unix/Linux机器都会提供这套软件,Vi 的原意是 “Visual”,它是一个立即反应的编辑程序,也就是说可以立刻看到操作结果,于
37、vi 是全屏幕编辑器 。,6.2 vi编辑器的启动、保存和退出,vi编辑器的启动 vi 选项filename 存盘及退出 :w :w filename :q :wq :q! ,6.3 vi编辑器的三种工作模式,6.4 命令模式下的操作,命令模式到输入模式的转换命令 插入命令 附加命令 打开新行命令 命令模式下的光标移动 基本光标移动命令 快速光标定位命令,快速光标定位命令,移至行首 “”及“0”(零) 移至行尾 “$” 移至指定行 “行号G” 移至指定列 “列号|”,命令模式下的操作文本删除命令,删除字符 “x”及“X” 删除文本对象 “dd”、“D”及“d与光标移动命令的组合”, 例: d0
38、 d5l d$ d3G ,命令模式下的操作,复原命令 “u”及“U” 行结合命令 J(大写字母)把光标所在行与下面一行结合成一行。如果在J之前给出一个数字,例如3J,则表示把当前行及其后面的2行(共3行)结合成一行。,命令模式下的操作文本位移命令,“”命令将限定正文行向右移动,通常是一个制表位(8个空格) “”命令将光标所在行右移8个空格。 “”命令将光标所在行左移8个空格。,命令模式下的操作字符串检索命令,向前检索 /字符串 向后检索 ?字符串 检索下一个字符串 n和N可以重复上一个检索命令。 检索特殊字符 * $ / | 需要使用转义形式,即在这些字符前面加上反斜线“”,使其失去特殊的含义
39、 。,6.5 底行命令模式下的操作,定位操作 :20 #光标移到第20行的行首。 显示指定文本区 :m,np #显示m,n行 删除指定文本区 :m,nd #删除m,n行 给定检索字符串的模式,向前或向后查找,光标停在首先找到的匹配行的行首。,底行命令模式下的操作全局替换命令,:g/模式/命令表 :g/字符串1/p :g/字符串1/s/字符串2/ :g/字符串1/s/字符串2/g :g/字符串1/s/字符串2/gp :g/字符串1/s/字符串2/gc :g/字符串0/s/字符串1/字符串2/g,底行命令模式下的操作全局替换命令,:g!/模式/命令表 对所有不匹配给定模式的文本行执行给出的命令表。
40、 例,:g!/IS/s/this/That/gp :g/s/ /g :s/模式/替代文本/选项 例, :s/is/are :s/is/are/g,底行命令模式下的操作插入shell命令,vi编辑器中执行shell命令有两种情况: (1) 仅执行shell命令,格式如下: :!command (2) 读取命令的输入并插入,命令格式如下: :r !command 如 :r !ls ,会在vi所编写的当前文件光标位置插入所执行ls的输出内容。,恢复文件,vi 在编辑某个文件时,生成一个以 . 开头,并以 .swp 结尾的临时文件。vi 在正常退出时,该文件被删除,若意外退出,而没有保存文件的最新修改
41、内容,则可以使用恢复命令: :recover 也可以在启动 vi 时利用 -r 选项来恢复文件。如:vi r filename 。,vi的选项设置,为控制不同的编辑功能,vi 提供了很多内部选项。利用 :set 命令可以设置选项。 :set all :set lines=24 :set number :set nonumber :set autoindent,6.6 文本移动和编辑多个文件缓冲区,编辑缓冲区 用户在“编辑缓冲区”中的文件副本上进行工作的。当用单一文件名参数调用vi时,就把命名的文件拷贝到临时编辑缓冲区中。编辑器记住指定的文件名,所以它以后能把缓冲区的内容拷回命名文件。在拷回原来
42、文件之前即存盘前,该文件所新编辑操作的内容,是临时存在编辑缓冲区中的。,命名缓冲区,由字母az命名,即vi可以拥有26个字母命名的不同缓冲区。 从编辑缓冲区到命名缓冲区(拷贝或剪切)命令格式为: “字母名+行号+操作命令(Y,dd) 从命名缓冲区到编辑缓冲区(粘贴)命令格式为为: “字母名+操作命令(P,p),删除缓冲区,删除缓冲区可以由数字19指定。 例如,可以指定把包括光标所在行的下5行删除并放到2删除缓冲区命令如下: “25dd如果想在粘贴回去,则可以用命令:“2p,按行操作的文本移动,按行拷贝(co命令) :1, 3 co . 文本块移动(m命令) :1, 3 m 7 文件间的文本移动
43、 :2, 5 w filename :2, 5 w filename,编辑多个文件,vi 文件1 文件2 :n :e filename #不是依顺序,跳到指定文件 :e # 例,现正编辑文件ex1.c,需要把另一个文件max.c的6行文本,把它移动插入到ex1.c的指定位置。,END OF CHAPTER 6,第7章 shell程序设计,把命令有机地组合在一起,形成功能强大、使用灵活,但代码简单的新命令,极大地提高了用户管理使用Unix/Linux系统的工作效率。 其它shell与Bash版本的shell也十分类似,读者可以举一反三,根据需要自学其他的shell 。,shell脚本的建立与执行
44、,shell脚本的建立 同建立普通文本文件的方式相同,可利用编辑器vi或cat命令,进行程序录入和编辑加工。 shell脚本的执行 sh 脚本名 sh 脚本名 改执行权限后直接执行方式,shell的变量 可写的shell环境变量,可写的shell环境变量可以对它们进行赋值,大部分可写的shell环境变量都在登录过程中执行“/etc/profile”文件时进行初始化。该文件由系统管理员设置,用于为系统上的所有用户建立一个公共环境。 例:HOME MAIL PATH PS1 TERM,特殊的环境变量,$*所有命令行参数的值 $#命令行参数的总数 $当前进程的进程ID(PID) $?最后执行的一条命
45、令的退出状态,返回值为0则成功,非0则失败 $!在后台运行的最后一个进程的进程ID,位置参数,在命令行传递给shell脚本的参数。 共有十个位置参数,依次是 $O,$1,$2,$9 必有$0;而其他位置参数依据实际需求,可有可无。 输出位置参数 可以用echo命令输出位置参数,位置参数,用set命令给位置参数赋值 移动位置参数 如果实际给定的命令行参数多于9个,就需要用shift命令移动位置参数。 shift命令可以带有一个整数作为参数,例如: shift 3 其功能是每次把位置参数左移3位。如果未带参数,则默认值为l。,用户自定义变量,在shell 编程语言中无须声明和初始化shell变量,
46、一个未初始化的shell变量,其默认的初始化值为空字符串。 用户定义的shell变量名是由字母或下线符打头的字母、数字和下线符序列,并且大小写字母意义不同。这与C语言中标识符的定义相同。,定义变量并赋值的形式,字符串赋值,格式如下: 变量名=字符串 如果在赋给变量的值中要含有空格、制表符或换行符,那么就应该用双引号把这个字符串括起来。 变量值可以作为某个长字符串中的一部分。如果它在长字符串的末尾,就可以利用直接引用形式。,查看变量使用变量,用env命令可以查看环境变量 用不带参数的set命令可以显示所有“shell变量(包括用户自定义变量)名以及它们的当前值。set命令还可用于改变一些只读sh
47、ell环境变量的值。 在程序中使用变量值时,要在变量名前面加上一个符号“$”。这个符号告诉shell,要取出其后变量的值。,7.3 shell中的特殊字符,特殊字符有着重要的作用。包括: 通配符 引号 命令执行顺序操作符 注释符、反斜线及后台操作符 在使用时应注意它们表示的意义和作用范围。,shell的通配符,星号(*) 问号(?) 一对方括号( ) 感叹号(!),shell的引号,双引号(“”) 单引号() 倒引号() 倒引号的嵌套应用,倒引号的嵌套时必须在内层的一组倒引号用反斜线()进行转义。,命令执行顺序操作符,顺序执行 顺序分隔符(;) 管道线(|) 逻辑与(&) 逻辑或(|),she
48、ll中的注释符、反斜线及后台操作符,注释符(#) 反斜线() 转义符,它能把特殊字符变成普通字符。 还作为续行符使用。如果把它放在一行的回车换行之前那么表示下一行接续此行,与下一行被视为同一行,可用于表示长的输入行。 后台操作符(&),7.4 shell编程中的输入输出命令,shell中输入输出的标准文件 每个进程运行时自动打开三个文件,这些文件称为命令的标准文件,分别用于命令读取输入、输出结果以及输出错误消息,即 标准输入文件(stdin) 标准输出文件(stdout) 标准错误输出文件(stderr) shell的输入输出重定向命令 2,shell的输入输出命令,read命令 用read命
49、令由标准输入读取数据,然后赋给指定的变量。其一般格式如下。 read 变量1 变量2 echo 命令 echo命令是将其后的参数输出。最好用双引号把所有参数括起来,这样不仅易读并且能使shell对它们进行正确的解释。,7.5 shell程序控制结构语句,脚本的控制结构语句有三种基本的类型:两路分支、多路分支以及一个或多个命令的循环执行。Linux的bash中的两路分支语句是if语句,多路分支语句是if-elif和case语句;代码的循环执行语句是for、while和until语句。,if语句,两路分支的if语句 格式: if 判断条件 then 命令1 else 命令2 Fi 判断条件包括命令语句和测试语句两种方式: 命令语句形式的判断条件,多路条件判断分支的if语句,