第一范文网 - 专业文章范例文档资料分享平台

linuxb编程-实验二

来源:用户分享 时间:2025/6/15 6:40:24 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

试验编号: _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

搜索更多关于: linuxb编程-实验二 的文档
linuxb编程-实验二.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c95olg7anm24qfr016rnh_1.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top