一个 Shell 脚本方便你的 Hexo 博客写作

1,218 阅读3分钟
原文链接: ghui.me

为了一个主题, 我把我的博客框架从Hugo迁移到了Hexo, 但我喜欢的这个主题偏偏不支持Hugo, 我又懒得去折腾移植主题, 故迁之. 但在我使用Hexo的过程中发现了一些不方便的地方, 最想去改变的一个就是本地markdown源文件的管理.

Hexo存在的一个问题

在Hexo中, 你写的markdown博客会存储在your_blog_root_path/source/_posts下, 这样就存在一个问题, 当你的博客越写越多时, 所有的博客都在这个目录下, 就会导致当你想去修改或去找某一篇文章时, 发现会很难找到它. 这个问题困扰了我一段时间, 后来觉得如果能把source/_posts下所有的文章按照年/月/标题来划分来管理会方便很多, 最终效果如下:

但这样也有不方便的地方:

  1. 需要根据当前日期手动的去创建年/月目录
  2. 每次通过hexo publish命令发布文章后, 此文章默认还是会被移动到source/_posts根目录下, 需要再手动去移动对应博客到指定目录下

如果上面所有这些问题可以自动化来完成就太好了, 为此我去学了学shell脚本编程并总结了一篇博客Shell脚本编程总结及速查手册, 最终也完成了一个脚本解决了上面这些问题. 下面具体说一下如何实现的.

解决方案

实现思路:在hexo中是通过hexo publish命令来发布一篇draftsource/_posts目录下, 那么我们就可以通过一个shell脚本来完成整个过程, 此脚本我命名为pbblog, 首先, 需要根据当前日期, 确定输出目录(比如2016/06), 在这之前要先判断source/_posts目录下是否存在这个目录只有在不存在的情况下才去创建, 然后再把source/_drafts目录下的文章移动到source/_posts/对应的目录下即可, 最后, 再在此markdown文件下的title: xxx这一行下插入一行日期即可.脚本如下:


if [ $# -ne 1 ]; then
	echo "please input the draft name you want to publish !"
	exit 1
	fi
POST="$1"
ROOT_PATH="$HOME/ghui.me/source/_posts"
FULL_PATH="$ROOT_PATH/`date +%Y/%m`"
echo "path: $FULL_PATH"
if [ ! -d $FULL_PATH ]; then
	echo "$FULL_PATH doesn't exit , auto created!"
	mkdir -p $FULL_PATH
	fi
SOURCE_PATH="$HOME/ghui.me/source"
POST_PATH="$SOURCE_PATH/_posts"
DRAFT_PATH="$SOURCE_PATH/_drafts"
if [ -d $FULL_PATH ]; then
	mv $DRAFT_PATH/${POST}.md $FULL_PATH/${POST}.md
	echo "publish $POST success!"
	else
	echo "published ERROR!!!"
	fi
DATE_STR=`date +"%Y/%m/%d %H:%M:%S"`
sed -i '' '3i\date: '"$DATE_STR"'' ${FULL_PATH}/${POST}.md

其中, 上面脚本中出现的$HOME/ghui.me/即是我本地Hexo的根目录, 可以直接替换为你自己的即可. 除此之外, 我也写了两个很简单的别的脚本方便hexo写作, 一个是方便创建新草稿的newblog, 一个方便预览草稿的pvblog, 如下:

  1. newblog

    
    if [ $# -ne 1 ]
    then 
    	echo "please input your post name";
    	exit 1;
    	fi
    cd ~/ghui.me/
    hexo new draft $1
    open ~/ghui.me/source/_drafts/$1.md
    
  2. pvblog

最终, 我是把这三个脚本放在了hexo根目录下的.cml/下, 如图: 方便起见, 你可以把此目录加入到PATH中.

修改permalink

完成上面所有的步骤后, 你会发现博客文章对应的url并不对, 这时你需要去修改你博客根目录下的_config.yml中的permalinkpost/:title/即可.

版权声明 文章版权归本人所有,欢迎转载,但未经本人同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利 ! 本文永久链接:ghui.me/post/2016/0…