linux学习之shell脚本
【实验目的】
通过本实验练习,使学生了解常用SHELL的编程特点,掌握SHELL 程序设计的基础知识。对SHELL程序流程控制、SHELL程序的运行方式、bash程序的调试方法及bash的常用内部命令有进一步的认识和理解。
【实验内容】
编写shell脚本,包含以下功能:
1、输出系统基本信息,系统运行时自动获取相关值并代替*:
USER:**** HOST:**** DATE:****年**月**日
2、创建以下菜单,并完成菜单相应功能:
A: 创建子目录并复制文件(在/tmp下创建子目录t,并将/proc/cpuinfo文件拷贝进去)
B: 文件权限测试(测试对/proc/cpuinfo是否有r、w、x的权限,分别输出测试结果)
C: 文件字符转换(将/proc/cpuinfo文件中的小写字符转换为大写并输出)
D: 子目录总数统计(统计自己主目录下字目录的数量并输出)
E: 文本文件行数统计(统计/proc/cpuinfo文件中空行的行数并输出)
Q: 退出系统
请输入您的选择:
【实验目的】
通过本实验练习,使学生了解常用SHELL的编程特点,掌握SHELL 程序设计的基础知识。对SHELL程序流程控制、SHELL程序的运行方式、bash程序的调试方法及bash的常用内部命令有进一步的认识和理解。
【实验内容】
编写shell脚本,包含以下功能:
1、输出系统基本信息,系统运行时自动获取相关值并代替*:
USER:**** HOST:**** DATE:****年**月**日
2、创建以下菜单,并完成菜单相应功能:
A: 创建子目录并复制文件(在/tmp下创建子目录t,并将/proc/cpuinfo文件拷贝进去)
B: 文件权限测试(测试对/proc/cpuinfo是否有r、w、x的权限,分别输出测试结果)
C: 文件字符转换(将/proc/cpuinfo文件中的小写字符转换为大写并输出)
D: 子目录总数统计(统计自己主目录下字目录的数量并输出)
E: 文本文件行数统计(统计/proc/cpuinfo文件中空行的行数并输出)
Q: 退出系统
请输入您的选择:
3、运行脚本,测试每一个菜单功能
1 #!/bin/bash 2 user=$(whoami) 3 host=$(hostname) 4 date=$(date +%Y年%m月%d日) 5 6 echo -e "\033[33mUSER:$user HOST:$host DATE:$date\033[0m" 7 8 cd /tmp 9 echo -e "\033[32m菜单如下: 10 A: 创建子目录并复制文件(在/tmp下创建子目录t,并将/proc/cpuinfo文件拷贝进去) 11 B: 文件权限测试(测试对/proc/cpuinfo是否有r、w、x的权限,分别输出测试结果) 12 C: 文件字符转换(将/proc/cpuinfo文件中的小写字符转换为大写并输出) 13 D: 子目录总数统计(统计自己主目录下字目录的数量并输出) 14 E: 文本文件行数统计(统计/proc/cpuinfo文件中空行的行数并输出) 15 Q: 退出系统\033[0m" 16 while true 17 do 18 read -p "请输入您的选择:" choice 19 case $choice in 20 A|a) 21 echo -e "\033[34m在/tmp创建子目录t\033[0m" 22 mkdir /tmp/t 23 echo -e "\033[34m将/proc/cpuinfo文件拷贝到t目录下\033[0m" 24 cp /proc/cpuinfo /tmp/t 25 tree /tmp/t 26 ;; 27 B|b) 28 echo -e "\033[34m测试cpuinfo文件有哪些权限\033[0m" 29 if [ -r /tmp/t/cpuinfo ] 30 then 31 echo -e "\033[34m有读权限\033[0m" 32 else 33 echo -e "\033[31m没有读的权限\033[0m" 34 fi 35 if [ -w /tmp/t/cpuinfo ] 36 then 37 echo -e "\033[34m有写权限\033[0m" 38 else 39 echo -e "\033[31m没有写的权限\033[0m" 40 fi 41 if [ -x /tmp/t/cpuinfo ] 42 then 43 echo -e "\033[34m有执行权限\033[0m" 44 else 45 echo -e "\033[31m没有执行的权限\033[0m" 46 fi 47 ;; 48 C|c) 49 echo -e "\033[34m将cpuinfo文件中的小写字符转换成大写字符并输出" 50 test -e /tmp/t/cpuinfo && cat /tmp/t/cpuinfo |tr [:lower:] [:upper:] && echo -e "\033[0m"||echo -e "\033[31mcpuinfo文件不存在\033[0m" 51 ;; 52 D|d) 53 sum=$(ls -l $(pwd) |grep ^d |wc -l) 54 echo -e "\033[34m主目录$(pwd)下的目录有$sum个\033[0m" 55 ;; 56 E|e) 57 var=$(grep '^$' /tmp/t/cpuinfo |wc -l) 58 echo -e "\033[34mcpuinfo文件的空行有$var个\033[0m" 59 ;; 60 Q|q) 61 echo -e "\033[34m删除r目录并退出\033[0m" 62 #rm -rf t#结束循环后自动删除 63 break 64 ;; 65 *) 66 echo -e "\033[31m输入错误,请重新输入 或者 输入q退出\033[0m" 67 ;; 68 esac 69 done 70 rm -rf t
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!