Linux操作系统期末复习题SWJTU绝对珍贵附答案版

上传人:wen****ng 文档编号:140538736 上传时间:2022-08-23 格式:DOC 页数:20 大小:1.57MB
收藏 版权申诉 举报 下载
Linux操作系统期末复习题SWJTU绝对珍贵附答案版_第1页
第1页 / 共20页
Linux操作系统期末复习题SWJTU绝对珍贵附答案版_第2页
第2页 / 共20页
Linux操作系统期末复习题SWJTU绝对珍贵附答案版_第3页
第3页 / 共20页
资源描述:

《Linux操作系统期末复习题SWJTU绝对珍贵附答案版》由会员分享,可在线阅读,更多相关《Linux操作系统期末复习题SWJTU绝对珍贵附答案版(20页珍藏版)》请在装配图网上搜索。

1、第一部分:上机作业:第二部分:一、填空1软件提供的三种模式商业软件、共享(试用)软件、自由软件。2Linux发行遵循GNU 的通用公共许可证(GPL),其目标是保持和 POSIX 标准兼容.3Posix表示可移植操作系统接口,其目的是是为了提高UNIX环境下应用程序的可移植性。4目前linux主要应用在软件供应商、学术界及ASP、ISP、ICP公司。5目前linux发行版本主要有Debian、Red Hat、Slackware、Openlinux、Blue Point、Red Flag、Xteam Linux、Debian、Suse。6Linux内核具有两种版本号,分别是:实验版本、产品化版本

2、,这样区分的优点 可以方便广大软件人员加入到Linux的开发和测试工作中来,另一方面又可以让一些用户使用上稳定的Linux版本。7操作系统功能可以分为文件系统管理、处理器管理、内存管理、 设备管理、网络管理五大部分(子系统)。8操作系统的体系结构是软件内部结构配置的一种抽象描述。通常操作系统可划分为模块结构、层次结构、对象结构三种结构,linux属于 模块结构。9根据Eric Raymond的观点,他将linux内核的开发模式称为 集市模式,而将传统软件的开发模式称为教堂模式。二、填空1Linux安装过程中通常至少要创建根分区和交换分区两个分区。2系统安装完成后,用dd命令制作启动软盘的完整命

3、令是:# dd if=bootnet.img of=/dev/fd0 bs=1440k 。3/dev/hda表示第一个IDE硬盘, /dev/hda6表示第一个IDE硬盘上第六个主分区或扩展分区。4Linux采用的启动管理器有 LILO和 GRUB两种;对应的配置文件的名称分别是/etc/lilo.conf和/boot/Grub/menu.lst(或grub.conf)。三填空1Linux采用ext2或ext3作为其默认文件系统的。 2Linux中的五种基本文件类型分别是普通文件、目录文件、设备文件、链接文件、管道文件。3Linux系统中文件权限分别赋予文件拥有者、拥有者所在用户组、其他用户组

4、三类用户,每类用户权限用三位表示,分别是 读(r)、写(w)、执行(x)。4Linux中改变文件权限的命令是chmod;改变文件所有者的命令是chown;改变文件所属组的命令是chgrp。5Linux采用链接法方法实现文件共享,这样方法产生的文件又可分为硬链接和符号链接两种。两种文件的各自特点硬链接文件和源文件指向同一个i节点;符号链接文件为指向文件的路径。6Linux下拷贝文件的命令是cp,移动一个文件在目录树中的位置的命令是mv,删除一个文件的命令是rm。7Linux下显示文件内容的命令有cat、more、less、head、tail、od。8在linux shell中 表示 输出重定向,

5、表示 追加输出改向,表示 输入重定向,表示 本地文档重定向(追加输入改向)。 四填空1进程是指一个具有一定独立功能的程序关于某个数据集合的一次运行活动,一个完整的进程包括程序、执行程序所需要的数据、记录进程状态的动态数据资料(进程映像)三部分,描述Linux进程数据结构的文件是/include/linux/sched.h。2进程的三个基本状态等待状态、就绪状态、执行状态,Linux将执行、就绪分为运行态,而将等待状态分为可中断等待状态、不可中断的等待态两种状态。3Linux的调度启动命令有at、cron、batch,$at f /tmp/print job 2100 12/25/04的含义为:

