您的当前位置:首页正文

实验2 Linux shell编程

2021-08-11 来源:步旅网
实验2Linux Shell程序设计

学生姓名:付沪豪学号: 6103114091专业班级:计科143班

一.实验目的

熟悉Linuxshell编程的方法

二.实验内容

Linux Shell中的位置参数、命令替换、输入、控制语句、函数等操作

三.实验环境

PC微机

Windows 操作系统

四.实验步骤

1.读懂下面shell程序,说明其功能,对比分析测试结果

#! /bin/sh

for lib in lib{gmp,mpfr,mpc}.la; do echo $lib: $(

if find /usr/lib* -name $lib | grep -q $lib; then : ; else

echo not; fi ) found; done; unset lib

功能分析: 利用for循环依次将libgmp.la,libmpfr.la,libmpc.la赋值给lib变量然后利用find命令/usr/的目录下找有没有libgmp.la,libmpfr.la,libmpc.laz这三个库文件,有的话则输出文件名 found ,否则 not found。最后unset删除变量$lib

程序执行结果如下:

由上图结果可知libgmp.la,libmpfr.la,libmpc.la均不在/usr/目录下。

2.读懂下面shell程序,说明其功能,对比分析测试结果

#! /bin/sh

export LC_ALL=C

bash --version | head -n1 | cut -d\" \" -f2-4 echo \"/bin/sh -> `readlink -f /bin/sh`\"

echo -n \"Binutils: \"; ld --version | head -n1 | cut -d\" \" -f3- bison --version | head -n1 if [ -h /usr/bin/yacc ] then

echo \"/usr/bin/yacc -> `readlink -f /usr/bin/yacc`\" elif [ -x /usr/bin/yacc ] then

echo yacc is `/usr/bin/yacc -V | head -n1` else

echo \"yacc not found\" fi

bzip2 --version 2>&1 < /dev/null | head -n1 | cut -d\" \" -f1,6- echo -n \"Coreutils: \"; chown --version | head -n1 | cut -d\")\" -f2 diff –‘

find --version | head -n1 gawk --version | head -n1 if [ -h /usr/bin/awk ]; then

echo \"/usr/bin/awk -> `readlink -f /usr/bin/awk`\"; elif [ -x /usr/bin/awk ]; then

echo yacc is `/usr/bin/awk --version | head -n1` else

echo \"awk not found\" fi

gcc --version | head -n1 g++ --version | head -n1

ldd --version | head -n1 | cut -d\" \" -f2- # glibc version grep --version | head -n1 gzip --version | head -n1 cat /proc/version

m4 --version | head -n1 make --version | head -n1 patch --version | head -n1 echo Perl `perl -V:version`

sed --version | head -n1 tar --version | head -n1

makeinfo --version | head -n1 xz --version | head -n1

echo 'main(){}' > dummy.c && g++ -o dummy dummy.c if [ -x dummy ]; then

echo \"g++ compilation OK\"; else

echo \"g++ compilation failed\"; fi

rm -f dummy.c dummy

功能分析:这个脚本是环境检查脚本,会检查各个工具和内核版本号并判断是否存在,如果不存在的话就报not found,存在的话就按脚本的要求显示信息 执行结果如下:

注:

由结果我们发现bison gawk m4 makeinfo等不存在故报出了not found。我们可以用sudo apt-get install命令安装即可。

(如果要进行构建自己的linux系统,上述操作是要先做来检查环境的)

2.测试课本实例2.9,代码见附件

执行main函数出现以下界面:

选择1-usb function则进入usb脚本(mount功能,成功挂载)

选择2-compression:(简单压缩)

选择3-Edit操作:(选择Edit的功能中的1号功能显示文件的属性)

选择4-时间操作(显示当前时间)

选择5-search操作:(下图选择了部分查找的功能)

五.实验报告和要求

按照实验步骤要求完成本实验后,对实验结果截图,完成实验报告,给出六.

实验总结

实验结果大致和自己的分析一样,中途做到本实验的第二个shell脚本的时

候能看懂大致功能,但是好奇为什么要编写这个这种脚本(这个脚本的功能是什么),所以在网上查询了一点资料了解到这是一个大概的环境检查脚本,一般是当动手打造自己的个性linux的过程中最首先做的一件事情。于是我好奇的去查询了应该编写属于自己的个性linux。当我大概了解了LFS的大致过程,有点蠢蠢欲动以后有机会自己也要试试.书上代码2.9的测试就是在usb操作选项漏掉了一个括号也是致命的问题。

因篇幅问题不能全部显示,请点此查看更多更全内容