Linux操作系统实验教程

上传人:痛*** 文档编号:90397631 上传时间:2022-05-15 格式:DOC 页数:37 大小:211KB
收藏 版权申诉 举报 下载
Linux操作系统实验教程_第1页
第1页 / 共37页
Linux操作系统实验教程_第2页
第2页 / 共37页
Linux操作系统实验教程_第3页
第3页 / 共37页
资源描述:

《Linux操作系统实验教程》由会员分享,可在线阅读,更多相关《Linux操作系统实验教程(37页珍藏版)》请在装配图网上搜索。

1、Linux操作系统实验教程第1章 Linux系统概述一、 Linux系统结构从操作系统的角度来分析Linux,它的体系结构总体上属于层次结构如下图所示:从内到外包括三层:最内层是系统核心,中间是Shell、编译编辑实用程序、库函数等,最外层是用户程序,包括许多应用软件.从操作系统的功能角度来看,它的核心有五大部分组成:进程管理、存储管理、文件管理、设备管理、网络管理.各子系统实现其主要功能,同时相互之间是合作、依赖的关系.进程会管理是操作系统最核心的内容,它控制了整个系统的进程调度和进程之间的通信,是整个系统合理高效运行的关键;存储管理为其他子系统提供内存管理支持,同时其他子系统又为内存管理提

2、供了实现支持,例如要通过文件管理和设备管理实现虚拟存储器和内外存的统一管理.二、 配置一个双引导系统如果计算机中已经安装了其他操作系统,并想创建一个引导系统以便兼用Red Hat Linux和另外的操作系统,需要使用双引导.机器启动时,可以选择其中之一,但不能同时使用两者.每个操作系统都从自己的硬盘驱动器或硬盘分区中引导,并使用自己的硬盘驱动器或硬盘分区.如果计算机上还没有安装任何操作系统,可以使用专门的分区与格式化软件给Windows创建指定大小的分区,Windows的文件系统为FAT,再为Linux系统创建所需要大小的分区,另外再给Linux留100MB左右的交换分区,Linux的文件系统

3、为ext2.然后就可以安装系统了.应首先安装Windows,然后再安装Red Hat Linux.如果只进行了分区而没有格式化各分区,在安装时可以使用Windows自带的格式化程序和Linux自带的格式化程序进行各自分区的格式化.当Windows已经被安装,而且已为Linux准备了足够的磁盘空间,就可以安装Linux了.Red Hat Linux安装程序通常会检测到Windows并自动配置引导程序来引导Windows或Red Hat Linux.安装完成之后,无论在什么时候启动计算机,都能够在引导装载程序屏幕中指明想启动Red Hat Linux还是另外的操作系统.选择Red Hat Linu

4、x来引导Red Hat Linux;选择DOS来引导Windows.三、 Red Hat Linux的安装将Red Hat Linux9.X安装光盘插入光驱,然后启动计算机,即可从CD-ROM启动Red Hat Linux9.X安装程序.步骤1,机器启动之后,显示boot提示屏幕,其中包括几个不同的引导选项,每个引导选项还有一个或多个与之关联的帮助屏幕.以图形方式从光盘中安装Red Hat Linux,单击回车键继续安装.步骤2,安装程序检测用户系统并试图识别光驱.如果找到了,会进入安装进程的下一个阶段.这时若要终止安装进程,应取出光盘,重新引导机器.步骤3,欢迎使用Red Hat Linux

5、,欢迎屏幕并不提示做任何输入.可阅读左侧面板内的帮助文字来获得附加的说明,以与关于如何注册Red Hat Linux产品的信息.单击next继续步骤4,语言选择.使用鼠标选择要使用的语言.选择恰当的语言会在稍后的安装中帮助定位时区配置.安装程序将会根据这个屏幕上所指定的信息来定义恰当的时区.选择恰当的语言例如简体中文后,单击next继续.步骤5, 键盘配置.用鼠标选择要在今后用作系统默认的键盘布局类型例如U.S.English,选定后,单击next继续.如果要在安装结束以后,想改变键盘类型,可在系统启动后窗口中单击屏幕左下角的,弹出主菜单,选择系统设置/键盘,如果不是根用户,系统会提示输入根口

6、令再继续;或者在shell提示符下输入redhat-config-keyboard命令,如果不是根用户,系统会提示输入根口令再继续.步骤6,鼠标配置.为系统选择正确的鼠标类型.如果找不到一个能确定与系统兼容的鼠标,可以根据鼠标的键数和它的接口,选择通用项目中的一个.选定鼠标型号以后,单击next继续.如果在安装结束以后改变鼠标配置,可在系统启动后窗口中单击屏幕左下角的,弹出主菜单,选择系统设置/鼠标,如果不是根用户,系统会提示输入根口令再继续;或者在shell提示符下输入redhat-config-mouse命令,如果不是根用户,系统会提示输入根口令再继续.步骤7,选择安装还是升级.如果安装程