6、在04年12月25日21:00执行/tmp/print job中的作业。4ps命令的功能是查看系统进程,top命令的作用是显示系统当前的进程和其它状况。5Linux提供的进程通信机制有信号、管道、消息队列(msg)、共享内存(shm)、信号量(sem)种。五问答:1说明Linux操作系统的调度机制。Linux采用两级调度,用户作业进入内存,直接参与交换调度或进程调度。进程和线程采用同样的表示和管理方式,也使用同样的调度函数。Linux采用请求页式内存动态管理方法,根据进程执行的实际需要分配内存页面并换入内容,同时使用内核交换进程kswapd按照记龄(aging)置换算法来实现页面淘汰功能,内核

7、交换进程周期性地执行。Linux用简单的函数实现了三种进程调度算法,虽然不十分完美,但高效,可适用于大多数情况。222222222222解释Linux系统的虚拟文件系统VFS整体结构;目录结构,Inode结构!VFS整体结构:VFS采用超级块和i节点来描述文件系统,这些数据结构在文件系统初始化过程中,由具体逻辑文件系统的超级块和i节点的数据来填充。而当文件系统关闭时,VFS的超级块和i节点也就消失了。目录结构:整个Linux文件系统形成一个完整的目录树,每一个逻辑文件系统都可作为一个独立子树安装到目录树的某枝节点上。VFS超级块中用指针s-root记录着该文件系统在根文件系统目录树的信息,使用

8、指针s-dev记录指向该逻辑文件系统(设备号).或者:Linux系统中,目录也是文件的一种,称为目录文件,每一个目录也由一个i节点来描述,i节点中文件类型标识这是一个目录文件,同时在对应的索引表(物理块)中存放用来描述文件的目录项列表。目录项列表用来描述一个目录所包含的全部文件和子目录,每一个目录项对应着一个文件或目录。Inode结构:1、VFS inode包含文件访问权限、属主、组、大小、生成时间、访问时间、最后修改时间等信息。它是linux管理文件系统的最基本单位,也是文件系统连接任何子目录、文件的桥梁。inode结构中的静态信息取自物理设备上的文件系统,由文件系统指定的函数填写,它只存在

9、于内存中,可以通过inode缓存访问。虽然每个文件都有相应的inode结点,但是只有在需要的时候系统才会在内存中为其建立相应的inode数据结构,建立的inode结构将形成一个链表,我们可以通过遍历这个链表去得到我们需要的文件结点,VFS也为已分配的inode构造缓存和哈希表,以提 高系统性能。EXT2 inode用来定义文件系统的结构以及描述系统中每个文件的管理信息,每个文件都有且只有一个inode,即使文件中没有数据,其索引结点也是存在的。每个文件用一个单独的Ext2 inode结构来描述,而且每一个inode都有唯一的标志号。Ext2 inode为内存中的inode结构提供了文件的基本信

10、息,随着内存中inode结构的变化,系统也将更新Ext2 inode中相应的内容。Ext2 inode对应的是Ext2_inode结构。33333333333333解释Ext2文件系统结构?给出一个文件名,系统是如何找到文件内容的?系统结构:i节点和超级块是Ext2文件系统最关键结构。其中:i节点:用来描述各种类型的文件,是整个文件系统的基本(/include/linux/ext2_fs.h)超级块:是描述整个文件系统的重要数据。组描述符也是描述文件系统块组分布和使用情况的主要数据。(/include/linux/ext2_fs.h)线性检索法:以下步骤:1)系统读入根索引节点(1),从文件地

11、址项查找根目录文件所在物理块号读入内存。2)将磁盘第2个inode读入内存,找出bin目录文件所在物理块号并将它读入内存。3)将磁盘第10号节点读入内存,从中判断ls文件所在的物理块号。4)目录查询操作到此结束,如果顺序查找过程中发现一个文件分量名未能找到,则停止查找并送回“文件未找到”信息。44444444444444掌握Linux下进程创建的函数fork和vfork。fork函数:创建子进程,具体调用如下: #include #include Pid_t fork(viod) 正确返回:父进程返回子进程的进程号,子进程返回0。 错误返回:-1子进程是父进程的一个拷贝。子进程从父进程那里得到

