[新增] 新增top优化模块(只适配了龙架构), 在中的日志输出模块添加异常(紫色)选项

This commit is contained in:
xunmi-pc 2024-02-22 10:34:40 +08:00
parent ac24847591
commit 3e26ec80e0
5 changed files with 117 additions and 45 deletions

Binary file not shown.

View File

@ -17,15 +17,16 @@
# 色彩配置 # 色彩配置
readonly 色彩重置='\e[0m' readonly 色彩重置='\e[0m'
readonly 色彩=( readonly 色彩=(
'\e[92m' # 1: 绿 '\e[92m' # 1: 绿
'\e[90m' # 2: '\e[90m' # 2:
'\e[31m' # 3: 暗红 '\e[31m' # 3: 暗红
'\e[32m' # 4: 暗绿 '\e[32m' # 4: 暗绿
'\e[33m' # 5: 暗黄 '\e[33m' # 5: 暗黄
'\e[95m' # 6: 亮紫
) )
# 用于规范输出的工具 # 用于规范输出的工具
# 位置参数 1 -> 整数 <- 1: 成功(亮绿); 2: 失败(); 3: 信息(绿色); 4: 通知(黄色) # 位置参数 1 -> 整数 <- 1: 成功(亮绿); 2: 失败(红); 3: 信息(绿色); 4: 通知(黄色); 5: 异常(紫色)
# 位置参数 2 -> 字符 <- 在命令行输出的字符串 # 位置参数 2 -> 字符 <- 在命令行输出的字符串
# 实例 `输出 0 "执行成功"`; `输出 3 "请及时更新依赖"` # 实例 `输出 0 "执行成功"`; `输出 3 "请及时更新依赖"`
输出() { 输出() {
@ -38,6 +39,9 @@ readonly 色彩=(
echo -e "${色彩[2]}[${色彩重置}${色彩[4]} 信息 ${色彩重置}${色彩[2]}]${色彩重置} $2" echo -e "${色彩[2]}[${色彩重置}${色彩[4]} 信息 ${色彩重置}${色彩[2]}]${色彩重置} $2"
elif (($1 == 3)); then elif (($1 == 3)); then
echo -e "${色彩[2]}[${色彩重置}${色彩[5]} 通知 ${色彩重置}${色彩[2]}]${色彩重置} $2" echo -e "${色彩[2]}[${色彩重置}${色彩[5]} 通知 ${色彩重置}${色彩[2]}]${色彩重置} $2"
elif (($1 == 4)); then
echo -e "${色彩[2]}[${色彩重置}${色彩[6]} 异常 ${色彩重置}${色彩[2]}]${色彩重置} $2"
return 1
fi fi
} }

View File

@ -49,7 +49,11 @@ readonly 系统_发行版_名称=$(echo "${NAME}")
;; ;;
*loong*) *loong*)
主机_架构="龙" 主机_架构="龙"
;; # 6之前除了5.19以外的所有内核都是旧世界
if [[ ${系统_版本} =~ ^[3,4,5].+ && !${系统_版本} =~ ^5.19.0-.+ ]]; then
世界_类型="旧世界"
fi
;;
*) *)
输出 1 "暂不支持${色彩[3]} ${CPU_架构} ${色彩重置}架构" 输出 1 "暂不支持${色彩[3]} ${CPU_架构} ${色彩重置}架构"
exit 1 exit 1
@ -75,12 +79,15 @@ readonly 系统_发行版_名称=$(echo "${NAME}")
*) *)
未知=1 未知=1
;; ;;
esac esac
输出 2 "检测到 ${系统_发行版_名称} (${系统_发行版}) 系统" 输出 2 "检测到 ${系统_发行版_名称} (${系统_发行版}) 系统"
if [[ ${未知} == 1 ]]; then if [[ ${未知} == 1 ]]; then
if ! 是否 "此发行版尚未验证, 是否尝试继续安装"; then if 是否 "此发行版尚未验证, 是否尝试继续安装"; then
输出 1 "已退出安装" 输出 3 "在尚未验证的系统中安装可能会出现未知问题, 如果部分字体出现 口口口 或者乱码的问题, 请手动安装nerd-fonts字体家族的字体"
exit 1 else
输出 1 "已退出安装"
exit 1
fi fi
fi fi
} }
@ -89,6 +96,12 @@ readonly 系统_发行版_名称=$(echo "${NAME}")
输出 2 "主机信息检测模块启动" 输出 2 "主机信息检测模块启动"
检查_架构 检查_架构
检查_发行版 检查_发行版
# 将本机信息更新到指定文件
mkdir -vp ${目录_配置}
rm -v ${目录_配置}/信息.zsh
echo "系统_发行版标识=${系统_发行版_标识}" >> ${目录_配置}/信息.zsh
echo "系统_世界类型=${世界_类型}" >> ${目录_配置}/信息.zsh
echo "系统_主机架构=${主机_架构}" >> ${目录_配置}/信息.zsh
输出 0 "主机信息检测完毕" 输出 0 "主机信息检测完毕"
} }
@ -109,7 +122,7 @@ readonly 系统_发行版_名称=$(echo "${NAME}")
} }
优化_常用命令_ls(){ 优化_常用命令_ls(){
输出 2 "启动ls优化, lsd是rust编写的兼容ls的目录查看工具, 其丰富的配色和图标可有效增加目录的可读性" 输出 2 "启动ls优化"
色彩_灰色 色彩_灰色
if ! 包管_安装 "lsd"; then if ! 包管_安装 "lsd"; then
是否 "在系统源中未发现lsd, 是否使用cargo安装(需要rust语言, 如系统没有则会自动安装)" || return 201 是否 "在系统源中未发现lsd, 是否使用cargo安装(需要rust语言, 如系统没有则会自动安装)" || return 201
@ -127,15 +140,27 @@ readonly 系统_发行版_名称=$(echo "${NAME}")
grep -q "${别名}" "$HOME/.zshrc" || echo ${别名} >> $HOME/.zshrc grep -q "${别名}" "$HOME/.zshrc" || echo ${别名} >> $HOME/.zshrc
fi fi
输出 0 "ls优化完成" 输出 0 "ls优化完成"
}
优化_常用命令_top(){
if [[ ${主机_架构}=="龙" ]]; then
xmtop版本="v4.2.1"
输出 2 "开始下载 xmtop-${xmtop版本}-${世界_类型}"
xmtop_url="https://gitea.whlug.cn/xunmi/xmtop/releases/download/${xmtop版本}/xmtop_${世界_类型}"
sudo wget -t 3 -q --show-progress -c ${xmtop_url} || 输出 5 "无法下载程序包" || return 301
sudo mv -v xmtop_${世界_类型} /usr/bin/xmtop
else
输出 2 "${主机_架构} 架构, 暂未适配top优化, 推荐手动安装gotop, btop等代替top"
fi
输出 0 "xmtop配置完毕, 输入xmtop查看效果"
} }
优化_常用命令(){ 优化_常用命令(){
typeset -A 列表=( typeset -A 列表=(
["vim"]="添加常用配置项(允许复制 添加行号 显式当前行等), 常用插件(目录 语法检测)" ["vim"]="添加常用配置项(允许复制 添加行号 显式当前行等), 常用插件(目录 语法检测)"
["ls"]="使用lsd替代老旧的ls, 需要rust的cargo" ["ls"]="使用lsd替代老旧的ls, (lsd是rust编写的兼容ls的目录查看工具, 其丰富的配色和图标可有效增加目录的可读性)"
["top"]="使用xmtop替代老旧的top" ["cat"]="使用bat替代cat"
["cat"]="使用bat替代cat" ["top"]="使用xmtop替代老旧的top系统信息监控功能"
["sed"]="使用学习成本较低的sd替代sed" ["sed"]="使用学习成本较低的sd替代sed"
) )
输出 2 "正在优化 ${(k)列表} 命令" 输出 2 "正在优化 ${(k)列表} 命令"
@ -169,14 +194,15 @@ echo "
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
" "
目录_根=$PWD 目录_根=$PWD
目录_配置=$HOME/.config/xunmi
# 判断当前执行的位置 如果不再项目路径中就去寻找路径 # 判断当前执行的位置 如果不再项目路径中就去寻找路径
if [ ! -f "公共/函数.zsh" ]; then if [ ! -f "公共/函数.zsh" ]; then
source $HOME/.config/xunmi/* source ${目录_配置}/*
目录_根=${寻觅}/x 目录_根=${寻觅}/x
fi fi
echo "执行目录: ${目录_根}" echo "执行目录: ${目录_根}"
# 先检查相关 # 先检查公共函数是否正常加载
[[ ${言灵_函数} == 1 ]] || . ${目录_根}/公共/函数.zsh || exit 2 && 输出 0 "公共函数模块初始化完成" [[ ${言灵_函数} == 1 ]] || . ${目录_根}/公共/函数.zsh || exit 2 && 输出 0 "公共函数模块初始化完成"
[[ ${言灵_包管} == 1 ]] || . ${目录_根}/公共/包管.zsh || exit 3 && 输出 0 "包管理器模块初始化完成" [[ ${言灵_包管} == 1 ]] || . ${目录_根}/公共/包管.zsh || exit 3 && 输出 0 "包管理器模块初始化完成"

View File

@ -22,7 +22,7 @@ readonly 系统_版本="$(uname -r)"
# ID_LIKE不为空,则输出ID_LIKE的值,否则输出ID的值 # ID_LIKE不为空,则输出ID_LIKE的值,否则输出ID的值
readonly 系统_发行版=$( ([ -n "${ID_LIKE}" ] && echo "${ID_LIKE}") || ([ -n "${ID}" ] && echo "${ID}")) readonly 系统_发行版=$( ([ -n "${ID_LIKE}" ] && echo "${ID_LIKE}") || ([ -n "${ID}" ] && echo "${ID}"))
readonly 系统_发行版_名称=$(echo "${NAME}") readonly 系统_发行版_名称=$(echo "${NAME}")
系统_发行版_标识=""
# 龙架构区分新旧世界的标志位 # 龙架构区分新旧世界的标志位
世界_类型="新世界" 世界_类型="新世界"
@ -49,7 +49,11 @@ readonly 系统_发行版_名称=$(echo "${NAME}")
;; ;;
*loong*) *loong*)
主机_架构="龙" 主机_架构="龙"
;; # 6之前除了5.19以外的所有内核都是旧世界
if [[ ${系统_版本} =~ ^[3,4,5].+ && !${系统_版本} =~ ^5.19.0-.+ ]]; then
世界_类型="旧世界"
fi
;;
*) *)
输出 1 "暂不支持${色彩[3]} ${CPU_架构} ${色彩重置}架构" 输出 1 "暂不支持${色彩[3]} ${CPU_架构} ${色彩重置}架构"
exit 1 exit 1
@ -63,7 +67,11 @@ readonly 系统_发行版_名称=$(echo "${NAME}")
case ${系统_发行版} in case ${系统_发行版} in
*arch*) ;; *arch*) ;;
*Loongnix*) ;; *Loongnix*) ;;
*aosc*) ;; *aosc*)
系统_发行版_标识符="安同"
# 前三个是字体包
系统_包列表=('jetbrains-mono' 'powerline-fonts' 'fantasque-sans-mono-nerd-fonts')
;;
*openwrt*) *openwrt*)
输出 1 "暂不支持openwrt" 输出 1 "暂不支持openwrt"
exit 1 exit 1
@ -71,12 +79,15 @@ readonly 系统_发行版_名称=$(echo "${NAME}")
*) *)
未知=1 未知=1
;; ;;
esac esac
输出 2 "检测到 ${系统_发行版_名称} (${系统_发行版}) 系统" 输出 2 "检测到 ${系统_发行版_名称} (${系统_发行版}) 系统"
if [[ ${未知} == 1 ]]; then if [[ ${未知} == 1 ]]; then
if ! 是否 "此发行版尚未验证, 是否尝试继续安装"; then if 是否 "此发行版尚未验证, 是否尝试继续安装"; then
输出 1 "已退出安装" 输出 3 "在尚未验证的系统中安装可能会出现未知问题, 如果部分字体出现 口口口 或者乱码的问题, 请手动安装nerd-fonts字体家族的字体"
exit 1 else
输出 1 "已退出安装"
exit 1
fi fi
fi fi
} }
@ -85,6 +96,12 @@ readonly 系统_发行版_名称=$(echo "${NAME}")
输出 2 "主机信息检测模块启动" 输出 2 "主机信息检测模块启动"
检查_架构 检查_架构
检查_发行版 检查_发行版
# 将本机信息更新到指定文件
mkdir -vp ${目录_配置}
rm -v ${目录_配置}/信息.zsh
echo "系统_发行版标识=${系统_发行版_标识}" >> ${目录_配置}/信息.zsh
echo "系统_世界类型=${世界_类型}" >> ${目录_配置}/信息.zsh
echo "系统_主机架构=${主机_架构}" >> ${目录_配置}/信息.zsh
输出 0 "主机信息检测完毕" 输出 0 "主机信息检测完毕"
} }
@ -102,35 +119,47 @@ readonly 系统_发行版_名称=$(echo "${NAME}")
git clone --depth 1 https://gitcode.com/mirrors/dense-analysis/ale.git ${vim_配置路径}/start/代码检查工具 git clone --depth 1 https://gitcode.com/mirrors/dense-analysis/ale.git ${vim_配置路径}/start/代码检查工具
cp -v ${目录_根}/配置/vimrc $HOME/.vimrc cp -v ${目录_根}/配置/vimrc $HOME/.vimrc
色彩_清除 色彩_清除
输出 0 "vim优化完成"
} }
优化_常用命令_ls(){ 优化_常用命令_ls(){
输出 2 "启动ls优化, lsd是rust编写的兼容ls的目录查看工具, 其丰富的配色和图标可有效增加目录的可读性" 输出 2 "启动ls优化, lsd是rust编写的兼容ls的目录查看工具, 其丰富的配色和图标可有效增加目录的可读性"
色彩_灰色 色彩_灰色
if ! 包管_安装 "lsd"; then if ! 包管_安装 "lsd"; then
是否 "在系统源中未发现lsd, 是否使用cargo安装(需要rust语言, 如系统没有则会自动安装)" || return 201 是否 "在系统源中未发现lsd, 是否使用cargo安装(需要rust语言, 如系统没有则会自动安装)" || return 201
# todo: 需要判断龙芯旧世界, 旧世界安装的cargo版本过低, 需要从官网下载安装 # todo: 需要判断龙芯旧世界, 旧世界安装的cargo版本过低, 需要从官网下载安装
if ! 包管_安装 "cargo"; then if ! 包管_安装 "cargo"; then
输出 3 "ls优化失败, 未找到cargo, 请手动安装rust语言及其cargo包管理器后重试" 输出 3 "ls优化失败, 未找到cargo, 请手动安装rust语言及其cargo包管理器后重试"
return 202 return 202
fi fi
cargo install "lsd" cargo install "lsd"
fi fi
sudo ln -vs $HOME/.cargo/bin/lsd /usr/bin/lsd sudo ln -vs $HOME/.cargo/bin/lsd /usr/bin/lsd
色彩_清除 色彩_清除
if 是否 "将lsd使用别名的方式替代ls"; then if 是否 "将lsd使用别名的方式替代ls"; then
别名='alias ls="lsd"' 别名='alias ls="lsd"'
grep -q "${别名}" "$HOME/.zshrc" || echo ${别名} >> $HOME/.zshrc grep -q "${别名}" "$HOME/.zshrc" || echo ${别名} >> $HOME/.zshrc
fi
输出 0 "ls优化完成"
}
优化_常用命令_top(){
if [[ ${主机_架构}=="龙" ]]; then
xmtop版本="v4.2.1"
输出 2 "开始下载 xmtop-${xmtop版本}-${世界_类型}"
xmtop_url="https://gitea.whlug.cn/xunmi/xmtop/releases/download/${xmtop版本}/xmtop_${世界_类型}"
sudo wget -t 3 -q --show-progress -c ${xmtop_url} || 输出 5 "无法下载程序包" || return 301
sudo mv -v xmtop_${世界_类型} /usr/bin/xmtop
else
输出 2 "${主机_架构} 架构, 暂未适配top优化, 推荐手动安装gotop, btop等代替top"
fi fi
输出 0 "ls优化完成" 输出 0 "xmtop配置完毕, 输入xmtop查看效果"
} }
优化_常用命令(){ 优化_常用命令(){
typeset -A 列表=( typeset -A 列表=(
["vim"]="添加常用配置项(允许复制 添加行号 显式当前行等), 常用插件(目录 语法检测)" ["vim"]="添加常用配置项(允许复制 添加行号 显式当前行等), 常用插件(目录 语法检测)"
["ls"]="使用lsd替代老旧的ls, 需要rust的cargo" ["ls"]="使用lsd替代老旧的ls, 需要rust的cargo"
["top"]="使用xmtop替代老旧的top" ["top"]="使用xmtop替代老旧的top系统信息监控功能"
["cat"]="使用bat替代cat" ["cat"]="使用bat替代cat"
["sed"]="使用学习成本较低的sd替代sed" ["sed"]="使用学习成本较低的sd替代sed"
) )
@ -165,24 +194,25 @@ echo "
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
" "
目录_根=$PWD 目录_根=$PWD
目录_配置=$HOME/.config/xunmi
# 判断当前执行的位置 如果不再项目路径中就去寻找路径 # 判断当前执行的位置 如果不再项目路径中就去寻找路径
if [ ! -f "公共/函数.zsh" ]; then if [ ! -f "公共/函数.zsh" ]; then
source $HOME/.config/xunmi/* source ${目录_配置}/*
目录_根=${寻觅}/x 目录_根=${寻觅}/x
fi fi
echo "执行目录: ${目录_根}" echo "执行目录: ${目录_根}"
# 先检查相关 # 先检查公共函数是否正常加载
[[ ${言灵_函数} == 1 ]] || . ${目录_根}/公共/函数.zsh || exit 2 && 输出 0 "公共函数模块初始化完成" [[ ${言灵_函数} == 1 ]] || . ${目录_根}/公共/函数.zsh || exit 2 && 输出 0 "公共函数模块初始化完成"
[[ ${言灵_包管} == 1 ]] || . ${目录_根}/公共/包管.zsh || exit 3 && 输出 0 "包管理器模块初始化完成" [[ ${言灵_包管} == 1 ]] || . ${目录_根}/公共/包管.zsh || exit 3 && 输出 0 "包管理器模块初始化完成"
# 配置检测 配置检测
#[[ ${#通用_包列表} -ne 0 ]] && 批量安装 ${通用_包列表[@]} && 输出 0 "通用包安装完毕" [[ ${#通用_包列表} -ne 0 ]] && 批量安装 ${通用_包列表[@]} && 输出 0 "通用包安装完毕"
#[[ ${#架构_包列表} -ne 0 ]] && 批量安装 ${架构_包列表[@]} && 输出 0 "架构专用包安装完毕" [[ ${#架构_包列表} -ne 0 ]] && 批量安装 ${架构_包列表[@]} && 输出 0 "架构专用包安装完毕"
#[[ ${#系统_包列表} -ne 0 ]] && 批量安装 ${系统_包列表[@]} && 输出 0 "系统发行版专用包安装完毕" [[ ${#系统_包列表} -ne 0 ]] && 批量安装 ${系统_包列表[@]} && 输出 0 "系统发行版专用包安装完毕"
优化_常用命令_ls 优化_常用命令_top
# 配置_开发环境 # 配置_开发环境
#选配 # 选配

View File

@ -0,0 +1,12 @@
#!/usr/bin/zsh
#####################################
# 用于快速配置旧世界的开发环境 #
# 支持的语言: #
# [ ] golang #
# [ ] rust #
# [ ] java #
# [ ] nodejs #
#####################################