7、序在系统中检测到从前安装的Red Hat Linux版本,则升级检查屏幕就会自动出现.这里考虑在系统上执行Red Hat Linux的新安装,选择执行Red Hat Linux的新安装,然后单击next继续.步骤8,选择要执行的安装类型.Red Hat Linux的安装类型选项有个人桌面、工作站、服务器、定制 和升级.选择个人桌面,单击next继续.步骤9,网络配置.安装程序会自动检测到机器中拥有的任何网络设备,并把它们显示在网络设备列表中.选择默认选项后,单击next继续.要在安装结束以后改变网络配置,可在系统启动后窗口中单击屏幕左下角的红帽子,弹出主菜单,选择系统设置/网络,如果不是根用户

8、,系统会提示输入根口令再继续;或者在shell提示符下输入redhat-config-network命令,如果不是根用户,系统会提示输入根口令后再继续.步骤10,为系统选择恰当的安全级别.l 高级:系统不会接受那些没有被具体制定的连接除了默认设置,例如DNS回应、DHCP之外.如果要把系统连接到互联网上,但是并不打算运行服务器,这是最安全的选择.如果需要额外的服务,可以选择定制来具体指定允许通过防火墙的服务.l 中级:防火墙将不准系统访问某些资源.可以选择定制来具体指定允许通过防火墙的服务.l 无防火墙:给予完全访问权,且不做任何安全检查.l 信任的设备:选择信任的设备中的任何一个可使系统接受

9、来自这一设备的全部通信而不受防火墙规则的限制.l 允许进入:启用这些选项,将允许具体指定的服务穿过防火墙.防火墙配置完毕,单击next继续.要在安装完毕后改变安全级别配置,可在系统启动后的窗口中单击屏幕左下角的,弹出主菜单,选择系统设置/安全级别,如果不是根用户,系统会提示输入根口令再继续;或者在shell提示符下输入redhat-config-securitylevel命令,如果不是根用户,系统会提示输入根口令后再继续.步骤11,选择时区.可以通过选择计算机的物理位置,或指定时区和通用协调时间UTC之间的偏移来设置时区.时区选定后,单击next继续.要在安装完成以后改变时区配置,可在系统启动

10、后的窗口中单击屏幕左下角的红帽子,弹出主菜单,选择系统设置/日期&时间,如果不是根用户,系统会提示输入根口令再继续;或者在shell提示符下输入redhat-config-date命令,如果不是根用户,系统会提示输入根口令后再继续.步骤12,设置根口令.设置根账号即超级用户#与其口令是安装过程中最重要的步骤之一.根账号是用来安装软件包、升级RPM以与执行多数系统维护工作.作为根用户登录可获得对系统的完全控制权.安装程序会提示为系统设置一个根口令.如果不输入根口令,安装程序将不允许继续.根口令必须至少包括6个字符,所输入的口令不会在屏幕上显示,口令是区分大小写的.根口令设置完毕,单击next继续

11、.要在安装以后改变根口令,可在系统启动后的窗口中单击屏幕左下角的,弹出主菜单,选择系统设置/根口令,如果不是根用户,系统会提示输入根口令再继续;或者在shell提示符下输入redhat-config-rootpassword命令,如果不是根用户,系统会提示输入根口令后再继续.步骤13,个人桌面的默认设置.安装程序会自动选择多数软件包.单击next继续.步骤14,选择软件包组.在其他栏选择全部以安装包括在Red Hat Linux中的所有软件包.也可以在选择软件包组后,用鼠标选择或取消选择单个软件包.要了解某一指定软件包的详情,可单击该软件包的名称,关于它的信息将会在屏幕底部出现.某些软件包例如

12、内核和某些库是每个系统所必需的,被系统默认选定,他们不能被选择或取消选择.软件包设置完成后,单击next继续.步骤15,至此,应该可以看到为安装Red Hat Linux而准备好的屏幕.如果由于某种原因希望中断安装进程,此处是可以安全取消安装并重新引导系统的最后机会.一旦按下了next按钮,分区将会被写入,系统将会被安装.注意:如果想中止安装,应该在信息被写入硬盘驱动器之前重新引导系统.继续安装,单击next继续.步骤16,安装软件包.在所有软件包安装完成之前,将不能进行任何其它操作.安装的快慢取决于所选择软件包的数量和计算机的运行速度.依据安装程序的提示,一次插入第1、第2、第3张Red H

13、at Linux系统光盘.步骤16,创建引导盘.要创建一张引导盘,可在软驱中插入一张空白的、格式化了的磁盘,然后单击next继续.步骤17,视频卡配置.安装程序给出一个视频卡列表供选择.选定后或接受系统的默认选择,单击next继续.步骤18,显示器配置.安装程序给出一个显示器列表供选择.选定后或接受系统的默认选择,单击next继续.步骤19,定制图形化配置.设置屏幕色彩深度和屏幕分辨率或接受系统的默认选择,单击next继续.步骤20,安装完成.至此,安装完成.取出软驱中的软盘和光驱中的光盘.单击退出按钮,来重新引导系统.一份完整的安装日志可在/root/install.log中找到,已备今后参