12、数据段和堆栈段的拷贝。由于父子进程的运行顺序无关。故运行结果的先后顺序不定,若要求父子进程运行顺序一定,要采用进程间通讯机制。若父进程将标准输出重定向到某一文件,子进程也将标准输出重定向到同一文件。Fork函数调用的主要用途有两个: a、一个进程希望复制自身,从而父子进程能同时执行不同的代码。b、进程想执行另外一个进程。vfork函数Vfork函数作用基本类似于fork,调用流程与返回值与fork函数完全相同。但它们的语义不同。a、用vfork创建新进程的主要目的在于用exec函数执行另外的进程(如fork函数的第二个用途)。目的:提高效率。b、vfork中子进程先运行,父进程挂起,直至子进程

13、执行exec或exit,此后父子进程执行次序无限制。555555555555555掌握rpm,tar,gzip命令的使用方法。RPM软件包管理程序的使用 A) 安装软件包: rpm -ivh 软件包.rpm 可选参数说明:-v显示安装的软件包的名称 -i 安装软件-t (-test) 测试安装,不是真的安装-nodeps 安装前不执行软件包依赖性检查。不推荐使用-force 强制安装一个软件包 -h 打印50个“#”符号,与-v合用 如 rpm -ivh telnet-server-0.17-25.i386.rpm B) 删除软件包 rpm e 软件包.rpm 可通过rpm -qa |egre

14、p软件包.rpm 查看是否安装了此软件包 错误信息:. is needed by . 可加-nodeps,但不推荐使用 如 rpm -ev telnet-server-0.17-25.i386.rpm (先要停止Telnet服务)C) 升级软件包 rpm Uvh 软件包.rpm 自动删除相应软件包的老版本,若配置文件同新版本不兼容,自动将其保存为oldconfig.rpmsave文件. D) 查询软件包 rpm q 软件包(名称) 具体可使用如下特定参数 rpm ql 列出包中所有文件(包括配置/文档文件) rpm qs 列出包中所有文件的状态 rpm qd 列出包中所有的文档文件 rpm q

15、c 列出包中所有的配置文件 rpm qa 列出系统中安装的所有软件包 rpm qa|grep “telnet” 查询系统中包含telnet的rpm包 或 rpm qi telnet rpm -qf filename 查询包含该文件的软件包 E) 校验软件包 可校验文件大小、MD5校验码、文件权限、类型及属主等信息。 rpm V 软件包.rpm 检查校验该软件包中的文件是否存在 rpm Vf /bin/vi 校验软件包中的单个文件 rpm Va 校验安装的所有软件包 rpm Vp 软件包.rpm 比较一个源软件包和已经安装的软件包 1) tar命令 tar 可以为文件和目录创建档案。语法: ta

16、r 主选项+辅选项 tar文件 目录 主选项: c 创建新的档案文件。 r 把要存档的文件追加到档案文件的未尾。 t 列出档案文件的内容,查看已经备份了哪些文件。 u 更新文件。即用新增的文件取代原备份文件。 x 从档案文件中释放文件。 f 使用档案文件或设备,这个选项通常是必选的。辅助选项: b 该选项是为磁带机设定的。其后跟一数字,用来说明区块的大小,系统预设值为20(20*512 bytes)。 k 保存已经存在的文件。如在还原文件的过程中,遇到相同的文件,不会进行覆盖。 m 还原文件时,把所有文件的修改时间设定为现在。 M 创建多卷的档案文件,以便在几个磁盘中存放。 v 详细报告tar

17、处理的文件信息。如无此选项,tar不报告文件信息。 z 用gzip来压缩/解压缩文件,加上该选项后可以将档案文件进行压缩。例1:把/home目录下包括它的子目录全部做备份文件,备份文件名为usr.tar。 $ tar cvf usr.tar /home例2:把/home目录下包括它的子目录全部做备份文件,并进行压缩,备份文件名为usr.tar.gz 。 $ tar czvf usr.tar.gz /home例3:把这个备份文件还原并解压缩。例4:查看usr.tar备份文件的内容,并以分屏方式显示在显示器上。 $ tar tvf usr.tar | more要将文件备份到一个特定的设备,只需把设

18、备名作为备份文件名。例5:j在/dev/fd0的软盘中创建一个备份,并将/home中所有的文件都拷到备份中。 $ tar cf /dev/fd0 /home k要恢复设备磁盘中的文件,可使用xf选项: $ tar xf /dev/fd0 l创建一个多卷的tar备份文件。当使用M选项向一个软驱进行存档时,tar命令在一张软盘已满的时候会提醒您再放入一张新的软盘。 $ tar cMf /dev/fd0 /home2) gzip命令 减少文件大小可以减少存储空间;通过网络传输文件时,可以减少传输的时间。gzip是经常使用的一个对文件进行压缩和解压缩的命令。 语法: gzip 选项 压缩(解压缩)的文

