由于博主是个懒人,又怕因为手残输错指令或者动到一些文件引起一系列问题,于是写了一些常用的脚本分享一下,之所以都是单个的脚本是为了方便操作,防止误触。
上传仓库
将D:\Hexo\Hexo
改为自己的博客根目录即可,随后保存为.bat文件
。
1 2 3 4 5 6 7
| @echo off D: cd D:\Hexo\Hexo git add . git commit -m "github action update" git push origin main pause
|
刷新dns
由于某些情况可能暂时无法访问github
,需要更改Hosts
,更改完需要刷新DNS
才会生效,保存为.bat文件
。
1 2 3
| @echo off ipconfig /flushdns pause
|
新建文章
打开后输入文章名即可新建文章,将D:\Hexo\Hexo
更改为自己的博客根目录即可,保存为.sh
文件。
1 2 3 4 5
| set -e cd "D:\Hexo\Hexo" read -p "文章名称: " title hexo new $layout $title cd -
|
本地预览
将D:\Hexo\Hexo
更改为自己的博客根目录即可,保存为.sh
文件。
1 2
| cd "D:\Hexo\Hexo" hexo S
|
清理缓存
将D:\Hexo\Hexo
更改为自己的博客根目录即可,保存为.sh
文件。
1 2
| cd "D:\Hexo\Hexo" hexo clean
|
根目录
如果要运行指令需要到跟目录
右键打开git
,简化操作,一键cd到更目录。将D:\Hexo\Hexo
更改为自己的博客根目录即可,保存为.sh
文件。
1 2
| cd "D:\Hexo\Hexo" exec /bin/bash
|
Git拉取推送
直接粘贴仓库地址即可拉取,选择推送之后只需要输入对象文件夹的名字就可以自动上传,并且可以自定义分支。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
| echo "==================================================" echo " 欢迎使用Git拉取/推送脚本!" echo "=================================================="
printf "\n[1] 从云端拉取仓库\n" printf "[2] 推送更改到云端\n" printf "请选择需要的功能,默认选择 [1] 从云端拉取仓库\n" printf "选择:" read answer
if [ "${answer}" = "1" ] || [ "${answer}" = "" ]; then printf "请输入仓库源码地址: " read giturl echo "INFO: 正在拉取仓库..." git clone "$giturl" echo "INFO: 拉取完成!" elif [ "${answer}" = "2" ]; then printf "请输入当前目录下的文件夹名作为仓库目录: " read dirname repodir="./$dirname" # 构建相对路径 if [ -d "$repodir/.git" ]; then cd "$repodir" || exit 1 # 获取可用分支列表 branchlist=$(git branch --list) branchlist=${branchlist//$'\n'/} # 移除换行符 if [ -z "$branchlist" ]; then echo "ERROR: 仓库中没有可用的分支。" exit 1 fi # 提取最常用的分支 defaultbranch=$(echo "$branchlist" | awk '{print $2}' | sort | uniq -c | sort -rn | awk 'NR==1{print $2}') # 选择要推送的分支 printf "\n可用分支:\n" echo "$branchlist" printf "\n请输入要推送的分支名(默认为 $defaultbranch):" read branchname if [ -z "$branchname" ]; then branchname="$defaultbranch" fi # 推送更改到指定分支 echo "INFO: 正在推送更改到分支 $branchname..." git add . git commit -m "自动提交更改" git push origin "$branchname" echo "INFO: 推送完成!" else echo "ERROR: 输入的目录不是一个有效的Git仓库。" fi else echo "ERROR: 输入错误,请重新运行脚本并选择有效选项。" fi
|
Hexo脚本
是以上所有脚本的汇总。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142
| #!/bin/bash
set -e
echo "==================================================" echo " 欢迎使用Hexo拉取/推送脚本!" echo "=================================================="
currentDir=$(cd "$(dirname "$0")" || exit; pwd) hexoDir="${currentDir}/Hexo"
printf "\033[1;34m 当前目录:${currentDir}\033[0m\n" printf "\033[1;34m Hexo目录:${hexoDir}\033[0m\n"
printf "\033[1;34m [0] \033[0m 退出菜单\n" printf "\033[1;34m [1] \033[0m 从云端恢复Hexo\n" printf "\033[1;34m [2] \033[0m 推送更改到云端\n" printf "\033[1;34m [3] \033[0m 刷新DNS\n" printf "\033[1;34m [4] \033[0m 新建文章\n" printf "\033[1;34m [5] \033[0m 本地预览\n" printf "\033[1;34m [6] \033[0m 清理缓存\n" printf "\033[1;34m [7] \033[0m 切换到Hexo目录\n" printf "\033[1;34m [8] \033[0m 直达Blog仓库\n" printf "\033[1;34m [9] \033[0m 本地文章管理\n" printf "请选择需要的功能,默认选择\033[1;34m [1] \033[0m 从云端恢复Hexo\n" printf "选择:\n" read -r answer
if [ "$answer" = "1" ] || [ "$answer" = "" ]; then printf "\033[1;34mINFO \033[0m 启动拉取器 ...\n" printf "请输入仓库源码地址: " read -r giturl cd "${currentDir}" || exit git clone "$giturl" "${hexoDir}" cd "${hexoDir}" || exit printf "\033[1;34mINFO \033[0m 恢复Hexo中...\n" npm config set registry https://registry.npm.taobao.org npm install -g hexo-cli npm install gulp-cli -g #全局安装gulp,未配置不用开启 npm install --save printf "\033[1;34mINFO \033[0m 恢复完成,您可以开始您的Hexo之旅了!\n" elif [ "$answer" = "2" ]; then if [ -d "${hexoDir}/.git" ]; then cd "${hexoDir}" || exit 1
# 获取可用分支列表 branchlist=$(git branch --list) branchlist=${branchlist//$'\n'/} # 移除换行符 if [ -z "$branchlist" ]; then echo "ERROR: 仓库中没有可用的分支。" exit 1 fi # 提取最常用的分支 defaultbranch=$(echo "$branchlist" | awk '{print $2}' | sort | uniq -c | sort -rn | awk 'NR==1{print $2}') # 选择要推送的分支 printf "\n可用分支:\n" echo "$branchlist" printf "\n请输入要推送的分支名(默认为 $defaultbranch):" read -r branchname if [ -z "$branchname" ]; then branchname="$defaultbranch" fi # 推送更改到指定分支 echo "INFO: 正在推送更改到分支 $branchname..." git add . git commit -m "自动提交更改" git push origin "$branchname" echo "INFO: 推送完成!" else echo "ERROR: Hexo目录不是一个有效的Git仓库。" fi elif [ "$answer" = "3" ]; then if [[ "$OSTYPE" == "msys" ]]; then # Windows 下使用 PowerShell 获取管理员权限执行刷新 DNS echo "INFO: 正在刷新DNS..." powershell -Command "Start-Process cmd -Verb RunAs -ArgumentList '/c ipconfig /flushdns'" printf "\033[1;34mINFO \033[0m DNS刷新完成!\n" else echo "ERROR: 刷新DNS功能仅支持Windows操作系统。" fi elif [ "$answer" = "4" ]; then printf "文章名称: " read -r title cd "${hexoDir}" || exit hexo new "$title" printf "\033[1;34mINFO \033[0m 文章创建完成!\n" elif [ "$answer" = "5" ]; then cd "${hexoDir}" || exit hexo S & # 启动本地预览,并将其放入后台执行 sleep 1s # 等待一秒,以确保 Hexo 服务器已启动 if [[ "$OSTYPE" == "msys" ]]; then # Windows 下使用 PowerShell 获取管理员权限执行打开浏览器 echo "INFO: 正在打开浏览器..." start "http://localhost:4000/" else # 其他系统使用默认浏览器打开 echo "INFO: 正在打开浏览器..." xdg-open "http://localhost:4000/" fi elif [ "$answer" = "6" ]; then cd "${hexoDir}" || exit hexo clean printf "\033[1;34mINFO \033[0m 缓存清理完成!\n" elif [ "$answer" = "7" ]; then cd "${hexoDir}" || exit printf "\033[1;34mINFO \033[0m 切换到Hexo目录!\n" /bin/bash elif [ "$answer" = "8" ]; then if [[ "$OSTYPE" == "msys" ]]; then # Windows 下使用 PowerShell 获取管理员权限执行打开浏览器 echo "INFO: 正在打开浏览器..." start "https://github.com/L-20021213/Hexo" else # 其他系统使用默认浏览器打开 echo "INFO: 正在打开浏览器..." xdg-open "https://github.com/L-20021213/Hexo" fi elif [ "$answer" = "9" ]; then if [[ "$OSTYPE" == "msys" ]]; then # Windows 下使用 PowerShell 获取管理员权限执行打开目录 echo "INFO: 正在打开目录..." start "$(realpath "${hexoDir}/source/_posts")" else # 其他系统使用默认文件管理器打开目录 echo "INFO: 正在打开目录..." xdg-open "$(realpath "${hexoDir}/source/_posts")" fi else printf "\033[1;31mERROR \033[0m 输入错误,请返回重新选择...\n" sleep 1s exec "$0" fi
printf "\033[1;34mINFO \033[0m 按下任意键退出...\n" read -n 1 -s -r -p ""
|