[更新] 优化目录结构
This commit is contained in:
parent
4afc66bdc5
commit
9153924a69
54
bin/untar.sh
54
bin/untar.sh
|
@ -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
|
|
||||||
|
|
30
公共/函数.zsh
30
公共/函数.zsh
|
@ -95,3 +95,33 @@ readonly 色彩=(
|
||||||
return 0
|
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
|
||||||
|
}
|
||||||
|
|
39
公共/开发环境.zsh
39
公共/开发环境.zsh
|
@ -18,11 +18,11 @@
|
||||||
|
|
||||||
local 旧世界一下载地址="http://ftp.loongnix.cn"
|
local 旧世界一下载地址="http://ftp.loongnix.cn"
|
||||||
|
|
||||||
typeset -A 语言一go=(
|
typeset -A 语言一GO=(
|
||||||
['主件']=['go' 'gofmt']
|
['组件']=('go' 'gofmt')
|
||||||
['下载地址']="https://golang.google.cn/dl/"
|
['下载地址']="https://golang.google.cn/dl/"
|
||||||
['版本正则']="go1.*linux-${系统一主机架构}\.tar\.gz"
|
['版本正则']="go1.*linux-架构\.tar\.gz"
|
||||||
['旧世界地址']="${旧世界一下载地址}/toolchain/golang/go-1.21/abi1.0/go1.21.5.linux-loong64.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)
|
# 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)
|
unset 下载地址
|
||||||
if [[ ${系统一世界类型}=="旧世界" ]]; then
|
版本一在线=$(curl -s ${语言一GO[下载地址]} | grep -o $(echo "${语言一GO[版本正则]}" | sed "s/架构/${言灵一系统架构}/g") | head -n 1)
|
||||||
版本一在线="go1.21.5"
|
if [[ ${系统一世界类型} == "旧世界" ]]; then
|
||||||
下载地址="${旧世界一下载地址}/toolchain/golang/go-1.21/abi1.0/go1.21.5.linux-loong64.tar.gz"
|
echo "旧世界?"
|
||||||
|
版本一在线=${语言一GO[旧世界版本]}
|
||||||
|
下载地址="${旧世界一下载地址}/toolchain/golang/${版本一在线%.*}/abi1.0/${版本一在线}.linux-loong64.tar.gz"
|
||||||
fi
|
fi
|
||||||
if 1;then
|
输出 0 "版本: ${版本一在线}"
|
||||||
|
if 版本对比 ${版本一主机} ${版本一在线}; then
|
||||||
版本一主机=$(go version) | awk '{print $3}'
|
版本一主机=$(go version) | awk '{print $3}'
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# 用于检测
|
# 用于检测当前版本是否最新
|
||||||
|
# *-* -> 位置参数1 <- 需要检测的编程语言
|
||||||
|
# -*- -> 返回值 <- 如果 本地版本 >= 在线版本 返会 空, 反之这会返回最新的在线版本下载地址
|
||||||
开发环境一检测(){
|
开发环境一检测(){
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# 加载主机信息
|
# 加载主机信息
|
||||||
开发环境一初始化(){
|
开发环境一初始化(){
|
||||||
目录一配置=$HOME/.config/xunmi
|
if [[ ${言灵一系统一主机架构} == "龙" ]]; then
|
||||||
source ${目录一配置}/信息.zsh
|
if [[ ${言灵一系统一世界类型} == "新世界" ]]; then
|
||||||
|
|
||||||
if [[ ${系统一主机架构}=="龙" ]]; then
|
|
||||||
if [[ ${系统一世界类型}=="新世界" ]]; then
|
|
||||||
系统一主机架构="loong64"
|
系统一主机架构="loong64"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
系统一主机架构=${言灵一系统一主机架构}
|
||||||
}
|
}
|
||||||
|
|
||||||
开发环境一安装一go(){
|
开发环境一安装一go(){
|
||||||
|
@ -72,7 +76,10 @@ typeset -A 语言一go=(
|
||||||
# 主函数(main) #
|
# 主函数(main) #
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
|
source $HOME/.config/xunmi/信息
|
||||||
|
source ${言灵一路径}/x/公共/函数.zsh
|
||||||
开发环境一初始化
|
开发环境一初始化
|
||||||
|
|
||||||
|
开发环境一检测一GO
|
||||||
|
|
||||||
|
|
||||||
|
|
20
安装.zsh
20
安装.zsh
|
@ -9,7 +9,7 @@ source /etc/os-release
|
||||||
# 脚本在执行过程中遇到任何非零返回码的命令时立即退出
|
# 脚本在执行过程中遇到任何非零返回码的命令时立即退出
|
||||||
# set -e
|
# set -e
|
||||||
|
|
||||||
readonly 言灵一版本一在线="v1.0.0"
|
readonly 言灵一版本="v1.0.0"
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# 全局变量 #
|
# 全局变量 #
|
||||||
|
@ -122,8 +122,8 @@ readonly 系统一发行版一名称=$(echo "${NAME}")
|
||||||
检查一架构
|
检查一架构
|
||||||
检查一发行版
|
检查一发行版
|
||||||
# 检查本地版本
|
# 检查本地版本
|
||||||
if [[ -n ${言灵一版本一本地} ]]; then
|
if [[ -n ${言灵一本地版本} ]]; then
|
||||||
if 版本对比 ${言灵一版本一在线} ${言灵一版本一本地}; then
|
if 版本对比 ${言灵一版本} ${言灵一本地版本}; then
|
||||||
是否 "发现本地版本已是最新版, 是否需要重复安装" || 输出 1 "已退出安装"
|
是否 "发现本地版本已是最新版, 是否需要重复安装" || 输出 1 "已退出安装"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
@ -131,10 +131,11 @@ readonly 系统一发行版一名称=$(echo "${NAME}")
|
||||||
配置信息=${目录一配置}/信息
|
配置信息=${目录一配置}/信息
|
||||||
rm -v ${配置信息}
|
rm -v ${配置信息}
|
||||||
echo "言灵一路径=${言灵一路径}" >> ${配置信息}
|
echo "言灵一路径=${言灵一路径}" >> ${配置信息}
|
||||||
echo "言灵一版本一本地=${言灵一版本一在线}" >> ${配置信息}
|
echo "言灵一发行系统=${系统一发行版一标识符}" >> ${配置信息}
|
||||||
echo "言灵一系统一发行版=${系统一发行版一标识符}" >> ${配置信息}
|
if [[ ${主机一架构} == "龙" ]];then
|
||||||
echo "言灵一系统一世界类型=${世界一类型}" >> ${配置信息}
|
echo "言灵一世界类型=${世界一类型}" >> ${配置信息}
|
||||||
echo "言灵一系统一主机架构=${主机一架构}" >> ${配置信息}
|
fi
|
||||||
|
echo "言灵一系统架构=${主机一架构}" >> ${配置信息}
|
||||||
输出 0 "主机信息检测完毕"
|
输出 0 "主机信息检测完毕"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -292,6 +293,5 @@ echo "执行目录: ${目录一根}"
|
||||||
优化一常用命令
|
优化一常用命令
|
||||||
# 配置一开发环境
|
# 配置一开发环境
|
||||||
|
|
||||||
echo "言灵一版本一本地=${言灵一版本一在线}" >> ${目录一配置}/信息
|
echo "言灵一本地版本=${言灵一版本}" >> ${目录一配置}/信息
|
||||||
|
输出 0 "已成功安装 言灵 ${言灵一版本}"
|
||||||
输出 0 "已成功安装 言灵 ${言灵一版本一在线}"
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user