[更新] 优化目录结构

This commit is contained in:
寻觅(樊旭东) 2024-03-19 23:57:50 +08:00
parent 4afc66bdc5
commit 9153924a69
7 changed files with 63 additions and 80 deletions

View File

@ -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

View File

@ -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
}

View File

@ -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

View File

@ -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 "已成功安装 言灵 ${言灵一版本一在线}"