19、件名 各选项含义: -c 将输出写到标准输出上,并保留原有文件。 -d 将压缩文件解压。 -l 对每个压缩文件,显示下列字段:压缩文件的大小,未压缩文件的大小,压缩比,未压缩文件的名字。 -r 递归查找指定目录并压缩或解压缩其中的所有文件。 -t 测试,检查压缩文件是否完整。-v 对每个压缩和解压的文件,显示文件名和压缩比。 -num 用指定的数字num调整压缩的速度,1或-fast表示最快压缩方法(低压缩比),9或-best表示最慢压缩方法(高压缩比)。系统缺省值为6。 例1:把/home目录下的每个文件压缩成.gz文件。 $ gzip /home* 例2:把例1中压缩的文件解压,并列出详细

20、的信息。 $ gzip -dv * 例3:压缩一个tar备份文件,如usr.tar,此时压缩文件的扩展名为.tar.gz $ gzip usr.tar66666666666掌握shell变量的定义与使用,会编写简单的关于文件操作的shell程序。777777777777掌握linux下gcc,g+,gdb,make应用程序的作用和基本使用。gcc 能够编译三种语言:C、C+ 和 Object C ,利用 gcc 命令可同时编译并连接 C 和 C+ 源程序。也可对几个 C 源文件利用 gcc 编译、连接并生成可执行文件。例:gcc -o factorial main.c factorial.cg

21、cc 只编译 C+ 源文件,不能自动和 C+ 程序使用的库连接。因此,通常使用 g+ 命令来完成 C+ 程序的编译和连接。例:g+ -o hello hello.C 。make 工具来自动完成编译工作。gdb为GNU的调试器,是一个交互式工具,工作在字符模式。可完成如下的调试任务:设置断点; 监视程序变量的值; 程序的单步执行; 修改变量的值。 88888888888解释Linux进程的概念、状态及转换、进程间通信方式以及task_struct结构。进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。一个完整进程包括程序、执行程序所需要的数据以及记录进程状态的动态数据资料等待状态、

22、就绪状态和执行状态是一个进程所具有的最基本的三种状态。Linux系统的版本进程共有六种状态,包括:运行状态、可中断等待状态、不可中断等待状态、僵死状态、暂停状态和交换状态。版本中取消了交换状态,加入独占状态。进程的整个生命周期中,大致的转换路径总是沿着三个闭合回路进行:第一个回路: 由就绪状态和执行状态形成。第二个回路: 由执行状态、等待状态和就绪状态形成第三个回路: 执行状态、暂停状态和就绪状态构成退出: 处于执行状态的进程调用退出函数exit之后,进程就会进入僵死状态。进程间通信。两种方式:低级通信:互相发送少量的控制信息,一般只传递一个或者几个字节的数据,进程利用这些简单的信息,实现互斥

23、和同步,控制运行速度。高级通信:基本不涉及进程执行速度控制,用来在进程之间传递大量的信息,由于这种通信方式主要用于交换信息。因此,在开发本地进程间通信的同时,也为远程进程间的通信、网络程序的开发及控制奠定了基础。Linux系统的PCB用一个称为task-struct的结构体来描述(/include/linux/sched.h中)。其中信息可分为:(1) 进程描述信息(2) 进程控制信息(3) 进程资源信息(4) CPU现场信息99999999999掌握Linux下用户账号管理,文件权限管理,环境变量的定义,和网络相关的配置文件和应用程序。账户一般分为三种:普通用户账户系统管理账户系统账户1)

24、账户的信息存储在/etc/passwd文件中2) /etc/shadow系统包含一个/etc/passwd 的同伴文件/etc/shadow。该文件只对root用户可读,且包含加密的密码信息。3) /etc/group文件定义了 Linux 系统上所有的组. 使用adduser添加普通用户账户,必须以root登录。2)添加用户组向/etc/group文件添加新组,语法: groupadd -g gid mygroup;gid 一般是500以上。也可用命令删除,语法如下:userdel -r login加上 -r 参数将删除用户主目录及其创建的文件Linux系统的/etc/passwd文件含有系

