[更新] 优化目录结构
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
|
||||
}
|
||||
|
||||
解压(){
|
||||
文件名=$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"
|
||||
|
||||
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
|
||||
|
||||
|
||||
|
|
20
安装.zsh
20
安装.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 "已成功安装 言灵 ${言灵一版本}"
|
||||
|
|
Loading…
Reference in New Issue
Block a user