
linux课程设计(学生版).doc
25页Linux操作系统基础课程设计参考文档Linux操作系统基础课程设计 I第 1章 Shell 脚本编程 11-1 Shell 命令行书写规则 11-2 编写/修改权限及执行 Shell 程序的步骤 11-3 在 Shell 程序中使用的参数 31-4 在 Shell 程序中的使用变量 51-5 表达式的比较 81-6 循环结构语句 151-7 条件结构语句 191-8 在 Shell 脚本中使用函数 211-9 在 Shell 脚本中调用其他脚本 22Linux操作系统基础课程设计1、(必做)使用虚拟机VMware安装linux系统(1)把一个10G的硬盘进行合理分区,其中有有安装系统的区域,有存放数据的区域,并创建合理的交换分区文件2)加载第2块硬盘(8G),该硬盘分为3个分区,1个主分区(2G)和2个逻辑分区(分别为3G)3)新建目录/mnt/ljp1,/mnt/ljp2,把第2块硬盘的逻辑分区1和逻辑分区2分别挂载到/mnt/ljp1和/mnt/ljp2(要求系统启动后可以自动挂载分区)2、(必做)在根目录下有四个文件 m1.txt,m2.txt,m3.txt,m4.txt,用 Shell 编程,实现自动 创建 m1,m2,m3,m4 四个目录,并将 m1.txt,m2.txt,m3.txt,m4.txt 四个文件分别拷贝到各自相应的目录下。
3、(必做)编写一个 Shell 程序,用户输入1个数字,实现如下功能:(1)计算从1到用户输入数字的和1+2+3+…n)(2)计算从1到用户输入数字的所有奇数数字的和1+3+5…)4、(必做)编写一个 Shell 程序,实现如下功能:(1). 当运行一个程序的时候,这个程序会让使用者选择 Y 或 N ;(2)如果使用者输入 Y 或 y 时,就显示『 OK, continue 』(3)如果使用者输入 n 或 N 时,就显示『 Oh, interrupt !』(4)如果不是 Y/y/N/n 之内的其他字节,就显示『 I don't know what your choice is 』(利用中括号、 && 与 || 来实现)5、(必做)某系统管理员需每天做一定的重复工作,请按照下列要求,编制一个解决方案:(1)在下午 4 :50 删除/abc 目录下的全部子目录和全部文件;(2)从早 8:00~下午 6:00 每小时读取/xyz 目录下 x1 文件中每行第一个域的全部数据加入 到/backup 目录下的 bak01.txt 文件内;(3)每逢星期一下午 5:50 将/data 目 录 下 的所 有 目 录 和 文 件 归档 并 压 缩 为 文 件 :backup.tar.gz;(4)在下午 5:55 将 IDE 接口的 CD-ROM 卸载(假设:CD-ROM 的设备名为 hdc);(5)在早晨 8:00 前开机后启动。
注:使用计划任务cron来实现)6、(选做)使用者输入一个文档名,做出以下判断:(1). 这个文件是否存在,若不存在则给予一个“Filename does not exist”的信息,并中断程序;(2). 若这个文件存在,则判断他是个文件或目录,结果输出“Filename is regular file”或“Filename is directory”;(3). 判断一下,运行者的身份对这个文件或目录所拥有的权限,并输出权限数据!(注意利用 test 与 && 还有 || 等标志!)7、(选做)撰写一支程序,他的作用是:1.) 先查看一下 /root/test/logical 这个名称是否存在;2.) 若不存在,则创建一个文件,使用 touch 来创建,创建完成后离开; 3.) 如果存在的话,判断该名称是否为文件,若为文件则将之删除后创建一个目录,档名为 logical ,之后离开; 4.) 如果存在的话,而且该名称为目录,则移除此目录!8、(选做)(任选其一)(1)编写一个 Shell 程序,键盘输入两个数及+、-、*、与/中的任一运算符,计算这两个数的运算 结果2)编写 4 个函数分别进行算术运算+、-、*、/,并编写一个菜单,实现运算命令。
9、(选做)编写一个 Shell 程序,呈现一个菜单,有 0-5 共 6 个命令选项,1 为挂载 U 盘,2 为 卸载 U 盘,3 为显示 U 盘的信息,4 把硬盘中的文件拷贝到 U 盘,5 把 U 盘中的文件拷贝到硬盘 中,选 0 为退出程序分析:把此程序分成题目中要求的 6 大功能模块,另外加一个菜单显示及选择的主模板第 1章 Shell 脚本编程l Shell 命令行的运行l 编写、修改权限和执行 Shell 程序的步骤l 在 Shell 程序中使用参数和变量l 表达式比较、循环结构语句和条件结构语句l 在 Shell 程序中使用函数和调用其他 Shell 程序1-1 Shell 命令行书写规则u Shell 命令行的书写规则对 Shell 命令行基本功能的理解有助于编写更好的 Shell 程序,在执行 Shell 命令时多个命 令可以在一个命令行上运行,但此时要使用分号(;)分隔命令,例如:[root@localhost root]# ls a* -l;free;df长 Shell 命令行可以使用反斜线字符(\)在命令行上扩充,例如:[root@localhost root]# echo “this is \>long command”This is long command注意:“>”符号是自动产生的,而不是输入的。
1-2 编写/修改权限及执行 Shell 程序的步骤u 编写 Shell 程序u 执行 Shell 程序Shell 程序有很多类似 C 语言和其他程序设计语言的特征,但是又没有程序语言那样复杂 Shell 程序是指放在一个文件中的一系列 Linux 命令和实用程序在执行的时候,通过 Linux 操 作系统一个接一个地解释和执行每条命令首先,来编写第一个 Shell 程序,从中学习 Shell 程序的编写、修改权限、执行过程1-2-1 编辑 Shell 程序编辑一个内容如下的源程序,保存文件名为 date,可将其存放在目录/bin 下[root@localhost bin]#vi date#! /bin/shecho “Mr.$USER,Today is:”echo &date “+%B%d%A”echo “Wish you a lucky day !”注意:#! /bin/sh 通知采用 Bash 解释如果在 echo 语句中执行 Shell 命令 date,则需要在 date命令前加符号“&”,其中%B%d%A 为输入格式控制符1-2-2 建立可执行程序编辑完该文件之后不能立即执行该文件,需给文件设置可执行程序权限。
使用如下命令[root@localhost bin]#chmod +x date1-2-3 执行 Shell 程序执行 Shell 程序有下面三种方法: 方法一:[root@localhost bin]#./ dateMr.root,Today is:二月 06 星期二Wish you a lucky day !方法二:另一种执行 date 的方法就是把它作为一个参数传递给 Shell 命令:[root@localhost bin]# Bash dateMr.root,Today is:二月 06 星期二Wish you a lucky day !方法三:为了在任何目录都可以编译和执行 Shell 所编写的程序,即把/bin 的这个目录添加到整个 环境变量中具体操作如下: [root@localhost bin]#. dateMr.root,Today is:二月 06 星期二Wish you a lucky day !实例 1-1:编写一个 Shell 程序 mkf,此程序的功能是:显示 root 下的文件信息,然后建立一个 kk 的文件夹,在此文件夹下建立一个文件 aa,修改此文件的权限为可执行。
分析:此 Shell 程序中需要依次执行下列命令为:进入 root 目录:cd /root显示 root 目录下的文件信息:ls –l新建文件夹 kk: mkdir kk进入 root/kk 目录:cd kk新建一个文件 aa: vi aa #编辑完成后需手工保存 修改 aa 文件的权限为可执行:chmod +x aa回到 root 目录:cd /root因此该 Shell 程序只是以上命令的顺序集合,假定程序名为 mkf[root@localhost root]#vi mkf cd /rootls –l mkdir kk cd kkvi aachmod +x aa cd /root1-3 在 Shell 程序中使用的参数u 位置参数u 内部参数如同 ls 命令可以接受目录等作为它的参数一样,在 Shell 编程时同样可以使用参数Shell程序中的参数分为位置参数和内部参数等1-3-1 位置参数由系统提供的参数称为位置参数位置参数的值可以用$N 得到,N 是一个数字,如果为 1, 即$1类似 C 语言中的数组,Linux 会把输入的命令字符串分段并给每段进行标号,标号从 0 开 始。
第 0 号为程序名字,从 1 开始就表示传递给程序的参数如$0 表示程序的名字,$1 表示传 递给程序的第一个参数,以此类推1-3-2 内部参数上述过程中的$0 是一个内部变量,它是必须的,而$1 则可有可无,最常用的内部变量有$0、$#、$?、$*,它们的含义如下l $0:命令含命令所在的路径l $1: 传递给程序的第1个参数l $2: 传递给程序的第2个参数以此类推)l $#:传递给程序的总的参数数目l $?:Shell 程序在 Shell 中退出的情况,正常退出返回 0,反之为非 0 值l $*:传递给程序的所有参数组成的字符串l $$:当前进程的进程号实例 1-2:编写一个 Shell 程序,用于描述 Shell 程序中的位置参数为:$0、$#、$?、$*,程序名为 test1,代码如下:[root@localhost bin]#vi test1#! /bin/shecho “Program name is $0”;echo “There are totally $# parameters passed to this program ”;echo “The last is $?”;echo “The parameter are $*”;执行后的结果如下:[root@localhost bin]# test1 this is a test program //传递 5 个参数Program name is /bin/test1 //给出程序的完整路径和名字There are totally 5 parameters passed to 。












