From 3e26ec80e0df9588418cfcaa1ef89e63da881bac Mon Sep 17 00:00:00 2001 From: xunmi-pc <寻觅> Date: Thu, 22 Feb 2024 10:34:40 +0800 Subject: [PATCH] =?UTF-8?q?[=E6=96=B0=E5=A2=9E]=20=E6=96=B0=E5=A2=9Etop?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=A8=A1=E5=9D=97(=E5=8F=AA=E9=80=82?= =?UTF-8?q?=E9=85=8D=E4=BA=86=E9=BE=99=E6=9E=B6=E6=9E=84),=20=E5=9C=A8?= =?UTF-8?q?=E4=B8=AD=E7=9A=84=E6=97=A5=E5=BF=97=E8=BE=93=E5=87=BA=E6=A8=A1?= =?UTF-8?q?=E5=9D=97=E6=B7=BB=E5=8A=A0=E5=BC=82=E5=B8=B8(=E7=B4=AB?= =?UTF-8?q?=E8=89=B2)=E9=80=89=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .测试.zsh.swp | Bin 16384 -> 24576 bytes 公共/函数.zsh | 10 +++-- 安装.zsh | 48 +++++++++++++++++------ 测试.zsh | 92 +++++++++++++++++++++++++++++--------------- 龙架构/开发环境.zsh | 12 ++++++ 5 files changed, 117 insertions(+), 45 deletions(-) create mode 100644 龙架构/开发环境.zsh diff --git a/.测试.zsh.swp b/.测试.zsh.swp index 44127d044b65683a728baa4e79285d760c497014..b8c37af123012a5d6023a548b7af41ed140c3505 100644 GIT binary patch delta 3724 zcmeI!ZA=^I0SE9S1%eY8MC!}L)b7cVK%m&hBxFgMNvpL|QzahUb=AGt+lOh>v~JC+?f>}B zAz_)c@7swV_x9ZLc6a}CXJIb??%CPzGn4Pm6(;iY zGZ_z#uc9ZhIQVr1kGz@XYEb&I;rP}f=Ndb_$FTyg#Zbw5vCe-znX(3AfT$;{h~ zBdcj+=m^>(jh^+n4D;1mhPefwLlCw>VhzK{@N-yz5wOE9D29jOpBjewBP2lv32s6h z=3y8HAONjU1z+Yc%yqa5i#Zs41RM46L)ZyV!e3T1%%9;;@HyOocVP8W?>vgfCnEOg@f=WJPx^V9W$5@Ia&Kq0jB#4_zZpnpTJGH4yWK4v_mayfprkY z6x)EnZOrH2;csvYegp=f^PIh^zsnG@Y%I+1aP>_N!pf1D92+wU(U>&4D4kxAPQPv3 za7fuTDf=BPsi`3w4#^`kVtl}q^d6VvGaY*2>V(u4)*W;;F`5;14ax&Sc`hcN4y5X$ zyC!9Sxh~ItSDDz`pO^^BexEenlL&XCKDEbpPMDN4%QgSUik;0wdmufK-S;0!^BWCT zCyKSC%iSr)Xo`q9+bxY=!b~ZHmqvaj4bF$O{FL}(v*<2j9HHj;{*t1AB6IL7ziL=Af=*8s4U?SWl55KL9Oo&d4GycS+SL_WZ zj>d(hVO$`em_Y$`c4lRR^>oQUU+NT)}WM?<2oTbv#e;c>9twAG1?|LGQtTc39Iid`e?Ab%_z4Bhr2XFLJ2Qj`ye!ORM z`Ihpky}HLqaWPqc-y&5y!**ST7De{%ttRd!&YqgHYC3U6WUFvFfN>>HofQ_lX;C3I zC7vC`R7?I&Y1A)vd!_Mc@@O1mzSF75iPGs+h3TnIzYXd`Z)92CUS1e^r9Aw=bB`ik ztu$hhrRk*g<}=J1(7->wg=~Occofc{&;a4ur{FP|M(z)Q4{T5m2Keq;E59{g49;273fa06NX zOW?o^Wv~fKpa5W zKKFnYieUp30Sh;f*BzjRa@Yu2@ENi?2AAOi^guN{1YhH``=t^8ehW(wgMOI6Yvc7v zlbzDol<2)AdgsKRxHK?JU!lHp()6Sljf%&{6Y)4d_r0C@D*~O*-FCQ833ua$XJ6R$ zj9ypouv@H+`u0|Pvo+GWEtvUjHKJ0{FOT#~C(et<#*k8ct}*FpZ^pBt)F93TrSL#G zp>gM(N}WKb7*DO#NiX6 z#PPnnbF9(h!1;1ghyU`lUx-agBUiDFw$$)-wKh0N^8xx1NcG4>8@($EI*7j2<<=;T~3qOB*03tHaOVrq5TI>_O}sbM4K zs|dnnT#5_`(Ew&$4h6);UNPupX&EQyZgtwp<_h|aQ2K+*jck+K-Qs#euWz)vIkT>< z$=2Gat4ELMO;Gx!cXGBnUlPonxYQ}04+tLG$bF8d+EzxaReIW@#u|3-odBAEsjesm zjO>9ex=Nh^hpiSR7w`RLU^KGHE2mf`?TTsKDfh>OCr$ooNbHXbv9l)JgiWP~@Svx{ zkpF|Ra2*Xqi#t$8MgZqS8)siyW}x{>hDi}4F4De6UNGV};PU!!}KZrpQq zz1i95Ao%RK%{CihZLS8Ep@ryjPeFP>o%qU%%H`(ialT-OZ@CM@J1omPIc!%3;r;CT zyL%;f&7yxy>e5B_Lc~)fE3tSD39*Fqps|?#Nj!uYtblJ2d0#;v1c654%kUCZ1C7TB zV(?8cKrVcYDEt*n!f|*5iXjIw;8R56$M6x2#b03KL%0S3utN+{I1jslM&t|dJka0H z-yjx4up3^3TBv|*kPwLi+=O|s0R1_<5%ORS$QY;usR1*QtjsIfrT@>N|Ct=(%r4HQ cZ*a8PZ4PsTp5{vt4PfPWlag2ema{DLFNu;^I{*Lx delta 1165 zcmY+?eP~lx7{~GFCO2(wwN1J)XDhmEVms_=jU9s87j#V5YN|zW$_6W4HCZrCwP}5? zNyT8@3bs2#bQ3Jq3N5H@ug<=>vcJY)g9&3B!%aj?UqlA}vw`b$-|NeU2R`SXb2#U4 z?!zzfwU$U|c^~@Ut*SOx7B3T;M$Z^`+ zXo066*=_Cj9CLSduKv{2vx-?vbI@_mE|p`3;-#}ia`4wIkw0+(o8f?l+nFLaa24$c zVKw~7g#jlt2>vice!=&+g3IW|2^>W$mS6#1Hh6m`gYgWJ>lniYoIxCocpn?F2Dvbx zVjm^wa``l_#X zvTcBo7;0B_U+%a{9UC?Mrgu-c;qLWQsg9GWOC1yKonC9s#(SET?#f8K5m%YPKhYP})g>{Xw`ohI#X{puudZCv2{4n$8#TOkaT9jvP zDZ1>8kMsI8{@6~(^Z1-{Q&wc*akj`q+{JASq6a%s0|PGH%MzKwByL~~mB_{|vNnPQ zT2X^lm^+&+{7B%g;u4Zb-~jevFB-4{^Y9U2tAz`X$j}V_#zXXD3tZ6g4|(|=78JVB zhUIX>&e5;wl_EbgurP#f#wHB+H$IX*L$Y@axnm^j-z`NeQ5X{pgQRWDU;s$RRa zxV|wO42PEPYl$|5Rr$6<*1%gwbrpDLdQK$vLOR3u8s9EAKVaZS<8`|v)s{+A) E0exxr6aWAK diff --git a/公共/函数.zsh b/公共/函数.zsh index 33a7b69..7e32dbb 100644 --- a/公共/函数.zsh +++ b/公共/函数.zsh @@ -17,15 +17,16 @@ # 色彩配置 readonly 色彩重置='\e[0m' readonly 色彩=( - '\e[92m' # 1: 绿 - '\e[90m' # 2: 灰 + '\e[92m' # 1: 亮绿 + '\e[90m' # 2: 亮灰 '\e[31m' # 3: 暗红 '\e[32m' # 4: 暗绿 '\e[33m' # 5: 暗黄 + '\e[95m' # 6: 亮紫 ) # 用于规范输出的工具 -# 位置参数 1 -> 整数 <- 1: 成功(亮绿); 2: 失败(红色); 3: 信息(绿色); 4: 通知(黄色) +# 位置参数 1 -> 整数 <- 1: 成功(亮绿); 2: 失败(暗红); 3: 信息(绿色); 4: 通知(黄色); 5: 异常(紫色) # 位置参数 2 -> 字符 <- 在命令行输出的字符串 # 实例 `输出 0 "执行成功"`; `输出 3 "请及时更新依赖"` 输出() { @@ -38,6 +39,9 @@ readonly 色彩=( echo -e "${色彩[2]}[${色彩重置}${色彩[4]} 信息 ${色彩重置}${色彩[2]}]${色彩重置} $2" elif (($1 == 3)); then echo -e "${色彩[2]}[${色彩重置}${色彩[5]} 通知 ${色彩重置}${色彩[2]}]${色彩重置} $2" + elif (($1 == 4)); then + echo -e "${色彩[2]}[${色彩重置}${色彩[6]} 异常 ${色彩重置}${色彩[2]}]${色彩重置} $2" + return 1 fi } diff --git a/安装.zsh b/安装.zsh index 59f1415..592f666 100755 --- a/安装.zsh +++ b/安装.zsh @@ -49,7 +49,11 @@ readonly 系统_发行版_名称=$(echo "${NAME}") ;; *loong*) 主机_架构="龙" - ;; + # 6之前除了5.19以外的所有内核都是旧世界 + if [[ ${系统_版本} =~ ^[3,4,5].+ && !${系统_版本} =~ ^5.19.0-.+ ]]; then + 世界_类型="旧世界" + fi + ;; *) 输出 1 "暂不支持${色彩[3]} ${CPU_架构} ${色彩重置}架构" exit 1 @@ -75,12 +79,15 @@ readonly 系统_发行版_名称=$(echo "${NAME}") *) 未知=1 ;; - esac + esac + 输出 2 "检测到 ${系统_发行版_名称} (${系统_发行版}) 系统" if [[ ${未知} == 1 ]]; then - if ! 是否 "此发行版尚未验证, 是否尝试继续安装"; then - 输出 1 "已退出安装" - exit 1 + if 是否 "此发行版尚未验证, 是否尝试继续安装"; then + 输出 3 "在尚未验证的系统中安装可能会出现未知问题, 如果部分字体出现 口口口 或者乱码的问题, 请手动安装nerd-fonts字体家族的字体" + else + 输出 1 "已退出安装" + exit 1 fi fi } @@ -89,6 +96,12 @@ readonly 系统_发行版_名称=$(echo "${NAME}") 输出 2 "主机信息检测模块启动" 检查_架构 检查_发行版 + # 将本机信息更新到指定文件 + mkdir -vp ${目录_配置} + rm -v ${目录_配置}/信息.zsh + echo "系统_发行版标识=${系统_发行版_标识}" >> ${目录_配置}/信息.zsh + echo "系统_世界类型=${世界_类型}" >> ${目录_配置}/信息.zsh + echo "系统_主机架构=${主机_架构}" >> ${目录_配置}/信息.zsh 输出 0 "主机信息检测完毕" } @@ -109,7 +122,7 @@ readonly 系统_发行版_名称=$(echo "${NAME}") } 优化_常用命令_ls(){ - 输出 2 "启动ls优化, lsd是rust编写的兼容ls的目录查看工具, 其丰富的配色和图标可有效增加目录的可读性" + 输出 2 "启动ls优化" 色彩_灰色 if ! 包管_安装 "lsd"; then 是否 "在系统源中未发现lsd, 是否使用cargo安装(需要rust语言, 如系统没有则会自动安装)" || return 201 @@ -127,15 +140,27 @@ readonly 系统_发行版_名称=$(echo "${NAME}") 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 + 输出 0 "xmtop配置完毕, 输入xmtop查看效果" } 优化_常用命令(){ typeset -A 列表=( ["vim"]="添加常用配置项(允许复制 添加行号 显式当前行等), 常用插件(目录 语法检测)" - ["ls"]="使用lsd替代老旧的ls, 需要rust的cargo" - ["top"]="使用xmtop替代老旧的top" - ["cat"]="使用bat替代cat" + ["ls"]="使用lsd替代老旧的ls, (lsd是rust编写的兼容ls的目录查看工具, 其丰富的配色和图标可有效增加目录的可读性)" + ["cat"]="使用bat替代cat" + ["top"]="使用xmtop替代老旧的top系统信息监控功能" ["sed"]="使用学习成本较低的sd替代sed" ) 输出 2 "正在优化 ${(k)列表} 命令" @@ -169,14 +194,15 @@ echo " *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* " 目录_根=$PWD +目录_配置=$HOME/.config/xunmi # 判断当前执行的位置 如果不再项目路径中就去寻找路径 if [ ! -f "公共/函数.zsh" ]; then - source $HOME/.config/xunmi/* + source ${目录_配置}/* 目录_根=${寻觅}/x fi echo "执行目录: ${目录_根}" -# 先检查相关 +# 先检查公共函数是否正常加载 [[ ${言灵_函数} == 1 ]] || . ${目录_根}/公共/函数.zsh || exit 2 && 输出 0 "公共函数模块初始化完成" [[ ${言灵_包管} == 1 ]] || . ${目录_根}/公共/包管.zsh || exit 3 && 输出 0 "包管理器模块初始化完成" diff --git a/测试.zsh b/测试.zsh index 690c482..af4d9f4 100755 --- a/测试.zsh +++ b/测试.zsh @@ -22,7 +22,7 @@ readonly 系统_版本="$(uname -r)" # ID_LIKE不为空,则输出ID_LIKE的值,否则输出ID的值 readonly 系统_发行版=$( ([ -n "${ID_LIKE}" ] && echo "${ID_LIKE}") || ([ -n "${ID}" ] && echo "${ID}")) readonly 系统_发行版_名称=$(echo "${NAME}") - +系统_发行版_标识="" # 龙架构区分新旧世界的标志位 世界_类型="新世界" @@ -49,7 +49,11 @@ readonly 系统_发行版_名称=$(echo "${NAME}") ;; *loong*) 主机_架构="龙" - ;; + # 6之前除了5.19以外的所有内核都是旧世界 + if [[ ${系统_版本} =~ ^[3,4,5].+ && !${系统_版本} =~ ^5.19.0-.+ ]]; then + 世界_类型="旧世界" + fi + ;; *) 输出 1 "暂不支持${色彩[3]} ${CPU_架构} ${色彩重置}架构" exit 1 @@ -63,7 +67,11 @@ readonly 系统_发行版_名称=$(echo "${NAME}") case ${系统_发行版} in *arch*) ;; *Loongnix*) ;; - *aosc*) ;; + *aosc*) + 系统_发行版_标识符="安同" + # 前三个是字体包 + 系统_包列表=('jetbrains-mono' 'powerline-fonts' 'fantasque-sans-mono-nerd-fonts') + ;; *openwrt*) 输出 1 "暂不支持openwrt" exit 1 @@ -71,12 +79,15 @@ readonly 系统_发行版_名称=$(echo "${NAME}") *) 未知=1 ;; - esac + esac + 输出 2 "检测到 ${系统_发行版_名称} (${系统_发行版}) 系统" if [[ ${未知} == 1 ]]; then - if ! 是否 "此发行版尚未验证, 是否尝试继续安装"; then - 输出 1 "已退出安装" - exit 1 + if 是否 "此发行版尚未验证, 是否尝试继续安装"; then + 输出 3 "在尚未验证的系统中安装可能会出现未知问题, 如果部分字体出现 口口口 或者乱码的问题, 请手动安装nerd-fonts字体家族的字体" + else + 输出 1 "已退出安装" + exit 1 fi fi } @@ -85,6 +96,12 @@ readonly 系统_发行版_名称=$(echo "${NAME}") 输出 2 "主机信息检测模块启动" 检查_架构 检查_发行版 + # 将本机信息更新到指定文件 + mkdir -vp ${目录_配置} + rm -v ${目录_配置}/信息.zsh + echo "系统_发行版标识=${系统_发行版_标识}" >> ${目录_配置}/信息.zsh + echo "系统_世界类型=${世界_类型}" >> ${目录_配置}/信息.zsh + echo "系统_主机架构=${主机_架构}" >> ${目录_配置}/信息.zsh 输出 0 "主机信息检测完毕" } @@ -102,35 +119,47 @@ readonly 系统_发行版_名称=$(echo "${NAME}") git clone --depth 1 https://gitcode.com/mirrors/dense-analysis/ale.git ${vim_配置路径}/start/代码检查工具 cp -v ${目录_根}/配置/vimrc $HOME/.vimrc 色彩_清除 - 输出 0 "vim优化完成" } 优化_常用命令_ls(){ - 输出 2 "启动ls优化, lsd是rust编写的兼容ls的目录查看工具, 其丰富的配色和图标可有效增加目录的可读性" - 色彩_灰色 + 输出 2 "启动ls优化, lsd是rust编写的兼容ls的目录查看工具, 其丰富的配色和图标可有效增加目录的可读性" + 色彩_灰色 if ! 包管_安装 "lsd"; then - 是否 "在系统源中未发现lsd, 是否使用cargo安装(需要rust语言, 如系统没有则会自动安装)" || return 201 - # todo: 需要判断龙芯旧世界, 旧世界安装的cargo版本过低, 需要从官网下载安装 + 是否 "在系统源中未发现lsd, 是否使用cargo安装(需要rust语言, 如系统没有则会自动安装)" || return 201 + # todo: 需要判断龙芯旧世界, 旧世界安装的cargo版本过低, 需要从官网下载安装 if ! 包管_安装 "cargo"; then - 输出 3 "ls优化失败, 未找到cargo, 请手动安装rust语言及其cargo包管理器后重试" - return 202 - fi - cargo install "lsd" - fi - sudo ln -vs $HOME/.cargo/bin/lsd /usr/bin/lsd - 色彩_清除 + 输出 3 "ls优化失败, 未找到cargo, 请手动安装rust语言及其cargo包管理器后重试" + return 202 + fi + cargo install "lsd" + fi + sudo ln -vs $HOME/.cargo/bin/lsd /usr/bin/lsd + 色彩_清除 if 是否 "将lsd使用别名的方式替代ls"; then - 别名='alias ls="lsd"' - grep -q "${别名}" "$HOME/.zshrc" || echo ${别名} >> $HOME/.zshrc + 别名='alias ls="lsd"' + 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 - 输出 0 "ls优化完成" + 输出 0 "xmtop配置完毕, 输入xmtop查看效果" } 优化_常用命令(){ typeset -A 列表=( ["vim"]="添加常用配置项(允许复制 添加行号 显式当前行等), 常用插件(目录 语法检测)" ["ls"]="使用lsd替代老旧的ls, 需要rust的cargo" - ["top"]="使用xmtop替代老旧的top" + ["top"]="使用xmtop替代老旧的top系统信息监控功能" ["cat"]="使用bat替代cat" ["sed"]="使用学习成本较低的sd替代sed" ) @@ -165,24 +194,25 @@ echo " *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* " 目录_根=$PWD +目录_配置=$HOME/.config/xunmi # 判断当前执行的位置 如果不再项目路径中就去寻找路径 if [ ! -f "公共/函数.zsh" ]; then - source $HOME/.config/xunmi/* + source ${目录_配置}/* 目录_根=${寻觅}/x fi echo "执行目录: ${目录_根}" -# 先检查相关 +# 先检查公共函数是否正常加载 [[ ${言灵_函数} == 1 ]] || . ${目录_根}/公共/函数.zsh || exit 2 && 输出 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 # 配置_开发环境 -#选配 +# 选配 diff --git a/龙架构/开发环境.zsh b/龙架构/开发环境.zsh new file mode 100644 index 0000000..88f91f9 --- /dev/null +++ b/龙架构/开发环境.zsh @@ -0,0 +1,12 @@ +#!/usr/bin/zsh + +##################################### +# 用于快速配置旧世界的开发环境 # +# 支持的语言: # +# [ ] golang # +# [ ] rust # +# [ ] java # +# [ ] nodejs # +##################################### + +