首页 > 系统相关 >设计完成一个简单的shell脚本程序!(操作系统)

设计完成一个简单的shell脚本程序!(操作系统)

时间:2024-11-14 12:15:34浏览次数:3  
标签:脚本 shell usb mnt U盘 echo fi 挂载 操作系统

设计完成一个简单的shell脚本程序!
编写一个shell程序,使用一个菜单界面,方便Linux用户对U盘的加载,卸载操作。程序应该实现一下5个功能:
·加载U盘
·卸载U盘
·查看加载后的U盘的信息
·从Linux分区的硬盘中拷贝文件到U盘中
·从U盘中拷贝文件到Linux分区的硬盘指定位置上

1. 打开终端,输入命令
vim usb_script.sh

创建如下脚本程序

#!/bin/bash
# 初始化挂载标志位为0,表示U盘当前未挂载
flag=0

# 定义用于显示用户操作菜单的函数
function menu() {
    echo "1. mount u "        # 选项1:挂载U盘
    echo "2. umount u"       # 选项2:卸载U盘
    echo "3. read u"          # 选项3:读取U盘中的文件列表
    echo "4. copy file to u"  # 选项4:将文件复制到U盘
    echo "5. copy file to system" # 选项5:将文件从U盘复制到系统
    echo "enter 6 to exit"   # 输入6以退出程序
}

# 定义挂载U盘的函数
function mountU() {
    # 检查U盘是否已经挂载
    if [ $flag -eq 0 ]; then
        # 如果/mnt/usb目录不存在,则创建该目录
        if [ ! -d "/mnt/usb" ]; then
            sudo mkdir /mnt/usb
        fi
        # 尝试挂载U盘到/mnt/usb
        if sudo mount /dev/sdb1 /mnt/usb; then
            flag=1  # 标志位置1表示已挂载
            echo "U盘已挂载到 /mnt/usb"
        else
            echo "U盘挂载失败"
        fi
    else
        echo "U盘已被挂载"
    fi
}

# 定义卸载U盘的函数
function umountU() {
    # 确保U盘已经挂载
    if [ $flag -eq 1 ]; then
        # 尝试卸载U盘
        if sudo umount /mnt/usb; then
            flag=0  # 标志位置0表示已卸载
            echo "U盘已卸载"
        else
            echo "U盘卸载失败"
        fi
    else
        echo "U盘未挂载"
    fi
}

# 定义读取U盘内容的函数
function readU() {
    # 确保U盘已经挂载
    if [ $flag -eq 1 ]; then
        ls /mnt/usb  # 列出U盘中的文件和目录
    else
        echo "U盘未挂载"
    fi
}

# 定义将文件复制到U盘的函数
function copyFileToU() {
    echo '请指定要复制到U盘的文件路径:'
    read path  # 读取用户输入的源文件路径
    echo '请输入复制到U盘的目标路径:'
    read destination  # 读取用户输入的目标路径

    # 确保U盘已经挂载
    if [ $flag -eq 1 ]; then
        # 确保源文件存在
        if [ -f "$path" ]; then
            # 如果目标路径不存在,则创建目标目录
            if [ ! -d "/mnt/usb/${destination}" ]; then
                sudo mkdir -p /mnt/usb/${destination}
            fi
            # 复制文件到U盘
            sudo cp "$path" /mnt/usb/${destination}
            echo "文件已复制到U盘"
        else
            echo "源文件不存在"
        fi
    else
        echo "U盘未挂载"
    fi
}

# 定义从U盘复制文件到系统的函数
function copyFileToSystem() {
    echo '请指定要从U盘复制的文件名:'
    read path  # 读取用户输入的文件名
    echo '请输入复制到系统的目标路径:'
    read destination  # 读取用户输入的目标路径

    # 确保U盘已经挂载
    if [ $flag -eq 1 ]; then
        # 检查U盘中的文件是否存在
        if [ -f "/mnt/usb/${path}" ]; then
            # 复制文件到系统
            cp "/mnt/usb/${path}" "$destination"
            echo "文件已复制到系统"
        else
            echo "U盘中文件不存在"
        fi
    else
        echo "U盘未挂载"
    fi
}

# 定义主函数,用于处理用户输入并执行相应操作
function main() {
    while true; do
        menu  # 显示菜单
        read var  # 读取用户的选择
        case ${var} in
            1)
                mountU  # 挂载U盘
                ;;
            2)
                umountU  # 卸载U盘
                ;;
            3)
                readU  # 读取U盘内容
                ;;
            4)
                copyFileToU  # 将文件复制到U盘
                ;;
            5)
                copyFileToSystem  # 从U盘复制文件到系统
                ;;
            6)
                umountU  # 退出前卸载U盘
                exit 0  # 退出程序
                ;;
            *)
                echo "无效选项,请重新输入"  # 无效输入处理
                ;;
        esac
    done
}

# 调用主函数开始程序
main

注意:

/dev/sdb1

这个是我的设备,根据实际情况进行替换,一般来说都是这个

