x/安装.zsh

142 lines
4.4 KiB
Bash
Executable File

#!/usr/bin/zsh
# 将终端的输出重置为默认设置,并且不会换行(用于重置终端的字体颜色、背景色和文本样式等设置)
echo -e "\e[0m\c"
export PATH=/usr/sbin:$PATH
# 让apt包管理器处于非交互模式运行
export DEBIAN_FRONTEND=noninteractive
# 加载系统配置
source /etc/os-release
# 脚本在执行过程中遇到任何非零返回码的命令时立即退出
set -e
###############################################################################
# 全局变量 #
###############################################################################
readonly 安装_通用_包=('wget' 'curl' 'git' 'vim')
readonly CPU_架构="$(uname -m)"
readonly 系统_类型="$(uname -s)"
readonly 系统_版本="$(uname -r)"
# ID_LIKE不为空,则输出ID_LIKE的值,否则输出ID的值
readonly 系统_发行版=$( ([ -n "${ID_LIKE}" ] && echo "${ID_LIKE}") || ([ -n "${ID}" ] && echo "${ID}"))
readonly 系统_发行版_名称=$(echo "${NAME}")
# 龙架构区分新旧世界的标志位
世界_类型="新世界"
###############################################################################
# 终端配色 #
###############################################################################
# 色彩配置
readonly 色彩重置='\e[0m'
readonly 色彩=(
'\e[38;5;154m' # 0: 亮绿
'\e[1m' # 1: 白
'\e[90m' # 2: 灰
'\e[91m' # 3: 红
'\e[32m' # 4: 绿
'\e[33m' # 5: 黄
)
# 用于规范输出的工具
# 位置参数 1 -> 整数 <- 1: 成功(亮绿); 2: 失败(红色); 3: 信息(绿色); 4: 通知(黄色)
# 位置参数 2 -> 字符 <- 在命令行输出的字符串
# 实例 `输出 0 "执行成功"`; `输出 3 "请及时更新依赖"`
输出() {
if (($1 == 0)); then
echo -e "${色彩[2]}[${色彩重置}${色彩[0]} 成功 ${色彩重置}${色彩[2]}]${色彩重置} $2"
elif (($1 == 1)); then
echo -e "${色彩[2]}[${色彩重置}${色彩[3]} 失败 ${色彩重置}${色彩[2]}]${色彩重置} $2"
exit 1
elif (($1 == 2)); then
echo -e "${色彩[2]}[${色彩重置}${色彩[4]} 信息 ${色彩重置}${色彩[2]}]${色彩重置} $2"
elif (($1 == 3)); then
echo -e "${色彩[2]}[${色彩重置}${色彩[5]} 通知 ${色彩重置}${色彩[2]}]${色彩重置} $2"
fi
}
# 灰色信息(处理一些无关紧要的信息, 调用后在没有清除颜色之前会一直使用灰色输出)
色彩_灰色() {
echo -e "${色彩[2]}\c"
}
# 清除颜色(一般和灰色信息连用)
色彩_清除() {
echo -e "${色彩重置}\c"
}
###############################################################################
# 函数/方法 #
###############################################################################
是否() {
输出 3 "$1((是/否 Yes/No))"
read r
if echo "$r" | grep -Eq "^[是Yy][Ee]?[Ss]?$";then
return 0
else
return 1
fi
}
检查_架构() {
case ${CPU_架构} in
*x86_64*)
主机_架构="amd64"
;;
*loong*)
主机_架构="龙"
;;
*)
输出 1 "暂不支持${色彩[3]} ${CPU_架构} ${色彩重置}架构"
exit 1
;;
esac
输出 2 "检测到${色彩[5]} ${主机_架构} ${色彩重置}架构"
}
检查_发行版() {
未知=0
case ${系统_发行版} in
# *arch*) ;;
*Loongnix*);;
*openwrt*)
输出 1 "暂不支持openwrt"
exit 1
;;
*)
未知=1
;;
esac
输出 2 "检测到 ${系统_发行版_名称} (${系统_发行版}) 系统"
if [[ ${未知} == 1 ]]; then
if ! 是否 "此发行版尚未验证, 是否尝试继续安装"; then
输出 1 "已退出安装"
exit 1
fi
fi
}
输出_主机配置(){
echo "
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
* 欢迎使用 寻觅 配置脚本 *
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
"
输出 2 "主机信息检测模块启动"
检查_架构
检查_发行版
输出 0 "主机信息检测完毕"
}
###############################################################################
# 入口(main) #
###############################################################################
输出_主机配置