14、考.四、登录和退出Red Hat Linux系统 1、登录系统打开计算机,选择Red Hat Linux,Linux系统开始启动,之后出现如下登录界面:输入用户名,按回车,系统要求输入口令,输入口令后按回车.如果输入的用户名和口令正确,就会出现以下窗口至此,已经进入Linux系统.2、退出系统单击窗口左下角的打开主菜单,选择其中的注销命令,在弹出的对话框中选择关闭系统,单击确定按钮.系统将关闭,等出现power down字样时,可以关闭电源.还可使用其他方法退出系统,这里不再介绍.五、Linux系统的shell使用Linux系统时,用户多数时间是通过shell与系统进行对话的.Shell是一个

15、接受用户输入命令并将其转换成指令的程序,是用户与Linux系统之间的界面之一.shell 提示看起来类似你熟悉的其它命令行界面.用户在 shell 提示下键入命令,shell 解释这些命令,然后告诉 OS该怎么做.有经验的用户可以编写 shell 脚本来进一步扩展这些功能.要打开shell,可在启动后的窗口中,单击屏幕左下角的即主菜单,选择系统工具/终端即可进入shell.还可以右击桌面并从菜单中选择新建终端来启动 shell.Shell的界面如下:要退出 shell 提示,点击 shell 提示窗口右上角的X按钮,或在提示中键入 exit,或按 Ctrl-D.Linux系统中可以使用的she

16、ll有:bash:Bourne Again Shell.由GNU自由软件基金会开发.是Linux系统中最常用的shell,也是Red Hat Linux9x中默认的shell.合乎POSIX标准且与Bourne Shell兼容,提供了编辑命令行的功能.csh:c shell.由Berkeley开发,与Bourne Shell在交互式使用上很多是兼容的,但在程序设计界面上却有很大的不同.不提供命令行编辑功能.ksh:Korn Shell.在UNIX系统下得到普遍应用,提供了命令行编辑功能.sh:Bourne Shell.是原始的shell,不提供命令行编辑功能.tcsh:c shell的加强版,

17、提供了命令行编辑功能.zsh:z shell.最新的shell,与Bourne Shell兼容,提供了命令行编辑功能.六、Linux系统文件、目录和权限Linux文件名没有标准格式.通常文件名可以包含任何字符/ 字符除外, 字符不能作为文件名的第一个字符,文件名的长度限制在256个字符以内.Linux文件名也提供了强大的通配符:l 星号*:可以匹配任何字符串.l 问号?:可匹配任何单个字符.Linux系统中文件的权限有3种l Read权限:可以读取文件内的数据.l Write权限:可以改变或删除该文件.l Execute9权限:可以把该文件当成程序执行.拥有root口令的用户称为超级用户,超级

18、用户有权访问整个系统,包括建立普通#、修改口令、安装与卸载软件等.超级用户的提示符为#,普通用户的提示符为$.在Linux文件系统根目录下,有如下子目录:bin、dev、etc、home、install、lib、mnt、proc、root、tem、user、var./bin目录:该目录中存放许多基本的系统程序./dev目录:该目录中存放的是设备驱动程序,用来访问系统设备和资源./home目录:用户主目录,存放各用户的子目录.七、加载USB存储设备1.在插入U盘或硬盘之前,以超级用户的身份,在命令行窗口运行:fdisk -l 命令,系统将显示目前所能识别到的硬件存储设备;即:# fdisk -l

19、显示内容如:sdasda1sda2sdbsdb1sdb2等信息,其中,sda与sdb表示目前系统有两个硬盘,后面带有数字表示各个硬盘下的各区目录;硬盘或存储设备一般都是以sd开头.2.插入U盘或硬盘,再次运行fdisk -l 命令,系统将再次显示目前所能识别到的硬件存储设备,比较两次输出的不同,将发现第二次运行时会增加一些内容;系统将在原来的基础上增加显示:sdc,等内容,表示新插入的U盘或移动硬盘是挂靠在系统的sdc下.3.运行mount命令,如:#mkdir /mnt/usb 在mnt下建立usb自己起的子目录名子目录#mount t vfat /dev/sdc /mnt/usb4.运行完

20、毕,可以直接在/mnt/usb目录下,使用U盘或移动硬盘若要显示U盘或移动硬盘中的中文文件名,可加参数o,即:可输入如下命令#mount t vfat /dev/sdc /mnt/usbo iocharset=gb23125.断开U盘或移动硬盘之前,运行umount命令,保证数据不会造成丢失,命令如下:#umount /dev/sdc共5个步,即1、用root#登录;2、mkdir /mnt/usb;注:创建挂载目录3、mount /mnt/sda1 /mnt/usb;4、现在就可以使用U盘了,在/mnt/usb目录下的内容就是U盘里的内容了;5、使用完后,用以下命令卸载U盘即可.#umoun

