Linux大作业
2022/1/9 7:03:29
本文主要是介绍Linux大作业,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
2021.12
- 1. 常用命令
- 1)查看系统版本、内核版本、CPU 信息、内存信息、 显卡信息
- 2)创建文件夹/root/test,在该文件夹中创建文件test.sh,复制 test.h 到/root 下,删除文件夹/root/test
- 3)编写 crontab,使得每周六凌晨 3:00 启动备份脚本“$ backup.sh”
- 2. Shell 基础知识
- 3. Shell 编程
- 1) 编写一个 shell 脚本,输入一个奇数,打印对应行数的菱形,如输入为 5 ,则打印
- 2)编写一个shell 脚本,实现人机猜拳,计算机随机出拳 ,用户输入出拳,并打印结果
- 4. 已知有 5 个文件,main.c、eat.h、slp.h、 eat.c、slp.c,相关代码如下图 :
- (1)假设上述 5 个文件在都在当前目录(/home/zhangsan)下,请编写 makefile 文件,生成可执行文件daily
- (2)出于文件合理分类和存储的目的 , eat.h 和 slp.h 放在/home/zhangsan/include 中 , 而 main.c、eat.c、slp.c 和 makefile 文件都放在/home/zhangsan/src 下。请编写 makefile 文件以生成可执行文件 daily,并保证/home/zhangsan/bin 下存放生成的可执行文件, /home/zhangsan/obj 下存放.o 文件(备注 ,当前/home/zhangsan 下已有 bin 和 obj 两个文件夹)
1. 常用命令
1)查看系统版本、内核版本、CPU 信息、内存信息、 显卡信息
查看系统版本
源码
$ lsb_release -a $ cat /etc/redhat-release #两个指令都可以
运行结果
·本机的系统版本是:CentOS7.3.1611
内核版本
源码
$ cat /proc/version $ uname -a #两个指令都可以
运行结果
·本机的内核版本是:3.10.0-514.26.2.el7.x86_64。Linux 内核分两种:官方内核(通常是内核开发人员用)和各大Linux发行版内核(一般用户常用)。3.10.0横线后面有其他字符串表示这是发行版内核。
CPU 信息
源码
$ cat /proc/cpuinfo | grep 'model name' #本机的CPU详细信息在/proc/cpuinfo中,其完整内容过于冗长不便查看,可以通过grep命令截取我们想要的部分,如这里只读取CPU的所属的系列、型号及主频信息。
运行结果
·本机的CPU是Intel Xeon(至强)系列的Platinum 8269CY型号,主频是2.50GHz。
内存信息
源码
$ cat /proc/meminfo #通过/proc/meminfo这个动态更新的虚拟文件查看详细的内存使用情况。 $ top #看本机器上所有的进程,用于实时监测系统资源使用状况,包含进程、CPU、内存等。htop同样也行。 $ free -h #free命令是一个快速查看内存使用情况的方法,使用-h参数可以输出方便查看的结果。
运行结果
·可以看到总的物理内存为1.7G,已经被使用的内存为134M,另外被系统缓存使用的内存为1.1G,还剩余452M的空闲内存,由于系统使用的1.1G缓存可以在需要时被回收,实际可用内存为1.3G。
显卡信息
源码
$ lspci | grep -i vga #lspci可以用来列出所有的 PCI 总线,还有与 PCI 总线相连的设备的详细信息,比如 VGA 适配器、显卡、网络适配器、usb 端口、SATA 控制器等。
运行结果
2)创建文件夹/root/test,在该文件夹中创建文件test.sh,复制 test.h 到/root 下,删除文件夹/root/test
源码
pwd #ls查看当前文件路径 ls mkdir test #创建文件夹test cd test #进入test文件夹 vi test.sh #创建test.sh文件 cp ./test.sh /root #将test.sh文件复制到/root下 cd .. #回退到/root下 rm -rf test #删除test文件夹 ls #用ls指令检查test文件夹成功被删除以及test.sh文件被成功复制
运行结果
3)编写 crontab,使得每周六凌晨 3:00 启动备份脚本“$ backup.sh”
源码
crontab -e 0 3 * * 6 backup.sh #分、时、日、月、星期几。则该指令表示每周六凌晨3:00执行。
运行结果
2. Shell 基础知识
编写一个shell 脚本让系统随机生成 1 -10 范围内的整数,用户输入整数,对输入进行判断,输入大于或小于随机数都返回对应的提示,用户继续输入直到输入正确的随机数,然后显示输入的总次数。
源码
ans=$[RANDOM%10+1] #系统随机数除十取余值加1,表示选择1-10的随机数 # echo $ans read -p "请输入一个整数:" num count=0 while [ $num -ne $ans ] do if [ $num -gt $ans ] then echo "您的输入大于答案~" let count++ read -p "请输入一个整数:" num else echo "您的输入小于答案~" let count++ read -p "请输入一个整数:" num fi done let count++ echo "您猜对啦~" echo "一共猜了$count次"
运行结果
3. Shell 编程
1) 编写一个 shell 脚本,输入一个奇数,打印对应行数的菱形,如输入为 5 ,则打印
源码
read -p "请输入一个奇数:" n while [ $(($n%2)) -ne 1 ] do read -p "请输入一个奇数:" n done let n1=(n+1)/2 #上半个菱形的行数 for i in `seq 1 $n1` #上半个菱形的第i行 do let space_num=n-2*i+1 #第i行的空格数 # 打印空格 while [ $space_num -gt 0 ] do echo -n " " let space_num-- done let num=2*i-1 #第i行的*号个数 for m in `seq 1 $num` do echo -n "* " #打印*号 done echo # 每行换行 done # 下半个菱形 let n2=(n-1)/2 #下半个菱形的行数 for i in `seq 1 $n2` #下半个菱形的第i行 do let space_num=2*i #第i行的空格数 # 打印空格 while [ $space_num -gt 0 ] do echo -n " " let space_num-- done let num=n-2*i #第i行的*号个数 for m in `seq 1 $num` do echo -n "* " #打印*号 done echo done
运行结果
2)编写一个shell 脚本,实现人机猜拳,计算机随机出拳 ,用户输入出拳,并打印结果
源码
while true do read -p "请输入你的出拳(石头or剪刀or布):" input # 机器随机产生0,1,2,分别表示石头、剪刀、布 index=$[RANDOM % 3] ans_1=(石头 剪刀 布) ans=${ans_1[index]} # 输赢情况 0,1,2,3分别表示初始状态,玩家胜利,平局,玩家失败 success=0 case $input in 石头) # 玩家出石头 if [ $ans == 石头 ] # 电脑出石头 then let success=2 elif [ $ans == 剪刀 ] # 电脑出剪刀 then let success=1 else # 电脑出布 let success=3 fi ;; 剪刀) # 玩家出剪刀 if [ $ans == 石头 ] # 电脑出石头 then let success=3 elif [ $ans == 剪刀 ] # 电脑出剪刀 then let success=2 else # 电脑出布 let success=1 fi ;; 布) # 玩家出布 if [ $ans == 石头 ] # 电脑出石头 then let success=1 elif [ $ans == 剪刀 ] # 电脑出剪刀 then let success=3 else # 电脑出布 let success=2 fi ;; *) echo '你没有输入正确的猜拳姿势~' continue ;; esac echo -n "您出了$input,电脑出了$ans~" if [ $success -eq 1 ] then echo 您胜利了! elif [ $success -eq 2 ] then echo 平局! else echo 您失败了! fi done
运行结果
4. 已知有 5 个文件,main.c、eat.h、slp.h、 eat.c、slp.c,相关代码如下图 :
(1)假设上述 5 个文件在都在当前目录(/home/zhangsan)下,请编写 makefile 文件,生成可执行文件daily
makefile源码
daily:main.o eat.o slp.o gcc -o daily main.o eat.o slp.o main.o:main.c eat.h slp.h gcc -c main.c eat.o:eat.c eat.h gcc -c eat.c slp.o:slp.c slp.h gcc -c slp.c clean: rm -rf main.o eat.o slp.o daily
·可以进行代码简化。
cc = gcc prom = daily deps = $(shell find ./ -name "*.h") src = $(shell find ./ -name "*.c") obj = $(src:%.c=%.o) $(prom): $(obj) $(cc) -o $(prom) $(obj) %.o: %.c $(deps) $(cc) -c $< -o $@ clean: rm -rf $(obj) $(prom)
运行结果
(2)出于文件合理分类和存储的目的 , eat.h 和 slp.h 放在/home/zhangsan/include 中 , 而 main.c、eat.c、slp.c 和 makefile 文件都放在/home/zhangsan/src 下。请编写 makefile 文件以生成可执行文件 daily,并保证/home/zhangsan/bin 下存放生成的可执行文件, /home/zhangsan/obj 下存放.o 文件(备注 ,当前/home/zhangsan 下已有 bin 和 obj 两个文件夹)
文件结构
makefile源码
cc = gcc prom = daily deps = $(shell find ../include -name "*.h") src = $(shell find ./ -name "*.c") obj = $(src:%.c=%.o) install: all mv $(obj) ../obj mv $(prom) ../bin all: $(prom) $(prom): $(obj) $(cc) -o $(prom) $(obj) %.o: %.c $(deps) $(cc) -c $< -o $@ clean: rm -rf ../obj/*.o ../bin/*
运行结果
·make后还可clean。
这篇关于Linux大作业的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-12如何创建可引导的 ESXi USB 安装介质 (macOS, Linux, Windows)
- 2024-11-08linux的 vi编辑器中搜索关键字有哪些常用的命令和技巧?-icode9专业技术文章分享
- 2024-11-08在 Linux 的 vi 或 vim 编辑器中什么命令可以直接跳到文件的结尾?-icode9专业技术文章分享
- 2024-10-22原生鸿蒙操作系统HarmonyOS NEXT(HarmonyOS 5)正式发布
- 2024-10-18操作系统入门教程:新手必看的基本操作指南
- 2024-10-18初学者必看:操作系统入门全攻略
- 2024-10-17操作系统入门教程:轻松掌握操作系统基础知识
- 2024-09-11Linux部署Scrapy学习:入门级指南
- 2024-09-11Linux部署Scrapy:入门级指南
- 2024-08-21【Linux】分区向左扩容的方法