学生姓名:付沪豪学号: 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操作选项漏掉了一个括号也是致命的问题。
因篇幅问题不能全部显示,请点此查看更多更全内容