21、t /mnt/usb第2章 Linux系统的Shell命令一、目录管理命令1、建立目录命令mkdir格式:mkdir 目录名1 目录名2 常用的选项有-m,指定目录的模式,即访问权限,用3位八进制数字跟在后面表示.例:$mkdir d1 d2 d3在当前目录下建立了3个子目录,名字分别为d1、d2、d3$mkdir d4 m 775在当前目录下建立名为d4的目录,访问权限为775,即该目录的所有者和同组用户有读、写和执行这个目录的权限,其他用户有读和执行权限.2、删除目录rmdir格式:rmdir目录名1 目录名2 该命令一次可以删除多个目录,删除目录时要求目录为空.另外,Linux系统还提供

22、了rm命令删除目录和文件.Rm名令常用的选项有:-f:如果文件不存在则忽略,并且不提示.-r:递归地删除目录下的内容,rm只有加了这个参数才可以删除目录.3、改变工作目录cd改变工作目录命令与PC-DOS的改变工作目录命令一样.注意,当转到别的用户目录时,能执行的操作取决于该用户赋予的权利.格式:cd 路径名当不给出路径名时,cd命令的执行就转到用户的注册目录home中,即由环境变量$HOME指定的目录,否则,转到按路径名指定的目录.例如:$cd d1进入到当前目录下的d1目录中$cd /home/y/d2按路径名转到d2目录下.$cd 转到y目录下.指定路径时,可以使用相对路径,也可以用绝对

23、路径,这一点和PC-DOS一样.注:要转到某个目录时,必须对那个目录有执行权,否则出错.4、确定当前目录所在的位置pwd格式:pwd例如:$pwd/home/y/d1当前目录路径为:/home/y/d15、列出某目录下的内容ls该命令与PC-DOS中的dir命令类似,列出目录下的各文件名.格式:ls 选择项常用的选择项有:-l:按长格式列出每个文件的全部属性信息.-a:列出所有的文件名,包括以.开始的隐含文件.-s:对每个文件按块给出大小.-i:在第1列给出每个文件的i节点号.-t:按文件最后修改时间排序列出.-R:列出包括子目录下的文件名.6、目录、文件改名和移动目录、文件mv格式1:mv

24、源目录名 目标目录名功能:如果目标目录不存在,则将源目录名改为目标目录名.如果目标目录名已经存在,则将源目录移到目标目录之下,作为它的子目录.此时要求使用该命令的用户对目标目录有写权限.格式2:mv 源文件名 目标文件名功能:将源文件名改为目标文件名.格式3:mv 文件名1 文件名2 目录名功能:将文件1 文件2 传送到指定的目录中.常用的选项有:-f:如果目标文件存在,则覆盖目标文件而不提示.-u:只复制目标中不存在的文件或更新过的文件.7、复制目录或文件cpcp命令既可以复制目录也可以复制文件格式1:cp 选择项 源目录名目标目录名功能:将一个或多个源目录中的文件复制到目标目录下.格式2:

25、cp 选择项 源文件名 目标文件名功能:把一个文件复制到另一个文件中.格式3:cp 选择项 文件名1 文件名2 目录名功能:把一个或多个文件复制到一目录中.说明:1当源目录或源文件为多个时,各目录名或各文件名之间用空格分开.2将一个文件复制到目录时,该目录必须是可写的,否则复制失败.当把一个文件复制到另一个文件时,若目标文件已经存在,则覆盖之,但覆盖文件的所有者的存取权限保持不变.常用的选择项有:-i:当目标已经存在时,在覆盖之前,先提示是否覆盖;-f:如果目标文件存在,则覆盖目标文件而不提示;-r:递归地复制源目录到目标目录;-u:只复制目标中不存在的文件或者更新过的文件;-R:递归地复制当

26、前目录与子目录下的文件;-p:复制时保持文件的属性;-d:复制时保持关系;8、显示目录所占磁盘空间的大小du格式:du 选择项 目录名常用的选择项有:-a:递归地显示所有目录下的文件占用的空间;-h:以可读形式列出各文件大小;-s:只显示该目录的大小,目录中的各文件占用的空间不显示二、文件管理1、显示文件内容命令1连接和显示文件cat格式1:cat 文件1 文件2功能:连续显示各文件的内容.各文件之间没有标志也没有空行.格式2:catfile1功能:建立一个文件名为file1的文件.用ctrl+d组合键结束文件的输入.格式3:cat 文件1 文件2文件3功能:将文件1和文件2的内容写到文件3中

27、.格式4:cat文件1 文件2文件3功能:将文件1和文件2的内容附加到文件3的末尾.2分屏显示文件内容more格式:more 选择项 文件1 文件2如果一屏显示不完,按空格键可以显示下一屏的内容.随时按q键退出该命令.常用的选择项有:+行号:从文件的指定行号开始显示.+/字符串:从文件中指定的字符串前两行开始显示.-s:把文件中的多个空行压缩成一个空行.2、删除文件命令格式:rm 选择项 文件名1 文件名2常用的选择项有:-f:如果文件不存在则忽略,并且删除前不提示.-r:递归地删除目录下的内容,只有加了该参数才可以删除目录.3、统计文件中的行、字和字符数wc格式:wc 选择项 文件名常用的选