25、统中每个用户的信息(加密后的口令存于/etc/shadow文件中)。crypt命令可提供给用户以加密文件。网络文件配置1、 /etc/conf.modules 文件该配置文件定义了各种需要在启动时加载的模块的参数信息。2、/etc/hostname 文件 该文件包含系统的主机名称,完全的域名,3、/etc/sysconfig/network-scripts/ifcfg-ethN文件 在RedHat中,系统网络设备的配置文件保存在/etc/sysconfig/network-scripts目录下,ifcfg-eth0包含第一块网卡的配置信息,ifcfg-eth1包含第二块网卡的配置信息。4、/e

26、tc/resolv.conf 文件 该文件是由域名解析器使用的配置文件5、/etc/host.conf 文件 该文件指定如何解析主机名。6、/etc/sysconfig/network 文件该文件用来指定服务器上的网络配置信息,10掌握文件系统安装表,VFS超级快,文件系统类型注册表的基本结构以及关系。文件系统安装表记录着整个系统中当前可使用(已安装)的全部文件系统,是操作系统访问具体存储设备上文件系统的入口。文件系统类型注册表记录着整个系统当前所支持的全部文件系统类型。文件系统安装表、VFS超级块和文件系统类型注册表之间的关系11掌握文件系统、进程系统、系统管理的基本命令使用方法。$ cp

27、- i exam1.c /usr/wang/shiyan1.c 若不希望重新命名,可以使用下面的命令: $ cp exam1.c /usr/ wang/例1:将/usr/xu中的所有文件移到当前目录中: $ mv /usr/xu/ * .例2:将文件wch.txt重命名为wjz.doc $ mv wch.txt wjz.doc$ rm -i test example显示文件内容命令cat命令:2、more命令 3、less命令 4、head命令 用head命令只显示文件或标准输入的头几行。 语法:head - n 文件 5、tail命令 若用户想查看文件的尾部,可使用tail命令。 语法:ta

28、il + / - num 参数 文件 6、od命令 od命令查看特殊格式的文件内容。通过指定该命令的不同选项可以以十进制、八进制、十六进制和ASCII码来显示文件。 语法:od 选项 文件 各选项含义: - A 指定地址基数,包括: d 十进制 o 八进制(系统默认值) x 十六进制 n 不打印位移值 文件内容查询命令(1) 1、grep、fgrep 和 egrep命令例1:grep命令在文件example中搜索模式“text file”。$ grep text file example例2:搜索并显示所有包含goto语句的代码行: $ grep goto *.c例3:从文件mypats中读取

29、要搜索的模式。 $ cat mypats editor create $ grep -f mypats exam2、find命令例1:查找当前目录中所有以main开头的文件并显示这些文件的内容。 $ find . - name main* - exec more ;例2:删除当前目录下所有一周之内没有被访问过的 a .out或*.o文件。 $ find . (- name a.out - o - name *.o)- atime +7 - exec rm ;说明:(和)表示括号( ),其中“”称为转义符。 “- name a.out”是指要查找名为a.out的文件;“- name *.o”是指

30、要查找所有名字以.o结尾的文件。两个- name间- o表示逻辑或or,即查找名字为a.out或名字以.o结尾的文件。 find在当前目录及其子目录下找到这样的文件后,再进行判断,看其最后访问时间是否在7天以前(条件atime +7),若是,则对该文件执行命令 rm(- exec rm ;)。代表当前查到的符合条件的文件名;是语法要求的。3、locate命令例如:查找相关字df命令 :检查文件系统的磁盘空间占用情况。du命令du 为“disk usage”缩写,统计目录(或文件)所占磁盘空间的大小。dd命令 把指定的输入文件拷贝到指定的输出文件中,且在拷贝过程中可进行格式转换。例1:要把一张软

31、盘的内容拷贝到另一张软盘上: $ dd if =/dev/fd0 of = /tmp/tmpfile $ dd if = /tmp/tmpfile of =/dev/fd0Sort命令 语法:sort 选项 文件 。说明:对文件中所有的行进行排序。例2 以第2个字段作为排序关键字对文件example的内容进行排序。 $ sort +1-2 example 例3 对于file1和file2文件内容反向排序,结果放在outfile中,利用第2个字段的第一个字符作为排序关键字 $ sort -r -o outfile +1.0 -2.1 file1 file2 例4 sort排序常用于在管道中与其它

