From ddc5f743b757049c6e24f197467352b171b219ea Mon Sep 17 00:00:00 2001 From: zzm <73225535+HanWu311@users.noreply.github.com> Date: Tue, 18 Apr 2023 09:18:03 +0800 Subject: [PATCH] =?UTF-8?q?Update=203.Y.5linux=E5=B0=8F=E4=BB=BB=E5=8A=A1.?= =?UTF-8?q?md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../3.Y.5linux小任务.md | 109 +++++++++++++++++- 1 file changed, 108 insertions(+), 1 deletion(-) diff --git a/3.编程思维体系构建/3.Y.5linux小任务.md b/3.编程思维体系构建/3.Y.5linux小任务.md index cafc93c..33fecfb 100644 --- a/3.编程思维体系构建/3.Y.5linux小任务.md +++ b/3.编程思维体系构建/3.Y.5linux小任务.md @@ -1,4 +1,4 @@ -# linux 小任务 +# linux 自测 1. 本课程需要使用类 Unix shell,例如 Bash 或 ZSH。如果您在 Linux 或者 MacOS 上面完成本课程的练习,则不需要做任何特殊的操作。如果您使用的是 Windows,则您不应该使用 cmd 或是 Powershell;您可以使用Windows Subsystem for Linux或者是 Linux 虚拟机。使用 `echo $SHELL` 命令可以查看您的 shell 是否满足要求。如果打印结果为 `/bin/bash` 或 `/usr/bin/zsh` 则是可以的。 2. 在 `/tmp` 下新建一个名为 `missing` 的文件夹。 @@ -18,3 +18,110 @@ 3. 使用 `chmod` 命令改变权限,使 `./semester` 能够成功执行,不要使用 `sh semester` 来执行该程序。您的 shell 是如何知晓这个文件需要使用 `sh` 来解析呢?更多信息请参考:shebang 4. 使用 `|` 和 `>` ,将 `semester` 文件输出的最后更改日期信息,写入主目录下的 `last-modified.txt` 的文件中 5. 写一段命令来从 `/sys` 中获取笔记本的电量信息,或者台式机 CPU 的温度 +6. 使用shell编程写一个类似脚本的图书管理系统,包含增删改查四个功能 + +当然,可能会有点困难我在这里附上一段参考代码 + +```shell +#! /usr/bin/env bash + +initialization() +{ + echo -n "| " ;echo "1:添加图书" + echo -n "| " ;echo "2:删除图书" + echo -n "| " ;echo "3:显示馆藏图书" + echo -n "| " ;echo "4:查找图书" + echo -n "| " ;echo "5:退出系统" + mainmenu +} + +mainmenu() +{ + read operation + case $operation in + 1) + addbook ;; + 2) + delbook ;; + 3) + listbooks ;; + 4) + search ;; + 5) + exit ;; + *) + "无效操作,请重试。" + initialization ;; + esac +} + +#直接在文件夹内添加书(所以没有 书单.txt),若没有就find遍历系统匹配并加入 +#不考虑系统中多个匹配结果的情况 +addbook() +{ + echo "添加图书" + echo "-------------------------" + read -p "输入添加的书名" bookname + if [[ -f ~/Desktop/bookregister/$bookname ]] ; + then + echo "已经存在这本书。" + return + else + find ~ -name $bookname -exec mv {} ~/Desktop/bookregister \; + if [[ -f ~/Desktop/bookregister/$bookname ]] ; + then + echo "匹配成功,已加入书单。" + else + read -p "未找到这本书,手动输入链接从网上下载?[y/n]" download + if [[ $download = 'y' ]] ; + then + read -p "请输入链接。" url + curl ${url} -o $bookname + find ~ -name $bookname -exec mv {} ~/Desktop/bookregister \; + fi + fi + fi +} + +delbook() +{ + echo "删除图书" + echo "-------------------------" + read -p "输入删除的书名" bookname + if [[ ! -f ~/Desktop/bookregister/$bookname ]] ; + then + echo "查无此书。" + return + else + read -p "输入 delete 以确认。" delete + if [[ $delete = delete ]]; + then + rm ~/Desktop/bookregister/$bookname + echo "删除完毕。" + fi + fi +} + +#因为脚本图书放在一起,所以脚本自身也会显示(不要在意这些细节) +listbooks() +{ + ls ~/Desktop/bookregister +} + + +#若找到直接用less打开 +search() +{ + echo "查找图书" + echo "-------------------------" + read -p "输入查找的书名" bookname + if [[ -f ~/Desktop/bookregister/$bookname ]] ; + then + less ~/Desktop/bookregister/$bookname + else + echo "查无此书。" + fi +} + +``` +