From 9153924a694882330651bc5f1306eea269e564d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AF=BB=E8=A7=85?= Date: Tue, 19 Mar 2024 23:57:50 +0800 Subject: [PATCH] =?UTF-8?q?[=E6=9B=B4=E6=96=B0]=20=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E7=9B=AE=E5=BD=95=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bin/untar.sh | 54 -------------------- 公共/函数.zsh | 30 +++++++++++ 公共/开发环境.zsh | 39 ++++++++------ 安装.zsh | 20 ++++---- {发行版 => 定制/发行版}/Arch/定期运行-Arch版 | 0 {发行版 => 定制/发行版}/Arch/清理缓存-Arch版 | 0 {龙架构 => 定制/龙架构}/loongjet.sh | 0 7 files changed, 63 insertions(+), 80 deletions(-) delete mode 100755 bin/untar.sh rename {发行版 => 定制/发行版}/Arch/定期运行-Arch版 (100%) rename {发行版 => 定制/发行版}/Arch/清理缓存-Arch版 (100%) rename {龙架构 => 定制/龙架构}/loongjet.sh (100%) diff --git a/bin/untar.sh b/bin/untar.sh deleted file mode 100755 index fc38a9e..0000000 --- a/bin/untar.sh +++ /dev/null @@ -1,54 +0,0 @@ -#!/bin/zsh - - -# 这个脚本可以根据文件 16 进制判断压缩格式,然后通过对应命令解压 -# 解压函数:file 接收文件名,cmd 接收命令,opt 参数选项 -decompress() { - file=$1 - cmd=$2 - opt=$3 - $cmd $opt $file -} - - -# 数组:存储支持的压缩格式和对应的文件头和解压命令 -# 每个元素的格式为:文件 16 进制头:解压命令:选项 -formats=( -377abcaf:7z:x -213c6172:ar:x -425a6839:bunzip2: -504b0304:unzip: -7f454c46:7z:x -1f8b0808:gunzip: -5d000080:unlzma: -1f8b0800:tar:-zxvf -fd377a58:unxz: -) -#判断是否为 tar -filesion=$(file $1 | cut -d':' -f2-) -if [[ "$filesion" == *tar* ]]; then - tar -xvf "$1" -#判断是否为文件 -elif [[ -f $1 ]]; then - header=$(xxd -p -l 4 $1) - # 定义一个变量,表示是否找到匹配的格式 - found=0 - # 遍历数组,匹配文件头和解压命令 - for format in $formats; do - # 使用 IFS 分隔数组元素的各个字段 - IFS=: read head cmd opt <<< $format - # 如果文件头匹配,调用解压函数,并设置 found 为 1 - if [[ $header == $head* ]]; then - decompress $1 $cmd $opt - found=1 - break - fi - done - # 如果没有找到匹配的格式,打印提示信息 - if [[ $found == 0 ]]; then - echo "无法识别的压缩格式" - fi -else - echo "不是一个文件" - fi - diff --git a/公共/函数.zsh b/公共/函数.zsh index e7128ee..bedf545 100644 --- a/公共/函数.zsh +++ b/公共/函数.zsh @@ -95,3 +95,33 @@ readonly 色彩=( return 0 } +解压(){ + 文件名=$1 + 后缀="${文件名##*.}" + + # 根据后缀选择解压命令 + case ${后缀} in + "tar.gz" | "tgz") + tar -xzvf ${文件名} + ;; + "tar.xz") + tar -xJvf ${文件名} + ;; + "tar.bz2" | "tbz2") + tar -xjvf ${文件名} + ;; + "zip") + unzip ${文件名} + ;; + "rar") + unrar x ${文件名} + ;; + "7z") + 7z x ${文件名} + ;; + *) + echo "不支持的压缩格式" + return 1 + ;; + esac +} diff --git a/公共/开发环境.zsh b/公共/开发环境.zsh index d617dfe..9c0ddee 100644 --- a/公共/开发环境.zsh +++ b/公共/开发环境.zsh @@ -18,11 +18,11 @@ local 旧世界一下载地址="http://ftp.loongnix.cn" -typeset -A 语言一go=( - ['主件']=['go' 'gofmt'] +typeset -A 语言一GO=( + ['组件']=('go' 'gofmt') ['下载地址']="https://golang.google.cn/dl/" - ['版本正则']="go1.*linux-${系统一主机架构}\.tar\.gz" - ['旧世界地址']="${旧世界一下载地址}/toolchain/golang/go-1.21/abi1.0/go1.21.5.linux-loong64.tar.gz" + ['版本正则']="go1.*linux-架构\.tar\.gz" + ['旧世界版本']="go1.22.0" ) ############################################################################# @@ -31,33 +31,37 @@ typeset -A 语言一go=( # latest_version=$(curl -s https://golang.google.cn/dl/ | grep -o 'go1.*linux-.*\.tar\.gz' | head -n 1) -开发环境一检测一go(){ +开发环境一检测一GO(){ + 输出 0 "2: ${言灵一函数}" # 检测安装情况 - 版本一在线=$(curl -s ${语言} | grep -o 'go1.*linux-.*\.tar\.gz' | head -n 1) - if [[ ${系统一世界类型}=="旧世界" ]]; then - 版本一在线="go1.21.5" - 下载地址="${旧世界一下载地址}/toolchain/golang/go-1.21/abi1.0/go1.21.5.linux-loong64.tar.gz" + unset 下载地址 + 版本一在线=$(curl -s ${语言一GO[下载地址]} | grep -o $(echo "${语言一GO[版本正则]}" | sed "s/架构/${言灵一系统架构}/g") | head -n 1) + if [[ ${系统一世界类型} == "旧世界" ]]; then + echo "旧世界?" + 版本一在线=${语言一GO[旧世界版本]} + 下载地址="${旧世界一下载地址}/toolchain/golang/${版本一在线%.*}/abi1.0/${版本一在线}.linux-loong64.tar.gz" fi - if 1;then + 输出 0 "版本: ${版本一在线}" + if 版本对比 ${版本一主机} ${版本一在线}; then 版本一主机=$(go version) | awk '{print $3}' fi } -# 用于检测 +# 用于检测当前版本是否最新 +# *-* -> 位置参数1 <- 需要检测的编程语言 +# -*- -> 返回值 <- 如果 本地版本 >= 在线版本 返会 空, 反之这会返回最新的在线版本下载地址 开发环境一检测(){ } # 加载主机信息 开发环境一初始化(){ - 目录一配置=$HOME/.config/xunmi - source ${目录一配置}/信息.zsh - - if [[ ${系统一主机架构}=="龙" ]]; then - if [[ ${系统一世界类型}=="新世界" ]]; then + if [[ ${言灵一系统一主机架构} == "龙" ]]; then + if [[ ${言灵一系统一世界类型} == "新世界" ]]; then 系统一主机架构="loong64" fi fi + 系统一主机架构=${言灵一系统一主机架构} } 开发环境一安装一go(){ @@ -72,7 +76,10 @@ typeset -A 语言一go=( # 主函数(main) # ############################################################################### +source $HOME/.config/xunmi/信息 +source ${言灵一路径}/x/公共/函数.zsh 开发环境一初始化 +开发环境一检测一GO diff --git a/安装.zsh b/安装.zsh index fd133b8..d92eb61 100755 --- a/安装.zsh +++ b/安装.zsh @@ -9,7 +9,7 @@ source /etc/os-release # 脚本在执行过程中遇到任何非零返回码的命令时立即退出 # set -e -readonly 言灵一版本一在线="v1.0.0" +readonly 言灵一版本="v1.0.0" ############################################################################### # 全局变量 # @@ -122,8 +122,8 @@ readonly 系统一发行版一名称=$(echo "${NAME}") 检查一架构 检查一发行版 # 检查本地版本 - if [[ -n ${言灵一版本一本地} ]]; then - if 版本对比 ${言灵一版本一在线} ${言灵一版本一本地}; then + if [[ -n ${言灵一本地版本} ]]; then + if 版本对比 ${言灵一版本} ${言灵一本地版本}; then 是否 "发现本地版本已是最新版, 是否需要重复安装" || 输出 1 "已退出安装" fi fi @@ -131,10 +131,11 @@ readonly 系统一发行版一名称=$(echo "${NAME}") 配置信息=${目录一配置}/信息 rm -v ${配置信息} echo "言灵一路径=${言灵一路径}" >> ${配置信息} - echo "言灵一版本一本地=${言灵一版本一在线}" >> ${配置信息} - echo "言灵一系统一发行版=${系统一发行版一标识符}" >> ${配置信息} - echo "言灵一系统一世界类型=${世界一类型}" >> ${配置信息} - echo "言灵一系统一主机架构=${主机一架构}" >> ${配置信息} + echo "言灵一发行系统=${系统一发行版一标识符}" >> ${配置信息} + if [[ ${主机一架构} == "龙" ]];then + echo "言灵一世界类型=${世界一类型}" >> ${配置信息} + fi + echo "言灵一系统架构=${主机一架构}" >> ${配置信息} 输出 0 "主机信息检测完毕" } @@ -292,6 +293,5 @@ echo "执行目录: ${目录一根}" 优化一常用命令 # 配置一开发环境 -echo "言灵一版本一本地=${言灵一版本一在线}" >> ${目录一配置}/信息 - -输出 0 "已成功安装 言灵 ${言灵一版本一在线}" +echo "言灵一本地版本=${言灵一版本}" >> ${目录一配置}/信息 +输出 0 "已成功安装 言灵 ${言灵一版本}" diff --git a/发行版/Arch/定期运行-Arch版 b/定制/发行版/Arch/定期运行-Arch版 similarity index 100% rename from 发行版/Arch/定期运行-Arch版 rename to 定制/发行版/Arch/定期运行-Arch版 diff --git a/发行版/Arch/清理缓存-Arch版 b/定制/发行版/Arch/清理缓存-Arch版 similarity index 100% rename from 发行版/Arch/清理缓存-Arch版 rename to 定制/发行版/Arch/清理缓存-Arch版 diff --git a/龙架构/loongjet.sh b/定制/龙架构/loongjet.sh similarity index 100% rename from 龙架构/loongjet.sh rename to 定制/龙架构/loongjet.sh