32、命令连用,组合完成比较复杂的功能,如利用管道将当前工作目录中的文件送给sort进行排序,排序关键字是第6个至第8个字段。 $ ls - l | sort +5 - 7uniq命令说明:该命令读取输入文件,并比较相邻的行。例1 显示文件 example中不重复的行。 $ uniq - u example 例2 显示文件 example中不重复的行,从第2个字段的第2个字符开始做比较。 $ uniq - u - 1 +1 examplewc命令说明:该命令统计给定文件中的字节数、字数、行数。例1:$ wc - lcw file1 file2 4 4 33 file1 4 7 52 file211

33、11 85 totalComm命令语法:comm - 123 file1 file2说明:该命令是对两个已经排好序的文件进行比较。$ comm -12 myfile1 myfile212了解Linux系统启动相关的文件以及功能。考试题型:填空,选择,命令解释,问答;程序阅读与设计;Linux下shell编程入门(1)通常情况下,我们从命令行输入命令每输入一次就能够得到系统的一次响应。一旦需要我们一个接着一个的输入命令而最后才得到结果的时候,这样的做法显然就没有效率。要达到这样的目的,通常我们利用shell程序或者shell脚本来实现。 一、简介 Shell编程有很多类似C语言和其他程序语言的特

34、征,但是又没有编程语言那样复杂。Shell程序就是放在一个文件中的一系列Linux命令和实用程序,在执行的时候,通过Linux一个接着一个地解释和执行每个命令。 下面我们来看一个简单的shell程序:1、首先建立一个内容如下的文件,名字为date,将其存放在目录下的bin子目录中。#Program date#usageto :show the date in this way (注释)echo “Mr.$USER,Today is:”echo date “+%B%d%A”echo “Whish you a lucky day !”2、编辑完该文件之后它还不能执行,我们需要给它设置可执行权限。使

35、用如下命令:chmod +x date 通过以上过程之后,我们就可以像使用ls命令一样执行这个shell程序.beichenlocalhost bin$ dateMr.beichen,Today is:January 13 FridayWhish you a lucky day ! 为了在任何目录里都可以执行这个程序,可以将bin的这个目录添加到路径中去。beichenlocalhost bin$ PATH=$PATH: $HOME/bin(注:这里的$HOME代替的是/home/beechen,而bin目录是自己建的一个目录) 另外一种执行date的方法就是把它作为一个参数传给shell命令

36、:beichenlocalhost /$ bash dateMr.beichen,Today is:January 13 FridayWhish you a lucky day ! 尽管在前面我们使用chmod +x date将date设置为可执行,其实不设置也没有关系,但在Linux里执行它,需要先告诉系统它是一个可执行的脚本。beichenlocalhost /$ .dateMr.beichen,Today is:January 13 FridayWhish you a lucky day ! 即在date前面加上一个点”.”,并且用空格与后面的shell脚本的文件名隔开。当然,不推荐这样

37、做。二、shell参数 如同ls 命令可以接受目录等作为它的参数一样,在shell编程时同样可以使用参数。Shell有位置参数和内部参数。1、位置参数 由系统提供的参数称为位置参数。位置参数的值可以用$N得到,N是一个数字,如果为1,即$1.类似C语言中的数组,Linux会把输入的命令字符串分段并给每段进行标号,标号从0开始。第0号为程序名字,从1开始就表示传递给程序的参数。如$0表示程序的名字,$1表示传递给程序的第一个参数,以此类推。2、内部参数 上述过程中的$0是一个内部变量,它是必须的,而$1则可有可无。和$0一样的内部变量还有以下几个。$#-传递给程序的总的参数数目$?-上一个代码或

38、者shell程序在shell中退出的情况,如果正常退出则返回0,反之为非0值。$*-传递给程序的所有参数组成的字符串。下面举例进行说明:建立一个内容为如下的程序P1:echo “Program name is $0”echo “There are totally $# parameters passed to this program”echo “The last is $?”echo “The parameters are $*”执行后的结果如下:beichenlocalhost bin$ P1 this is a test program /传递5个参数Program name is /h

39、ome/beichen/bin/P1 /给出程序的完整路径和名字There are totally 5 parameters passed to this program/参数的总数The last is 0 /程序执行结果The parameters are this is a test program/返回有参数组成的字符串下面我们利用内部变量和位置参数编写一个名为del的简单删除程序:#name: del#author: liangnian#this program to compress a file to the dustbinif test $# -eq 0 thenecho “P