28、择项有:-l:只对指定文件中的行进行统计.-w:只对指定文件中的字进行统计.-c:只对指定文件中的字符进行统计.如果没有选择项,wc的统计顺序为,先统计行,再统计字,然后统计字符.最后给出被统计的文件名.三、其它1、检查磁盘剩余空间2、echo格式:echo -n word/string此命令把每个单词或字符串写入shell的标准输出.四、变量和参数在shell程序中,共有6种类型的变量1、变量的定义定义变量的格式:变量名=表达式用$可以取得变量的值,如:$num为num的值.2、位置变量位置变量是在调用shell程序的命令行中按照确定的位置决定的变量.位置变量用来存储Shell程序后面所跟的

29、参数.第一个参数存储在变量1中,第二个参数存储在变量2中,依次类推.在程序名之后输入的每个参数之间用空格分隔.$0是当前该命令文件的名字.例如,编写一个Shell程序reverse,执行时带两个参数.输出时,将两个参数的位置颠倒.reverse的内容为:#program reverse, prints the command line parameters out in reverse orderecho $2 $1在Shell下执行此Shell程序:reverse hello there其输出为:there hello3、shell预定义变量有些变量在执行Shell程序时系统就设置好了,并且

30、不能加以修改:$# 存储运行Shell程序时输入的位置参数的个数.$? 存储上一个执行命令的返回值.$* 存储从第一个位置参数开始的所有位置参数的内容.$ 存储所有命令行输入的参数,分别表示为$ 1,$ 2 . . . .$ 存储当前执行进程的进程标识PID.$! 存储上一个后台执行命令的进程标识PID.五、运算符和表达式Shell中的运算符包括运算符 描述 示例 文件运算符 -e filename 如果 filename存在,则为真 -e /var/log/syslog -d filename 如果 filename为目录,则为真 -d /tmp/mydir -f filename 如果 f

31、ilename为常规文件,则为真 -f /usr/bin/grep -L filename 如果 filename为符号,则为真 -L /usr/bin/grep -r filename 如果 filename可读,则为真 -r /var/log/syslog -w filename 如果 filename可写,则为真 -w /var/mytmp.txt -x filename 如果 filename可执行,则为真 -L /usr/bin/grep filename1-nt filename2 如果 filename1比 filename2新,则为真 /tmp/install/etc/serv

32、ices -nt /etc/services filename1-ot filename2 如果 filename1比 filename2旧,则为真 /boot/bzImage -ot arch/i386/boot/bzImage 字符串比较运算符 请注意引号的使用,这是防止空格扰乱代码的好方法 -z string 如果 string长度为零,则为真 -z $myvar -n string 如果 string长度非零,则为真 -n $myvar string1= string2 如果 string1与 string2相同,则为真 $myvar = one two three string1!=

33、 string2 如果 string1与 string2不同,则为真 $myvar != one two three 算术比较运算符 num1-eq num2 等于 3 -eq $mynum num1-ne num2 不等于 3 -ne $mynum num1-lt num2 小于 3 -lt $mynum num1-le num2 小于或等于 3 -le $mynum num1-gt num2 大于 3 -gt $mynum num1-ge num2 算术运算符:- +-*/%大于或等于负号 加号减号 乘号 除号 取余 3 -ge $mynum - 3 3 + 5 8 3 2 * 3 6 /

34、 2 5 % 2 在脚本程序中可以用运算符将运算对象连接起来构成的式子称为表达式.六、shell控制语句1、if语句格式1:if 条件表达式 then 命令序列 fi格式2:if 条件表达式 then 命令序列 else 命令序列 fi格式3:if 条件表达式 then 命令序列 elif 条件表达式 then 命令序列 else 命令序列 fi格式4:if test 条件表达式 then 命令序列 elif test 条件表达式 then 命令序列 . else 命令序列 fi说明:1格式1、格式2、格式3中的和两侧要留有空格2格式4中的不属于if语句中的符号,只在本格式中说明中的内容可以重

35、复出现多次.2、for循环语句 格式1:for 变量 in 值表do命令表done格式2: for 变量 in 文件正则表达式do命令表done其执行过程是,变量的值依次取当前目录下或给定目录下与正则表达式相匹配的文件名,每取值一次,就进入循环体执行命令表,直至所有匹配的文件名取完为止,退出for循环. 格式3: for i in $* 或者for i do do命令表 命令表done done这两种形式是等价的.其执行过程是,变量i 依次取位置参数的值,然后执行循环体中的命令表,直至所有位置参数取完为止.3、while循环语句格式:while条件表达式 do命令表done其执行过程是,先进行

