UOS等Linux系统可以用的快捷启动程序的sh脚本

这是一个写给普通用户使用的sh脚本,功能就是双击启动,就可以自动运行相同目录下的可执行文件(存在多个可执行程序时,可以按一定规则优先运行某个程序,也可以列出当前目录下的可执行程序清单,输入对应序号回车,自行对应程序),包含但不限于Python代码、其他SH脚本等,具体看代码注释即可。
1、如果是UOS系统,第一次启动时,右键单击sh脚本,属性里面授予可执行程序权限。后续就可以直接双击启动-选择“在终端中运行”。 
2、如果是Ubuntu系统,第一次启动时,右键单击sh脚本,属性里面授予可执行程序权限。后续可以右键单击—选择“作为程序运行”
3、如果是uos系统,且安装了UOS自己的deepin-wine8-stable软件(这个是UOS或deepin的专用的wine兼容包),还可以自动执行exe。包括安装程序或者绿色软件都可以执行。不过你第一次运行时可能需要自己补充下win7字体包。具体补充字体方法:
a.先确认安装了deepin-wine8-stable,若没安装,请用sudo apt install deepin-wine8-stable进行安装。
b.用本脚本先随便运行一个exe程序,让wine程序完成第一次初始化,exe程序界面打开后(第一次可能因为缺少字体而乱码),就可以关闭了。这样才能后续补充字体。
c.去其他网站下载个win7字体库包,把全部win7字体,解压后,复制到下面的文件夹“~/.wine/drive_c/windows/Fonts”,(打开文件管理器,按快捷键Ctrl+L,就可以调出地址栏,把这个路径复制进去敲回车,就可以进入wine的默认字体文件夹了)
d.再次用本sh脚本调用exe程序,你会发现exe应该都正常使用了。(ARM构架的主机可能只能运行一些简单的软件,复杂的,有时会出错,怀疑是性能不够,所以Linux系统最好还是用原生程序)
完整sh脚本如下:

#!/bin/bash

# 描述功能
echo -e "运行在终端的脚本,会自动查找同级目录下py、pyc、run、sh、exe后缀的文件。若只有一个可执行程序,会自动执行;有多个程序时,若存在“index_”开头的程序也会自动执行,否则会列出文件名称,输入对应序号即可执行对应程序。\n若你执行的是可执行文件(*.run),或者执行的文件名字包含“_UI”或“_GUI”字样时,退出程序后,终端窗口也会立即关闭。\n若你执行的是Windows程序(*.exe),则会尝试调用“deepin-wine8-stable”命令来运行它,需要电脑已安装有deepin-wine8-stable软件。\n"

# 获取当前目录
current_dir=$(pwd)

# 获取当前脚本的名称
current_script=$(basename "$0")

# 查找当前目录下后缀为 .py、.pyc、.run、.sh、.exe 的文件
files=($(find "$current_dir" -maxdepth 1 -type f \( -name "*.exe" -o -name "*.py" -o -name "*.pyc" -o -name "*.run" -o -name "*.sh" \) ! -name "$current_script"))

# 获取文件数量
file_count=${#files[@]}

# 提示信息函数
function prompt_message {
    echo "未在 $current_dir 目录下找到可执行的py、pyc、run、sh、exe后缀的文件。"
}

# 执行文件函数
function execute_file {
    local file=$1
    echo "若您执行的是带界面的程序又没看到程序窗口,请最小化本窗口试下。(可能程序界面出现在终端窗口后面,被挡住啦)"
    #echo "正在执行文件: $file"  # 添加调试信息
    case "$file" in
        *.py) python3 "$file" ;;
        *.pyc) python3 "$file" ;;
        *.run) chmod +x "$file" && "$file" ;;
        *.sh) sh "$file" ;;
        *.exe) deepin-wine8-stable "$file" ;;
        *) echo "无法识别的文件类型: $file" ;;
    esac
}

# 检查文件数量
if [[ $file_count -eq 0 ]]; then
    prompt_message
elif [[ $file_count -eq 1 ]]; then
    selected_file="${files[0]}"
    echo "检测到唯一可执行的文件: $selected_file"
    execute_file "$selected_file"
else
    # 查找是否存在以 "index_" 开头的文件
    index_file=""
    for file in "${files[@]}"; do
        if [[ $(basename "$file") == index_* ]]; then
            index_file="$file"
            break
        fi
    done

    if [[ -n $index_file ]]; then
        selected_file="$index_file"
        echo "检测到以 'index_' 开头的文件: $selected_file"
        execute_file "$selected_file"
    else
        # 列出所有可执行文件
        echo "检测到多个可执行文件:"
        selectable_files=()
        for i in "${!files[@]}"; do
            selectable_files+=("${files[i]}")
            echo "$(( ${#selectable_files[@]} )). $(basename "${files[i]}")"
        done

        # 提示用户选择要执行的文件
        read -p "请输入要执行的文件的数字序号: " choice

        if [[ $choice -ge 1 && $choice -le ${#selectable_files[@]} ]]; then
            selected_file="${selectable_files[$((choice-1))]}"
            echo "您选择了: $selected_file"
            execute_file "$selected_file"
        else
            echo "无效的选择。"
        fi
    fi
fi

# 如果选中的文件是 .run 或者 .exe 文件,或者文件名中包含 "_UI" 或 "_GUI" 时,不保持终端打开
if [[ $selected_file == *.run || $selected_file == *.exe || $selected_file == *_UI* || $selected_file == *_GUI* ]]; then
    exit 0
else
    read -p "按任意键退出..."
fi

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值