40、lease specify a file!” elsegzip $1 /先对文件进行压缩mv $1.gz $HOME/dustbin/移动到回收站echo “File $1 is deleted !”fi=part1=三、变量表达式 在上面我们编写的小程序中我们用到了一个关键字test,其实它是shell程序中的一个表达式比较(test)。通过和shell提供的if等条件语句(后面我们会介绍)相结合我们可以方便的完判断。 其用法如下: test 表达式 表达式所代表的操作符有字符串操作符、数字操作符、逻辑操作符以及文件操作符。其中文件操作符是一种shell独特的操作符,因为shell里的变量都

41、是字符串,为了达到对文件进行操作的目的,于是才提供了这样的一种操作符。1、 字符串比较作用:测试字符串是否相等、长度是否为零,字符串是否为NULL(注:bash区分零长度字符串和空字符串)常用的字符穿操作符有:= 比较两个字符串是否相同,同则为“是”!= 比较两个字符串是否相同,不同则为“是”-n 比较字符串长度是否大于零,如果大于零则为“是”-z 比较字符串的穿度是否等于零,如果等于则为“是”2、 数字比较这里区别于其他编程语言,test语句不使用、=类似的符号来表达大小的比较,而是用整数式来表示这些。-eq相等-ge大于等于-le 小于等于-ne 不等于-gt 大于-lt 小于3、 逻辑操

42、作!反:与一个逻辑值相反的逻辑值-a与(and):两个逻辑值为“是”返回值才为“是”,反之为“否”-o或(or):两个逻辑值有一个为“是”,返回值就为“是”4、 文件操作文件测试表达式通常是为了测试文件的信息,一般由脚本来决定文件是否应该备份、复制或删除。由于test关于文件的操作符有很多,我们只列举一些常用的。-d对象存在且为目录返回值为“是”-f对象存在且为文件返回值为“是”-L对象存在且为符号连接返回值为“是”-r对象存在且可读则返回值为“是”-s对象存在且长度非零则返回值为“是”-w对象存在且可写则返回值为“是”-x 对象存在且可执行则返回值为“是”file1 nt(-ot) file

43、2文件1比文件2新(旧)四、循环结构语句shell常见的循环语句有for循环、while循环、until循环1. for 循环语法:for 变量 in 列表 do 操作 done注:变量是要在循环内部用来指代当前所指代的列表中的那个对象的。列表是在for 循环的内部要操作的对象,可以是字符串也可以是文件,如果是文件则为文件名。例:删除垃圾箱中的所有.gz文件#delete all file with extension of “gz” in the dustbinfor I in $HOME/dustbin/*.gzdo rm f $i echo “$i has been deleted!”d

44、one 执行结果如下:beichenlocalhost bin$.f_rmgz/home/beichen/dustbin/nessus-.2.tar.gz has been deleted!/home/beichen/dustbin/gftp-2.2.1.tar.gz has been deleted!2. While循环语法:while 表达式 do 操作 done 只要while表达式成立,do和done之间的操作就一直会进行。3. until循环语法:until 表达式 do 操作 done 重复do和done之间的操作直到表达式成立为止。 例:#test until#add from

45、1 to 100total=0num=0until test num eq 100do total=expr $total + $num /注意,这里的引号是反引号,下同 num=expr $num+1doneecho “The result is $total” 执行结果如下:beichenlocalhost bin$untilThe result is 5050!五、条件语句 Shell程序中的条件语句主要有if语句、case语句;1. If语句语法:if 表达式1 then 操作 elif 表达式2 then 操作 elif 表达式3 then 操作 . else 操作 fi Linux

46、里的if的结束标志是将if反过来写成fi;而elif其实是else if的缩写,其中elif理论上可以有无限多个。2. Case语句语法:case 字符串 in 值1|值2) 操作: 值3|值4) 操作:值5|值6) 操作: * 操作: esac case的作用就是当字符串与某个值相同是就执行那个值后面的操作。如果同一个操作对于多个值,则使用”|”将各个值分开。在case的每一个操作的最后面都有两个”:”,分号是必须的。 例:case $USER inbeichen) Echo “You are beichen!”; liangnian) echo “You are liangnian”;/注意这里只有一个分号 echo “Welcome!”; /这里才是两个分号root) echo “You are root!:echo Welcome!”; /将两命令写在一行,用一个分号作为分隔符*)echo “Who are you?$USER?”;esac 执行结果:liangnianlocalhost bin$ testYou are liangnianWelcome! 关于shell编程基础的东西就介绍这么多,如果你想更进一步了解shell编程的知识,请查阅相关书籍

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