36、条件测试,如果结果为真,则进入循环体, 执行其中命令;然后再做条件测试直至测试条件为假时才终止while语句的执行.4、until语句格式:until 条件表达式do命令表done它与while语句很相似,只是测试条件不同:当测试条件为假时,才进入循环体,直至测试条件为真时终止循环.5、break语句和continue语句break语句可以使我们从循环体中退出来.格式: break n 其中,n表示要跳出几层循环.默认值是1,表示只跳出一层循环. continue语句跳过循环体中在它之后的语句,回到本层循环的开头,进行下一次循环.格式: continue n 其中,n表示从包含continue

37、语句的最内层循环体向外跳到第几层循环.默认值为1.循环层数是由内向外编号. 6、case语句case语句允许进行多重条件选择.格式:case 字符串 in模式字符串1 命令序列1;模式字符串2 命令序列2;模式字符串n 命令序列n;esac其执行过程是用字符串的值依次与各模式字符串进行比较,如果发现同某一个匹配,那么就执行该模式字符串之后的各个命令,直至遇到两个分号为止.如果没有任何模式字符串与该字符串的值相符合,则不执行任何命令.在使用case语句时应注意:1每个模式字符串后面可有一条或多条命令,其最后一条命令必须以两个分号结束.2模式字符串中可以使用通配符.3 如果一个模式字符串中包含多个

38、模式,那么各模式之间应以竖线|隔开,表示各模式是或的关系,即只要给定字符串与其中一个模式相配,就会执行其后的命令表.4各模式字符串应是惟一的,不应重复出现.并且要合理安排它们的出现顺序.例如,不应将*作为头一个模式字符串,因为*可以与任何字符串匹配,它若第一个出现,就不会再检查其它模式了.5case语句以关键字case开头,以关键字esac结束.6case的退出返回值是整个结构中最后执行的那个命令的退出值.若没有执行任何命令,则退出值为零.7、expr语句 虽然shell并不精于数值计算,但还是提供了有关的计算语句.格式:expr 表达式1 表达式2 表达式中只允许整数,合法的运算符有+、-、

39、*、/和%取余,在*乘号和/除号之前必须冠以反斜杠,以防这些运算符由expr获得之前被shell解释.例如:$expr 3 * 5 + 2 / 2 16注意:运算符两侧要留有空格.8、read语句利用read语句命令可以从键盘上读取数据,然后赋给指定的变量格式:read 变量1 变量2 例如:read x y z输入数据时,数据间以空格或制表符作为分隔符.如果变量个数与给定数据个数相同,则依次对应赋值;如果变量个数少于数据个数,则从左至右对应赋值,但最后一个变量被赋予剩余的所有数据;如果变量个数多于给定数据个数,则依次对应赋值,而没有数据与之对应的变量取空串.9、举例例1 从控制台接收用户输入

40、,并在标准输出设备上显示结果echo Are you girl?please answer Y or Nread sexif $sex = Y ;thenecho Hello girl!echo How are you!else echo Hello boy!echo How do you do!fiecho ABCexit 0例2 echo Are you girl?please answer Y or Nread sexif test $sex = Ythen echo Hello girl!elif test $sex= Nthen echo Hello boy!else echo so

41、rry,$sex not recognized,please entey Y or Nexit 1fiexit 0例3 for day in Mon Tue Wed Thu Fri Sat Sundoecho $daydone其执行过程是,变量day依次取值表中各字符串,即第一次将Mon赋给day,然后进入循环体,执行其中的命令,显示出Mon.第二次将Tue赋给day,然后执行循环体中命令,显示出Tue.依次处理,当day把值表中各字符串都取过一次之后,下面day的值就变为空串,从而结束for循环.因此,值表中字符串的个数就决定了for循环执行的次数.在格式上,值表中各字符串之间以空格隔开.例

42、4 while $1 doif -f $1 then echo display : $1 cat $1else echo $1 is not a file name . fishiftdone这段程序对各个给定的位置参数,首先判断其是否是普通文件,若是,则显示其内容;否则,显示它不是文件名的信息.每次循环处理一个位置参数$1,利用shift命令可把后续位置参数左移. 测试条件部分除使用test命令或等价的方括号外,还可以是一组命令.根据其最后一个命令的退出值决定是否进入循环体执行.例5 编写一个简单的删除程序#name: del#author: liangnian#this program t

43、o compress a file to the dustbinif test $# -eq 0 thenecho Please specify a file! elsegzip $1 /先对文件进行压缩mv $1.gz $HOME/dustbin /移动到回收站echo File $1 is deleted !fi10、Shell脚本的建立和执行1Shell脚本的建立Shell程序可以存放在文件中,这种被Shell解释执行的命令文件称为Shell脚本 .Shell脚本可以包含任意从键盘键入的Linux命令.建立Shell脚本的步骤同建立普通文本文件的方式相同,利用任何编辑器如vi进行程序录入

44、和编辑加工.例如,要建立一个名为ex1的Shell脚本,可在提示符后输入命令:$ viex1 进入vi的插入方式后,就可录入程序行.完成编辑之后,将编辑缓冲区内容写入文件中,返回到Shell命令状态.2执行Shell脚本格式:$ bash脚本名参数 例如:$ bashex1 /usr/meng/usr/zhang Shell从文件ex1中读取命令行,并执行它们.当Shell到达文件末尾时就终止执行,并把控制返回到Shell命令状态.若有参数,则将参数值传递给程序中的命令,使一个Shell脚本可以处理多种情况,就如同函数调用时可根据具体问题给定相应的实参.第3章 Linux系统调用函数简介1、f