(可以输入命令lsblk来查看自己的设备)

输入:wq后回车退出

2. 插入U盘,连接到虚拟机

左下角显示U盘图标即为成功

如果未显示U盘图标,需要修改USB版本为3.1

(我这里默认是USB2.0,改为USB3.1才能成功显示U盘图标)

3. 在终端使用命令./usb_script.sh

使程序运行

4. 在实现功能4和5的时候注意一下文件的路径

功能4. 从Linux分区的硬盘中拷贝文件到U盘中

sudo cp "$path" /mnt/usb/${destination}

上面的完整脚本程序中已经带了前缀/mnt/usb/

后面才是自己输入的


功能5.从U盘中拷贝文件到Linux分区的硬盘指定位置上

cp "/mnt/usb/${path}" "$destination"

这里也带了前缀/mnt/usb/

destination的话如果图方便的话保存到根目录就行(也就是只打一个.)

就像这样

标签:脚本,shell,usb,mnt,U盘,echo,fi,挂载,操作系统
From: https://blog.csdn.net/qq_61504864/article/details/143205697

相关文章

  • shell脚本(1)
    免责声明学习视频来自B站up主泷羽sec,如涉及侵权马上删除文章。笔记的只是方便各位师傅学习知识,以下代码、网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负。Shell脚本建立一个sh脚本touch 1.sh (新建脚本文件)vi 1.sh(编写文件内容)按 i 可以写......
  • 刷题答题脚本—>接入AI (python+css)
    刷题答题脚本———接入AIgithub地址:https://github.com/LY-zhang-yi-hao/do-homework-AI-python创作不易,github点个star,有时间分享更多实用代码,谢谢!本项目使得刷题的脚本的编写下限变低,利用阿里云模型回答问题,不需要进行题库的编写或网页搜索。将问题发送给AI,拿到答案后,进行......
  • shell编程
    学习视频来自B站up主泷羽sec有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关,切勿触碰法律底线,否则后果自负!!!!有兴趣的小伙伴可以点击下面连接进入b站主页B站泷羽sec......
  • 操作系统复习2-wait、signal操作第二部分
    4.佩奇、米老鼠、汤姆一起玩放水果的游戏。佩奇不停的往空盘子中放苹果米老鼠不停的取苹果,汤姆不停的取橘子。假设这个盘子最多能放的水果且他们三个不能同时取用。完成如下两问请写出记录型信号量的wait和signal操作的定义(7分)。请用信号量机制和wait和signal操作实现这三......
  • 【知行】知行方块兽生态脚本潮玩宇宙
    知行生态脚本是知行团队开发的围绕潮玩生态的产品,在里面会汇集着大部分的潮玩游戏的脚本,方便大家更好的操作。知行团队立志于开发出最大、性价比最高的的潮玩游戏和脚本社区。如图:包含方块兽六种游戏如何使用模拟器登录脚本模拟器如何配置已雷电模拟器为例先点击右......
  • 计算机组成原理与操作系统 第二章 处理机组成与管理
    目录1.CPU的功能和组成1.1CPU的四大功能1.2CPU的基本组成1.3一条指令如何在CPU内运行2.指令系统2.1机器语言与指令2.1.1基本概念2.1.2一条指令一般应包含的信息2.1.3指令的类型与功能2.1.4寻址方式2.2指令格式的设计2.2.1基本概念2.2.2指令类型2.2.3操作码类型2.2.4指令设计2.3指......
  • shell正则表达式、sed基本用法及sed应用案例
    一、正则表达式●可以使用若干符号配合某工具对字符串进行增删改查操作1.1基本正则列表正则符号描述^匹配行首$匹配行尾[]集合,匹配集合中任意单个字符[^]对集合取反.匹配任意字符*匹配前一个字符任意次数【*不允许单独使用】\{n,m}匹配......
  • Ubuntu 设置开机自启动脚本
    Linux系统中设置自定义脚本开机自启动有如下几种方式方案一、增加crontask1.打开任务文件cron#执行如下命令打开当前用户的cron,如果打开root用户的cron,执行sudocrontab-ecrontab-e2.向其中加入如下需要开机自启的脚本#@reboot后为用户自定义的启动脚本的完整......
  • shell脚本30个案例(一)
    通过一个多月的shell学习,总共写出30个案例,分批次进行发布,这次总共发布了5个案例,希望能够对大家的学习和使用有所帮助,更多案例会在下一次进行发布。案例一、备份指定目录下的文件到另一个目录1.问题在服务器环境中,需要定期备份特定目录(如/var/www/html)中的文件到备份目录(如/b......
  • 使用 WinNTSetup 来安装 Windows 11 24H2 或 Windows Server 2025 可以帮助你快速创建
    使用WinNTSetup来安装Windows1124H2或WindowsServer2025可以帮助你快速创建和部署操作系统。以下是详细的步骤:1.准备工作在开始之前,确保你已经具备以下条件:WinNTSetup 工具。可以从官方网站或者其他可信的来源下载WinNTSetup。Windows1124H2或WindowsServe......