From 7d210e031ef719706f82e054e37cf6b3d68cf8ae Mon Sep 17 00:00:00 2001 From: wukongdaily <2666180@gmail.com> Date: Sat, 16 Dec 2023 22:02:08 +0800 Subject: [PATCH 1/5] Update diy.sh MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 增加dev的branch 预开发一些新的功能: 1、硬盘直通 2、root身份创建虚拟机 3、整合root身份和user身份2类虚拟机 4、刷新虚拟硬盘的uuid --- shell/diy.sh | 285 ++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 235 insertions(+), 50 deletions(-) diff --git a/shell/diy.sh b/shell/diy.sh index 91f6069..1928af1 100644 --- a/shell/diy.sh +++ b/shell/diy.sh @@ -9,11 +9,29 @@ readonly UNAME_U # COLORS readonly COLOUR_RESET='\e[0m' readonly aCOLOUR=( - '\e[38;5;154m' # green | Lines, bullets and separators - '\e[1m' # Bold white | Main descriptions - '\e[90m' # Grey | Credits - '\e[91m' # Red | Update notifications Alert - '\e[33m' # Yellow | Emphasis + '\e[38;5;154m' # 绿色 - 用于行、项目符号和分隔符 0 + '\e[1m' # 粗体白色 - 用于主要描述 + '\e[90m' # 灰色 - 用于版权信息 + '\e[91m' # 红色 - 用于更新通知警告 + '\e[33m' # 黄色 - 用于强调 + '\e[34m' # 蓝色 + '\e[35m' # 品红 + '\e[36m' # 青色 + '\e[37m' # 浅灰色 + '\e[92m' # 浅绿色9 + '\e[93m' # 浅黄色 + '\e[94m' # 浅蓝色 + '\e[95m' # 浅品红 + '\e[96m' # 浅青色 + '\e[97m' # 白色 + '\e[40m' # 背景黑色 + '\e[41m' # 背景红色 + '\e[42m' # 背景绿色 + '\e[43m' # 背景黄色 + '\e[44m' # 背景蓝色19 + '\e[45m' # 背景品红 + '\e[46m' # 背景青色21 + '\e[47m' # 背景浅灰色 ) readonly GREEN_LINE=" ${aCOLOUR[0]}─────────────────────────────────────────────────────$COLOUR_RESET" @@ -61,6 +79,51 @@ RED='\033[0;31m' # 无颜色 NC='\033[0m' GREEN='\033[0;32m' +YELLOW="\e[33m" + +declare -a menu_options +declare -A commands +menu_options=( + "启用SSH服务" + "安装注音输入法(新酷音输入法)" + "安装常用办公必备软件(office、QQ、微信、远程桌面等)" + "安装虚拟机VirtualBox 7" + "安装虚拟机VirtualBox 7扩展包" + "虚拟机一键格式转换(img2vdi)" + "设置虚拟机开机自启动(headless)" + "VirtualBox硬盘直通" + "创建root身份的VirtualBox图标" + "刷新虚拟硬盘的UUID" + "准备CasaOS的使用环境" + "安装CasaOS(包含Docker)" + "还原配置文件os-release" + "配置docker为国内镜像" + "安装btop资源监控工具" + "卸载虚拟机" + "卸载 CasaOS" +) + +commands=( + ["启用SSH服务"]="enable_ssh" + ["安装虚拟机VirtualBox 7"]="install_virtualbox" + ["安装虚拟机VirtualBox 7扩展包"]="install_virtualbox_extpack" + ["虚拟机一键格式转换(img2vdi)"]="convert_vm_format" + ["设置虚拟机开机自启动(headless)"]="set_vm_autostart" + ["卸载虚拟机"]="uninstall_vm" + ["准备CasaOS的使用环境"]="prepare_for_casaos" + ["安装CasaOS(包含Docker)"]="install_casaos" + ["还原配置文件os-release"]="restore_os_release" + ["卸载 CasaOS"]="uninstall_casaos" + ["配置docker为国内镜像"]="configure_docker_mirror" + ["安装常用办公必备软件(office、QQ、微信、远程桌面等)"]="install_need_apps" + ["安装注音输入法(新酷音输入法)"]="install_fcitx5_chewing" + ["安装btop资源监控工具"]="enable_btop" + ["VirtualBox硬盘直通"]="attach_raw_disk_to_vm" + ["创建root身份的VirtualBox图标"]="create_root_vm_desktop" + ["刷新虚拟硬盘的UUID"]="refresh_vm_disk_uuid" + + +) # 函数:检查并启动 SSH enable_ssh() { @@ -321,8 +384,7 @@ setautologin() { sudo rm -rf ~/.local/share/keyrings/* } -# 设置开机5秒后 -# 自动启动所有虚拟机(无头启动) +# 设置虚拟机自启动 do_autostart_vm() { # 检查系统上是否安装了VirtualBox if ! command -v VBoxManage >/dev/null; then @@ -339,9 +401,16 @@ do_autostart_vm() { # 获取当前用户名 USERNAME=$(whoami) - # 获取当前所有虚拟机的名称并转换为数组 - VMS=$(VBoxManage list vms | cut -d ' ' -f 1 | sed 's/"//g') - VM_ARRAY=($VMS) + # 获取当前用户创建的虚拟机列表 + USER_VMS=$(VBoxManage list vms | cut -d ' ' -f 1 | sed 's/"//g') + USER_VM_ARRAY=($USER_VMS) + + # 获取root用户创建的虚拟机列表 + ROOT_VMS=$(sudo VBoxManage list vms | cut -d ' ' -f 1 | sed 's/"//g') + ROOT_VM_ARRAY=($ROOT_VMS) + + # 合并两个虚拟机数组 + VM_ARRAY=(${USER_VM_ARRAY[@]} ${ROOT_VM_ARRAY[@]}) # 检查虚拟机数量 if [ ${#VM_ARRAY[@]} -eq 0 ]; then @@ -359,11 +428,16 @@ do_autostart_vm() { echo "#!/bin/sh -e" >$TMP_RC_LOCAL echo "sleep 5" >>$TMP_RC_LOCAL - # 为每个现存的虚拟机添加启动命令 - for VMNAME in "${VM_ARRAY[@]}"; do + # 为每个普通用户创建的虚拟机添加启动命令 + for VMNAME in "${USER_VM_ARRAY[@]}"; do echo "su - $USERNAME -c \"VBoxHeadless -s $VMNAME &\"" >>$TMP_RC_LOCAL done + # 为每个root用户创建的虚拟机添加启动命令 + for VMNAME in "${ROOT_VM_ARRAY[@]}"; do + echo "sudo VBoxHeadless -s $VMNAME &" >>$TMP_RC_LOCAL + done + # 添加exit 0到临时文件的末尾 echo "exit 0" >>$TMP_RC_LOCAL @@ -391,10 +465,12 @@ do_autostart_vm() { rm "$TMP_VM_LIST" # 显示/etc/rc.local的内容 - Show 0 "已将所有虚拟机设置为开机无头自启动。查看配置 /etc/rc.local,如下" + Show 0 "已将所有虚拟机设置为开机后台自启动。查看配置 /etc/rc.local,如下" cat /etc/rc.local } + + # 安装btop enable_btop() { # 尝试使用 apt 安装 btop @@ -440,41 +516,134 @@ enable_btop() { fi } -declare -a menu_options -declare -A commands -menu_options=( - "启用SSH服务" - "安装注音输入法(新酷音输入法)" - "安装常用办公必备软件(office、QQ、微信、远程桌面等)" - "安装虚拟机VirtualBox 7" - "安装虚拟机VirtualBox 7扩展包" - "设置虚拟机开机自启动(headless)" - "虚拟机一键格式转换(img2vdi)" - "准备CasaOS的使用环境" - "安装CasaOS(包含Docker)" - "还原配置文件os-release" - "卸载 CasaOS" - "配置docker为国内镜像" - "安装btop资源监控工具" - "卸载虚拟机" -) +# 检查zenity是否安装 +check_zenity_installed() { + # 检查 zenity 是否已经安装 + if ! command -v zenity >/dev/null 2>&1; then + echo "Zenity is not installed. Installing Zenity..." + sudo apt-get update >/dev/null 2>&1 + sudo apt-get install zenity -y >/dev/null 2>&1 + # 再次检查是否成功安装 + if command -v zenity >/dev/null 2>&1; then + echo "Zenity installed successfully." + else + echo "Failed to install Zenity." + return 1 + fi + else + echo -e + #echo "Zenity is already installed." + fi +} + + +#硬盘直通(需root身份启动vm) +attach_raw_disk_to_vm() { + # 直通的硬盘,只能用于root身份启动的virtualbox + check_zenity_installed + + Show 3 "注意:直通的硬盘,只能用于${YELLOW}root身份启动的${NC}virtualbox,\n请选择物理硬盘索引vmdk文件保存的位置(敲回车去选择位置)${NC} [Y/n] " + read -r -n 1 response + echo + case $response in + [nN]) + echo "操作已取消。" + exit 1 + ;; + *) + vmdk_path=$(zenity --file-selection --save --confirm-overwrite --file-filter="VMDK files (vmdk) | *.vmdk" --title="Select a Path for VMDK File" 2>/dev/null) + echo "硬盘索引保存在: $vmdk_path" + ;; + esac + + # 获取硬盘及其大小 + DISKS=$(lsblk -nrdo NAME,TYPE,SIZE | awk '$2=="disk" {print "/dev/"$1 " " $3}') + + # 将硬盘信息转换为 dialog 可接受的格式 + OPTIONS=() + for DISK in $DISKS; do + # 分割字符串以获取设备名和大小 + IFS=' ' read -r NAME SIZE <<<"$DISK" + OPTIONS+=("${NAME} ${SIZE}") + done + + # 使用 dialog 显示菜单 + device=$(dialog --clear \ + --backtitle "VirtualBox硬盘直通(软直通)" \ + --title "硬盘列表" \ + --menu "请选择一个需要直通的硬盘:" 15 50 4 \ + "${OPTIONS[@]}" \ + 2>&1 >/dev/tty) + + # 清除对话框 + clear + # 输出用户选择 + echo "直通的硬盘是: ${device} 其中索引vmdk文件将创建在:${vmdk_path}" + sudo VBoxManage internalcommands createrawvmdk -filename "$vmdk_path" -rawdisk $device + + # 检查命令执行的退出状态码 + if [ $? -eq 0 ]; then + # 检查文件是否存在 + if [ -f "$vmdk_path" ]; then + Show 0 "恭喜您!直通的索引 VMDK 文件已成功创建在: $vmdk_path" + sudo chmod 777 $vmdk_path + Show 3 "请您以root身份启动虚拟机,添加直通的硬盘索引vmdk文件即可" + Show 3 "添加之前,请检查${device} 是否处于挂载状态。若处于挂载状态,请在磁盘管理中卸载" + else + echo "VMDK 文件不存在。可能是由于权限问题或路径错误。" + fi + else + echo "命令执行失败。" + fi + +} + +# 创建一个以root身份运行的Virtualbox7 图标 +create_root_vm_desktop() { + # 指定 .desktop 文件的路径 + local desktop_file="$HOME/Desktop/VirtualBoxRoot.desktop" + # 创建 .desktop 文件并写入内容 + cat >"$desktop_file" </dev/null) + + # 检查用户是否选择了文件 + if [ -z "$disk_path" ]; then + zenity --error --text="No file selected. Operation cancelled." --width=400 --height=200 2>/dev/null + return 1 + fi + + # 检查磁盘文件是否存在 + if [ ! -f "$disk_path" ]; then + zenity --error --text="Disk file not found: $disk_path" --width=400 --height=200 2>/dev/null + return 1 + fi + + # 使用 VBoxManage 命令刷新 UUID + if VBoxManage internalcommands sethduuid "$disk_path" >/dev/null 2>&1; then + zenity --info --text="恭喜你!虚拟硬盘UUID刷新成功了\n文件位于:$disk_path" --width=400 --height=200 2>/dev/null + else + zenity --error --text="Failed to refresh UUID for disk: $disk_path" --width=400 --height=200 2>/dev/null + fi +} + -commands=( - ["启用SSH服务"]="enable_ssh" - ["安装虚拟机VirtualBox 7"]="install_virtualbox" - ["安装虚拟机VirtualBox 7扩展包"]="install_virtualbox_extpack" - ["虚拟机一键格式转换(img2vdi)"]="convert_vm_format" - ["设置虚拟机开机自启动(headless)"]="set_vm_autostart" - ["卸载虚拟机"]="uninstall_vm" - ["准备CasaOS的使用环境"]="prepare_for_casaos" - ["安装CasaOS(包含Docker)"]="install_casaos" - ["还原配置文件os-release"]="restore_os_release" - ["卸载 CasaOS"]="uninstall_casaos" - ["配置docker为国内镜像"]="configure_docker_mirror" - ["安装常用办公必备软件(office、QQ、微信、远程桌面等)"]="install_need_apps" - ["安装注音输入法(新酷音输入法)"]="install_fcitx5_chewing" - ["安装btop资源监控工具"]="enable_btop" -) show_menu() { clear @@ -493,8 +662,10 @@ show_menu() { echo "请选择操作:" for i in "${!menu_options[@]}"; do - if [[ "${menu_options[i]}" == "设置虚拟机开机无头自启动" ]]; then + if [[ "${menu_options[i]}" == "设置虚拟机开机自启动(headless)" ]]; then echo -e "$((i + 1)). ${YELLOW}${menu_options[i]}${NO_COLOR}" + elif [[ "${menu_options[i]}" == "VirtualBox硬盘直通" ]]; then + echo -e "$((i + 1)). ${aCOLOUR[0]}${menu_options[i]}${NO_COLOR}" else echo "$((i + 1)). ${menu_options[i]}" fi @@ -509,8 +680,22 @@ handle_choice() { return fi - if [ -z "${menu_options[$choice - 1]}" ] || [ -z "${commands[${menu_options[$choice - 1]}]}" ]; then - echo "无效选项,请重新选择。" + # 检查输入是否为数字 + if ! [[ $choice =~ ^[0-9]+$ ]]; then + echo -e "${RED}请输入有效数字!${NC}" + return + fi + + # 检查数字是否在有效范围内 + if [[ $choice -lt 1 ]] || [[ $choice -gt ${#menu_options[@]} ]]; then + echo -e "${RED}选项超出范围!${NC}" + echo -e "${YELLOW}请输入 1 到 ${#menu_options[@]} 之间的数字。${NC}" + return + fi + + # 执行命令 + if [ -z "${commands[${menu_options[$choice - 1]}]}" ]; then + echo -e "${RED}无效选项,请重新选择。${NC}" return fi From 2a963aa7119ea375141362b2363c67da29cd0940 Mon Sep 17 00:00:00 2001 From: wukongdaily <2666180@gmail.com> Date: Sun, 17 Dec 2023 13:53:36 +0800 Subject: [PATCH 2/5] Update diy.sh MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1、用户可自行选择要自启动的虚拟机,并且普通用户创建的标注byUser,管理员创建的标注byRoot。按空格键可单选、多选或者不选。 2、只要用户操作过选择自启动的菜单功能。那么自启动文件就会随之更新。 --- shell/diy.sh | 62 +++++++++++++++++++++++----------------------------- 1 file changed, 27 insertions(+), 35 deletions(-) diff --git a/shell/diy.sh b/shell/diy.sh index b49d133..e6268b8 100644 --- a/shell/diy.sh +++ b/shell/diy.sh @@ -121,7 +121,6 @@ commands=( ["VirtualBox硬盘直通"]="attach_raw_disk_to_vm" ["创建root身份的VirtualBox图标"]="create_root_vm_desktop" ["刷新虚拟硬盘的UUID"]="refresh_vm_disk_uuid" - ) @@ -401,7 +400,7 @@ do_autostart_vm() { # 获取当前用户名 USERNAME=$(whoami) - # 获取当前用户创建的虚拟机列表 + # 获取普通用户创建的虚拟机列表 USER_VMS=$(VBoxManage list vms | cut -d ' ' -f 1 | sed 's/"//g') USER_VM_ARRAY=($USER_VMS) @@ -418,8 +417,23 @@ do_autostart_vm() { return fi - # 设置自动登录 免GUI桌面登录 - setautologin + # 创建一个临时文件用于存储虚拟机列表 + TMP_VM_LIST=$(mktemp) + + # 生成dialog checklist所需的格式 + for VMNAME in "${VM_ARRAY[@]}"; do + if [[ " ${USER_VM_ARRAY[@]} " =~ " ${VMNAME} " ]]; then + echo "$VMNAME byUser off" >>"$TMP_VM_LIST" + else + echo "$VMNAME byRoot off" >>"$TMP_VM_LIST" + fi + done + + # 使用dialog让用户选择要自启动的虚拟机 + SELECTED_VMS=$(dialog --checklist "按空格键选择要自启动的虚拟机:" 20 50 10 --file "$TMP_VM_LIST" 3>&1 1>&2 2>&3) + + # 清除对话框 + clear # 创建一个临时文件用于存储新的rc.local内容 TMP_RC_LOCAL=$(mktemp) @@ -428,14 +442,13 @@ do_autostart_vm() { echo "#!/bin/sh -e" >$TMP_RC_LOCAL echo "sleep 5" >>$TMP_RC_LOCAL - # 为每个普通用户创建的虚拟机添加启动命令 - for VMNAME in "${USER_VM_ARRAY[@]}"; do - echo "su - $USERNAME -c \"VBoxHeadless -s $VMNAME &\"" >>$TMP_RC_LOCAL - done - - # 为每个root用户创建的虚拟机添加启动命令 - for VMNAME in "${ROOT_VM_ARRAY[@]}"; do - echo "sudo VBoxHeadless -s $VMNAME &" >>$TMP_RC_LOCAL + # 为用户选择的每个虚拟机添加启动命令 + for VMNAME in $SELECTED_VMS; do + if [[ " ${USER_VM_ARRAY[@]} " =~ " ${VMNAME} " ]]; then + echo "su - $USERNAME -c \"VBoxHeadless -s $VMNAME &\"" >>$TMP_RC_LOCAL + else + echo "sudo VBoxHeadless -s $VMNAME &" >>$TMP_RC_LOCAL + fi done # 添加exit 0到临时文件的末尾 @@ -446,31 +459,13 @@ do_autostart_vm() { # 删除临时文件 rm $TMP_RC_LOCAL - - # 创建一个临时文件用于存储虚拟机列表 - TMP_VM_LIST=$(mktemp) - - # 将虚拟机名称写入临时文件 - for VMNAME in "${VM_ARRAY[@]}"; do - echo "$VMNAME" >>"$TMP_VM_LIST" - done - - # 使用 dialog 显示虚拟机列表,并将按钮标记为“确定” - dialog --title "下列虚拟机均已设置为开机自启动" --ok-label "确定" --textbox "$TMP_VM_LIST" 10 50 - - # 清除对话框 - clear - - # 删除临时文件 rm "$TMP_VM_LIST" # 显示/etc/rc.local的内容 - Show 0 "已将所有虚拟机设置为开机后台自启动。查看配置 /etc/rc.local,如下" + Show 0 "已更新/etc/rc.local文件。您可以查看配置,以确认自启动虚拟机设置。" cat /etc/rc.local } - - # 安装btop enable_btop() { # 尝试使用 apt 安装 btop @@ -536,7 +531,6 @@ check_zenity_installed() { fi } - #硬盘直通(需root身份启动vm) attach_raw_disk_to_vm() { # 直通的硬盘,只能用于root身份启动的virtualbox @@ -636,15 +630,13 @@ refresh_vm_disk_uuid() { fi # 使用 VBoxManage 命令刷新 UUID - if VBoxManage internalcommands sethduuid "$disk_path" >/dev/null 2>&1; then + if VBoxManage internalcommands sethduuid "$disk_path" >/dev/null 2>&1; then zenity --info --text="恭喜你!虚拟硬盘UUID刷新成功了\n文件位于:$disk_path" --width=400 --height=200 2>/dev/null else zenity --error --text="Failed to refresh UUID for disk: $disk_path" --width=400 --height=200 2>/dev/null fi } - - show_menu() { clear YELLOW="\e[33m" From cf6583d8e313238f6587024cb98ea85b1354e241 Mon Sep 17 00:00:00 2001 From: wukongdaily <2666180@gmail.com> Date: Sun, 17 Dec 2023 15:20:30 +0800 Subject: [PATCH 3/5] Update diy.sh MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1、设置虚拟机自动时,读取上次的设置过的状态。 2、调整一下窗口的宽度。 --- shell/diy.sh | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/shell/diy.sh b/shell/diy.sh index e6268b8..1dae610 100644 --- a/shell/diy.sh +++ b/shell/diy.sh @@ -290,7 +290,7 @@ prepare_for_casaos() { #卸载docker uninstall_docker() { if dpkg -l | grep -qw docker-ce; then - sudo apt-get purge docker-ce docker-ce-cli containerd.io + sudo apt-get purge docker-ce docker-ce-cli containerd.io fi } @@ -420,17 +420,31 @@ do_autostart_vm() { # 创建一个临时文件用于存储虚拟机列表 TMP_VM_LIST=$(mktemp) + # 先解析 /etc/rc.local 来找出已设置为自启动的虚拟机 + AUTO_START_VMS=() + while IFS= read -r line; do + if [[ $line =~ VBoxHeadless\ -s\ (.+) ]]; then + AUTO_START_VMS+=("${BASH_REMATCH[1]}") + fi + done >"$TMP_VM_LIST" + if [[ " ${AUTO_START_VMS[@]} " =~ " ${VMNAME} " ]]; then + STATE="on" else - echo "$VMNAME byRoot off" >>"$TMP_VM_LIST" + STATE="off" + fi + + if [[ " ${USER_VM_ARRAY[@]} " =~ " ${VMNAME} " ]]; then + echo "$VMNAME byUser $STATE" >>"$TMP_VM_LIST" + else + echo "$VMNAME byRoot $STATE" >>"$TMP_VM_LIST" fi done # 使用dialog让用户选择要自启动的虚拟机 - SELECTED_VMS=$(dialog --checklist "按空格键选择要自启动的虚拟机:" 20 50 10 --file "$TMP_VM_LIST" 3>&1 1>&2 2>&3) + SELECTED_VMS=$(dialog --checklist "按 [空格键Space] 选择要自启动的虚拟机(/etc/rc.local)" 20 70 15 --file "$TMP_VM_LIST" 3>&1 1>&2 2>&3) # 清除对话框 clear From 91f068bb72f83b89591520010d581a2498134e12 Mon Sep 17 00:00:00 2001 From: wukongdaily <2666180@gmail.com> Date: Sun, 17 Dec 2023 15:50:37 +0800 Subject: [PATCH 4/5] Update diy.sh MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修改版本号为1.2 将新功能加入高亮颜色 --- shell/diy.sh | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/shell/diy.sh b/shell/diy.sh index 1dae610..a08a9af 100644 --- a/shell/diy.sh +++ b/shell/diy.sh @@ -66,14 +66,6 @@ GreyStart() { ColorReset() { echo -e "$COLOUR_RESET\c" } - -InitBanner() { - echo -e "${GREEN_LINE}" - echo -e " https://github.com/wukongdaily/diy-nas-onescript" - echo -e "${GREEN_LINE}" - echo -e "" -} - # 定义红色文本 RED='\033[0;31m' # 无颜色 @@ -658,21 +650,24 @@ show_menu() { echo -e "${GREEN_LINE}" echo ' - *********** DIY NAS 工具箱v1.1 *************** + *********** DIY NAS 工具箱v1.2 *************** 适配系统:deepin 20.9/v23 beta2(基于debian) 脚本作用:快速部署一个办公场景下的Diy NAS --- Made by wukong with YOU --- ' + echo -e " https://github.com/wukongdaily/diy-nas-onescript" echo -e "${GREEN_LINE}" echo "请选择操作:" + # 特殊处理的项数组 + special_items=("设置虚拟机开机自启动(headless)" "VirtualBox硬盘直通" "创建root身份的VirtualBox图标" "刷新虚拟硬盘的UUID") for i in "${!menu_options[@]}"; do - if [[ "${menu_options[i]}" == "设置虚拟机开机自启动(headless)" ]]; then - echo -e "$((i + 1)). ${YELLOW}${menu_options[i]}${NO_COLOR}" - elif [[ "${menu_options[i]}" == "VirtualBox硬盘直通" ]]; then - echo -e "$((i + 1)). ${aCOLOUR[0]}${menu_options[i]}${NO_COLOR}" + if [[ " ${special_items[*]} " =~ " ${menu_options[i]} " ]]; then + # 如果当前项在特殊处理项数组中,使用特殊颜色 + echo -e "$((i + 1)). ${aCOLOUR[7]}${menu_options[i]}${NO_COLOR}" else + # 否则,使用普通格式 echo "$((i + 1)). ${menu_options[i]}" fi done From e53fba6a0913f82b81d3f55db58c512f409b38b6 Mon Sep 17 00:00:00 2001 From: wukongdaily <2666180@gmail.com> Date: Wed, 20 Dec 2023 17:05:44 +0800 Subject: [PATCH 5/5] Update diy.sh MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 在自启动虚拟机中,添加自动登录。 --- shell/diy.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/shell/diy.sh b/shell/diy.sh index a08a9af..3e7a60c 100644 --- a/shell/diy.sh +++ b/shell/diy.sh @@ -467,6 +467,8 @@ do_autostart_vm() { rm $TMP_RC_LOCAL rm "$TMP_VM_LIST" + setautologin + # 显示/etc/rc.local的内容 Show 0 "已更新/etc/rc.local文件。您可以查看配置,以确认自启动虚拟机设置。" cat /etc/rc.local