45、ork:创建一个新进程格式:int fork其中返回int值的意义如下: 0:创建子进程,从子进程返回0:从父进程返回,返回值为子进程的进程标识符-1:创建失败2、vfork:创建一个新进程格式:int vfork其中返回int值的意义如下:0:创建子进程,从子进程返回0:从父进程返回,返回值为子进程的进程标识符-1:创建失败vfork和fork不同之处在于:在fork调用中,子进程复制父进程的数据区作为自己的数据区,能够继承已有的资源,从而对数据的操作不再影响父进程.vfork函数在创建子进程后,先于父进程运行,父进程被阻塞,在子进程调用exec或exit之前,子进程与父进程共享数据段,此时

46、可对父进程的数据进行操作.3、execv:运行可执行文件格式:int execv其中返回int值的意义如下:0:正确返回-1:错误返回当一个进程调用execv函数执行另一个程序后,这个进程被新程序取代,包括代码段、数据段、堆栈段等等,并继承原进程的进程标识符.从自己的main函数开始执行.新程序使用原进程的进程标识符和进程控制表里的一部分信息. 该函数要用到unistd.h头文件,即在程序中要有#include4、wait:进程的等待Wait函数常用来控制父进程与子进程的同步.在父进程中调用wait函数,则父进程被阻塞,进入等待队列,等待子进程结束.当子进程结束时,会产生一个终止状态字,系统会

47、向父进程发出SIGCHLD信号.当接收到信号后,父进程提取子进程的终止状态字,从wait返回继续执行原程序.该函数适用的头文件如下:#include#include函数格式:pidt waitint *statloc子进程ID:正确返回 0:其他 -1:错误返回可以使用系统提供的宏来获得子进程终止时的信息,这些宏定义在sys/wait.h头文件中,具体含义如下:WIFEXITEDstatus:子进程正常终止,返回真.WEXITSTATUSstatus:如果WIFEXITED返回真,则该宏返回子进程的exit码.WIFSIGNALEDstatus:子进程非正常终止,返回真.WTERMSIGsta

48、tus:如果WIFSIGNALED返回真,则该宏返回引起子进程终止的信号值.WIFSTOPPEDstatus:子进程已结束,返回真.WSTOPSIGstatus:如果WIFSTOPPED返回真,则该宏返回引起子进程结束的信号值.5、waitpid如果父进程创建了多个子进程同时在运行,则父进程中wait函数会捕获它任一个子进程的结束信号,而无法让它确定地去捕获某一个进程的结束信号.Waitpid函数则解决了这个问题.该函数适用的头文件如下:#include#include函数格式:pidt waitpidpidt pid,int *statloc,int options子进程ID:正确返回 0:

49、其他 -1:错误返回参数pid的值决定要求父进程等待的不同特征的子进程,含义如下:0:与父进程组ID相同的子进程.0:进程ID为pid的子进程.-1:任意子进程.此时与wait函数功能相同.-1:进程组ID为pid绝对值的子进程.Statloc所指的地址用于存放子进程的终止状态字.Options控制waitpid的执行,常用的参数如WNOHANG:若waitpid函数没得到指定子进程的结束信号,则立即返回零,不会阻塞.6、exit:结束进程 进程结束最常用的方法是调用exit函数,在main函数中调用的return,最终也是调用exit,这些都属于进程的正常终止.该函数适用的头文件如下:#in

50、clude函数格式:void exitint statusStatus为进程结束状态.在子进程调用exit后,子进程的结束状态会返回给系统内核,由内核根据状态字生成终止状态,供父进程在wait或waitpid函数中读取.如果子进程结束后,父进程还没有读取子进程的终止状态,则系统就将子进程的状态置为ZOMBIE,并保留子进程的进程控制块,里面记录着进程标识符、终止状态字、CPU时间等信息,等父进程读取信息后,系统才彻底释放子进程的进程控制块.7、msgget:获得一个消息的描述符,该描述符指定一个消息队列以便用于其他系统调用.该函数适用的头文件如下:#include#include#includ

51、e函数格式:int msgget keyt key; int flag ;消息队列的标识符:正确返回 -1: 错误返回Key是键值,这个键值要与已有的键值进行比较,已有的键值指在内核中已存在的其他消息队列键值.当key的值为IPCPRIVATE时,创建一个新的消息队列;当key的值不为IPCPRIVATE时,对消息队列的打开或存取操作依赖于flag参数的取值.8、msgsnd:发送一条消息给一个消息队列该函数适用的头文件如下:#include#include#include函数格式:int msgsnd int id,size,flag; struct msgbuf* msgp;消息队列的标识

