简介
刚开博客不久,对写作的热爱之情溢于言表。哈哈哈,希望可以保持下去。
但近来,发现一个问题:我是使用Cmd Markdown 作为博客的书写工具的,这里先安利下这个工具,有WEB版和离线版,离线版支持各种操作系统,并且实时云同步,大家可以尝试下。
我不知道大家是怎么通过hexo写博客的,你可能这样的(当然首先进到你的博客目录下),通过一下命令创建一篇新博客:
hexo new yyyy-mm-dd-title.md
然后会在 ./source/_posts
中生成一个md文件,此后,你就可以对此文件修改,并通过 hexo s
在本地预览,觉得满足自己要求了,再通过 hexo g
和 hexo d
命令部署到github中,以此达到发布博客的目的。
我之前是这样的,通过Cmd Markdown编写好博客,然后保存成md文件,再把md文件copy到 博客目录/source/_posts
文件夹中,然后预览,发布。当然如果发现不满意,又要回去重新修改编写。多次以后我发现非常的麻烦,特别是我的博客目录非常的深,如下所示:
/home/jerry/.shenchao/mybloy/hexo_test/source/_posts/
既然在学Linux,所以我希望shell来帮我简化这一系列操作,使得只要通过一条命令就可以帮我完成整个流程。
实现
#!/bin/bash
# fileName: hexonew
# 当我用CMD Markdown创建一片博客到指定目录时,初始命名为title.md,此脚本可以自动帮我修改名字为 yyyy-mm-dd-title.md 并且mv 到 _post 文件夹下
# 当mv 操作后让我判断是否要在本地预览,如果不预览,那么直接退出,如果需要预览,预览后再询问我是否要发布到我的网站
# 注意:必须在title.md目录中运行此脚步
DES_PATH="/home/jerry/.shenchao/myblog/hexo_test/source/_posts"
# 运行hexo的路径
HEXO_PATH="/home/jerry/.shenchao/myblog/hexo_test"
oldName="$1"
NAME_PREFIX="$(date +%Y-%m-%d-)"
YOUR_WEBSITE="http://shenchao.me"
if [ -e "$oldName" ]; then
#重命名操作
fileName=${NAME_PREFIX}${oldName}
mv $oldName $fileName
#移动文件
mv $fileName $DES_PATH
#询问是否需要在本地预览,首先切换到hexo目录
while true; do
echo -n "是否需要预览(y/n) -> "
read isPreview
case $isPreview in
y|Y)
# 切换到hexo目录,并启动本地服务器
cd $HEXO_PATH
hexo s &
# 休眠2s 使得启动服务
sleep 2
# 访问页面
google-chrome http://localhost:4000
while true; do
echo -n "是否需要部署到github (y/n) -> "
read isDeploy
case $isDeploy in
y|Y)
hexo g
hexo d
while true; do
echo -n "部署成功,是否访问你的网站 (y/n) -> "
read isVisit
case $isVisit in
y|Y)
google-chrome ${YOUR_WEBSITE}
break
;;
n|N)
break
;;
*)
;;
esac
done
break
;;
n|N)
break
;;
*)
;;
esac
done
break
;;
n|N)
break
;;
*) echo "非法输入"
;;
esac
done
else
echo "傻逼,你还没有写文章或者文件路径写错了,怎么让我帮你啊!"
exit 1
fi
exit
如何修改成属于自己的脚本
- 当然此脚步只限于Linux用户使用
- 修改DES_PATH 为你的存放博客的目录地址
- 修改HEXO_PATH 为你的博客目录
- 修改YOUR_WEBSITE 为你的博客域名
- 我使用的是Chrome浏览器,所以使用的是
google-chrome
命令,如果是其他浏览器,请修改为相应的浏览器命令
如何运行脚本
- 当编辑好你的脚本后(以我的脚本名hexonew为例),为此脚本修改权限
chmod 755 hexonew
- 将你的脚本加入环境变量中,
~/.bin
目录是我存放自己编写脚本的目录,我将此目录写入~/.bashrc
文件,此后就可以在任意目录直接使用脚本名直接运行
export PATH=~/.bin:$PATH
- 进入存放你刚写完的md文件目录,执行
hexonew 文件名
按照命令行提示,你就可以快速进行部署了。
注意
由于在本地查看博客时,采用了后台运行
hexo s &
所以如果多次运行 hexonew
会发现报错,因为本地服务已经开启,但其实并不影响操作,忽略即可。如果你想关掉本地服务,那么执行 ps -u
找到 PID
,使用 kill PID
杀死进程即可。
如何修改博客
想要对已经发布的博客进行修改,由于Cmd Markdown 不支持使用命令行进行打开md文件操作,只能通过窗口一层层选择文件,对于我这种目录很深的用户,实在太过麻烦,所以我只好采用了一个笨办法,通过运行脚本hexomodify
hexomodify 文件名
将要修改的博客转移出来,然后进行修改,最后再通过上述介绍 hexonew
重新发布。
#!/bin/bash
# 此脚本用于对已有博客进行修改,通过输入博客文件的名称(不要忘记后缀),将此博客移到一个相对外层目录,方便使用CMD Markdown打开,修改完,再用hexonew 文件名发布
#博客目录
BLOG_DIR="/home/jerry/.shenchao/myblog/hexo_test/source/_posts/"
#想要将博客移到哪个目录
DES_DIR="/home/jerry/Blog/"
fileName=${BLOG_DIR}$1
if [ -e $fileName ]; then
mv $fileName $DES_DIR
newName=${1##*-}
mv $DES_DIR$1 $DES_DIR$newName
else
echo "该文件不存在"
exit 1
fi
要想转变为自己的脚步,只要把对应目录改为自己的即可。
That's all 欢迎访问我的网站 ,如有问题,请随时和我联系,一起进步!