linuxb编程-实验二

更新时间:2023-11-03 15:51:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

试验编号: _01_

四川师大 实验报告 2010 年 9月

18日

计算机科学学院 2008 级3 班

姓名:余乐坤 学号:2008110359 指导老师: 实验成绩:

实验二 Shell编程试验

1. 目的要求

(1) 熟悉Shell环境和常用功能;

(2) 掌握Shell基本语法结构,并能编写简单的Shell程序。 (3) 独立完成Shell课程设计——CD Manager 2. 实验内容

(1) 命令补齐功能

? 用date命令查看系统当前时间,在输入da后,按tab键,让shell自动补

齐命令的后半部分。

? 用mkdir命令创建新的目录。首先输入第一个字母m,然后按tab键,由

于以m开头的命令太多,shell会提示是否显示全部的可能命令,输入n。

? 再多输入一个字母k,按tab键,让shell列出以mk开头的所有命令的列

表。

? 在列表中查找mkdir命令,看看还需要多输入几个字母才能确定mkdir这

个命令,然后输入需要的字母,再按tab键,让shell补齐剩下的命令。

? 最后输入要创建的目录名,按回车键执行命令。 ? 多试几个命令利用tab键补齐。 (2) 命令别名功能

? 输入alias命令,显示目前已经设置好的命令的别名。 ? 设置别名ls为ls –l,以长格形式显示文件列表:#alias ls=?ls -l‘。 ? 显示别名ls代表的命令,确认设置生效:#alias ls。 ? 使用别名ls显示当前目录中的文件列表。 ? 在使定义的别名不失效的情况下,使用系统的ls命令显示当前目录中的命

令列表:#\\ls。

? 删除别名ls:unalias ls。 ? 显示别名ls,确认删除别名已经生效:alias ls。 ? 最后再用命令ls 显示当前目录中的文件列表。 ? 写出定义别名cd为cd /etc的命令 alias cd='cd /etc' 。 (3) 输出重定向

? 用ls命令显示当前目录中的文件列表:#ls –l。

使用输出重定向,把ls命令在终端上显示的当前目录中的文件列表重定向到文件list中:ls –l > list。

? 查看文件list中的内容,注意在列表中会多出一个文件list,其长度为0。这

说明shell是首先创建了一个空文件,然后再运行ls命令:cat list。

? 再次使用输出重定向,把ls命令在终端上显示的当前目录中的文件列表重

定向到文件list中。这次使用管道符号>>进行重定向:ls –l >> list。

? 查看文件list的内容,可以看到用>>进行重定向是把新的输出内容附加在

文件的末尾,注意其中两行list文件的信息中文件大小的区别:cat list。

? 重复命令 ls –l > list。 ? 再次查看文件list中的内容,和前两次的结果相比较,注意list文件大小

和创建时间的区别,完成课后第一题。

(4) 输入重定向

? 使用输入重定向,把上面生成的文件list用mail命令发送给自己: mail root

< list。

? 查看新邮件,看看收到的新邮件中其内容是否为list文件中的内容。 (5) 管道

? 利用管道和grep命令,在上面建立的文件list中查找字符串list: cat list

| grep list。

? 利用管道和wc命令,计算文件list中的行数、单词数和字符数:#cat list | wc。 ? 查看和修改Shell变量 ? 用echo命令查看环境变量PATH的值:#echo $PATH。 ? 设置环境变量PATH的值,把当前目录加入到命令搜索路径中去:#PATH

=―$PATH:.‖。

? 用echo命令查看环境变量PATH的值:#echo $PATH。 ? 比较前后两次的变化。 (6) 简单的shell程序

? 习题1:使用Vi将程序menu.sh程序补充完善。 #!/bin/bash

echo \cat<<-ENDIT

#[N]ew a file #[E]dit a file #[D]elete a file #[Q]uit ENDIT read choice

case \

N) echo \ read value

touch $value ;;

E) echo \ read value

?

vi $value ;;

D) echo \ read value

rm $value ;;

Q) TERM=quit

echo \ ;; Esac

思考:执行程序,写出程序的执行结果。

______________________________________________________________________通过选项可以新建,删除 ,编辑文件和退出。

______________________________________________________________________________________________________________________________________ ?

习题2:变量替换(在横线上为语句添加相应的解释)

#!/bin/bash # 打开bash shell解析器 # This is the first Bash shell program of the day. # Scriptname: greetings

# Written by: Barbara Bashful

echo \ # 打印出包括登录名的欢迎字符串 echo \ # 提示当前路径 echo \ # 显示当前机器的节点名字 ls # List files in the present working directory # 显示当前路径包含的文件 echo \ # 显示当前时间和用户名 思考:执行程序,写出程序的执行结果。

______________________________________________________________________

___________________________________________________________________________________________________ ?

习题3:位置变量的设定及使用(在横线上为语句添加相应的解释)

# !/bin/bash

# Scriptname: args

# Script to test command-line arguments

echo The name of this script is $0. #显示当前程序的名称

echo The arguments are $*. #显示传递给程序的所有参数 echo The first argument is $1. #显示第一个参数 echo The second argument is $2. #显示第二个参数 echo The number of arguments is $#. #显示参数个数

oldargs=$* #将参数一字符串的形式赋值给变量oldargs set Jake Nicky Scott # 将Jake Nicky Scott设置为参数变量 echo All the positional parameters are $*. #打印出当前新的所有变量 echo The number of positional parameters is $#. #显示新变量的个数 echo \–bye for now, $1.\ # 向Jake说拜拜 set $(date) #将当前时间设置为参数变量 echo The date is $2 $3, $6. #打印出月,日,时的信息 echo \ #打印出oldargs的值 set $oldargs # 将oldargs的值重新设置为参数变量 echo $1 $2 $3 #显示新的前三个参数变量 思考:执行程序,写出程序的执行结果。__

______________________________________________________________________________________________ ?

习题4:深入理解let 命令的用法。比如我们可以用+=、(())等方式来实现运算符,并在横线上写明运算结果

(1)$ i=5

$let i=5 i=5 (2)$ let i=i+1

$ echo $i 6

(3)$ let \

$ echo $i 8 (4)$ let \ $ echo $i 16 (5)$ i=3 $ (( i+=4))

$ echo $i 7 $ (( i=i-2 ))

$ echo $i 5

?

习题5:命令替换,通过位置变量的方式来实现一个平方的操作—do_square.sh,请在横线上解释相应运行结果

#!/bin/bash

# Scriptname: do_square function square {

local sq # sq is local to the function let \

echo \ echo \

} 函数功能: 计算参数的平方 echo \read number

value_returned=$(square $number) 。

echo \ 输出结果: number 的平方 ?

习题5:阅读下列脚本expr.sh,写出其完成的功能是: 计算1加到100的值

#!/bin/sh NO=100 START=1 SUM=0

echo -n \-n do not output the trailing newline// while [ $NO -gt 0 ] do

SUM=`expr $START + $SUM` START=`expr $START + 1` NO=`expr $NO - 1` done

本文来源:https://www.bwwdw.com/article/v4o2.html

Top