52、符:正确返回 -1:错误返回其中:id是返回消息队列的标识符;msgp是指向用户存储区的一个构造体指针,size指示由msgp指向的数据结构中字符数组的长度,即消息队列的长度;flag规定当核心用尽内部缓冲空间时应执行的动作;若在标志flag中未设置IPCNOWAIT位,则当该消息队列中的字节数超过一最大值时,或系统范围的消息数超过某一最大值时,则调用进程将被阻塞,进入等待队列;若设置IPCNOWAIT,msgsnd立即返回.9、msgrcv:从消息队列中接受消息,将该消息拷贝到消息缓冲区中,返回拷贝的字节数.该函数适用的头文件如下:#include#include#include函数格式:i

53、nt msgsndint id,size,type,flag; struct msgbuf* msgp;接收到消息缓冲区的字节数:正确返回 -1:错误返回其中,id指定要接收的消息队列;msgp是存放消息的消息缓冲区的地址指针;size是消息缓冲区的大小;type是用户要读的消息类型,取值有三种:1type0:查找消息队列中与该类型相匹配的第一条消息. 2type=0:接收该队列的第一个消息.3type0:接收小于或等于type绝对值的最低类型的第一个消息.flag的含义同上一个函数,如果值为IPCNOWAIT,并且没有可取的消息,则带错返回调用进程.否则,调用进程阻塞进入阻塞队列,直到一条消

54、息到达队列并且满足接收条件.10、lockf:用于锁定文件的某些段或者整个文件.本函数的头文件为#include unistd.h函数格式:int lockfint files,mode;long size;其中:files是文件描述符;mode是锁定和解锁:1表示锁定,0表示解锁.size是锁定或解锁的字节数,为0,表示从文件的当前位置到文件尾.第4章 屏幕编辑程序vi简介Vi是UNIX/Linux系统自带的功能强大的可视化的编辑器.一、 进入和退出vi1、 在Linux提示符下键入vi 文件名即可启动viVi有以下3种工作模式:1命令行模式:进入vi时处于命令模式.输入某些编辑命令后可对文

55、本进行编辑.2文本输入模式:在命令模式下,按下a键,进入追加方式,以后输入的字符插入在光标的右边;按下i键,进入插入方式,以后输入的字符插入在光标的左边;按下r键,进入覆盖方式,以后输入的字符覆盖光标处的字符.3最后行模式:在文本输入模式下,按ESC键,结束输入模式,再输入冒号:就进入最后行模式了,还可以使用?键和/键进入最后行模式.2、要退出vi,先按下ESC键,退出输入模式,再键入冒号:,此时光标会停留在最下面一行,即进入最后行模式,再按q键,按回车键即可.例如:上一章列举的shell脚本程序都可以用vi建立.在shell提示符$下键入:vi ex2.sh ,回车,可进入vi,按i键后,可

56、输入脚本程序内容.也可以用vi建立c语言程序,在shell提示符$下,键入vi 程序名.c,回车,可进入vi,按i键后,可输入c语言程序内容了.二、命令模式和文本输入模式下的主要操作命令命令模式和文本输入模式提供了较多的按键和组合键来执行命令,以帮助用户编辑文件.由于这些命令较多,这里只作简单介绍.1、移动光标命令可以利用键盘上的上左右箭头键来移动光标到指定的位置,还可以用一般的键来移动光标.h :光标左移一个字符l :光标右移一个字符space:光标右移一个字符Backspace:光标左移一个字符k或Ctrl+p:光标上移一行j或Ctrl+n:光标下移一行w或W :光标右移一个字至下一个字的

57、字首b或B :光标左移一个字至前一个字的字首e或E :光标右移到当前字的字尾nG:光标移至第n行首n+:光标下移n行n-:光标上移n行n$:光标移至第n行尾H :光标移至屏幕顶行M :光标移至屏幕中间行L :光标移至屏幕最后行0:注意是数字零光标移至当前行首$:光标移至当前行尾2、屏幕翻滚类命令Ctrl+u:向文件首翻半屏Ctrl+d:向文件尾翻半屏Ctrl+f:向文件尾翻一屏Ctrlb:向文件首翻一屏nz:将第n行滚至屏幕顶部,不指定n时将当前行滚至屏幕顶部.3、插入文本类命令i :在光标前插入文本I :在当前行首插入文本a:光标后插入文本A:在当前行尾插入文本o:在当前行之下新开一行O:在当前行之上新开一行r:替换当前字符R:替换当前字符与其后的字符,直至按ESC键s:从当前光标位置处开始,以输入的文本替代指定数目的字符S:删除指定数目的行,并以所输入文本代替之ncw或nCW:修改指定数目的字nCC:修改指定数目的行4、删除命令ndw或ndW:删除光标处开始与其后的n-1个字do:删至行首d$:删至行尾ndd:删除当前行与其后n-1行x或X:删除一个字符,x删除光标后的,而X删除光标前的Ctrl+u:删除输入方式下所输入的文本5、搜索与替换命令/字符串:从光标开始处向文件尾搜索

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!