前言
近期闲来无事,也好久没写文章了,发现使用hexo新建文章的时候每次都要复制粘贴一些配置,实在是相当麻烦,正好前段时间学习了下shell编程,便使用shell写了个脚本来自动生成。
使用方法
假设shell脚本的名字为 newFile.sh,执行下面的命令:
newFile.sh 测试文件 -c 编程 shell -t shell hexo
其中的参数如下:
- -c : 分类 会根据这个参数值在hexo/source/_posts 目录中创建对应目录
- -t : 标签 会根据这个参数值在文章中添加标签
执行过后,就会在你的blog hexo的_posts 目录中新建相应的目录和文件,具体如下图:
所生成的文件内容如下:
---
title: 测试文件
category: [编程,shell]
tags: [shell,hexo]
toc: true
date: 2017-02-09 09:38:25
---
这样子就省下了好多事情,省的每次再复制粘贴了,
脚本内容
脚本的使用很简单的,使用之前需要先将你的_post目录写入脚本中保存,之后就可以使用了,脚本内容如下:
#!/bin/bash
Tags=
Category=
Title=
CurState="title"
IsParam="true"
PostPath="/e/blog/source/_posts/" #将这里替换为你的_posts 目录地址
#PostPath="./"
Date=`date +%F`
Date="$Date `date +%T`"
if [ "$#" -lt "1" ];then
echo "Input Error"
exit
fi
i=0
j=0
for argv in $*
do
# echo $argv
if [ $argv = "-t" ];then
CurState="Tags"
IsParam="true"
elif [ $argv = "-c" ];then
CurState="Category"
IsParam="true"
else
IsParam="false"
fi
if [ $IsParam = "false" ];then
if [ $CurState = "Tags" ];then
let i++
Tags="$Tags $argv"
elif [ $CurState = "Category" ];then
let j++
Category="$Category $argv"
else
Title="$Title $argv"
fi
fi
done
#echo "Tags=$Tags"
#echo "Category=$Category"
#echo "Title=$Title"
#echo "CurDate=$Date"
for path in $Category
do
if test -d "$PostPath$path" ; then
PostPath="$PostPath$path/"
continue
else
mkdir $PostPath$path
PostPath="$PostPath$path/"
fi
done
for CurFile in $Title
do
cd $PostPath
mkdir $CurFile
CurTitle=$CurFile
CurFile="$CurFile.md"
if [ $j = "1" ];then
Category=`echo "$Category" |sed -n "s/^[ ]*//gp"`
else
Category=`echo "$Category" |sed -n "s/^[ ]*//gp"|sed -n "s/ /,/gp"`
fi
if [ $i = "1" ];then
Tags=`echo "$Tags" |sed -n "s/^[ ]*//gp"`
else
Tags=`echo "$Tags" |sed -n "s/^[ ]*//gp"|sed -n "s/ /,/gp"`
fi
echo "---" >>"$CurFile"
echo "title: $CurTitle" >>"$CurFile"
echo "category: [$Category]" >>"$CurFile"
echo "tags: [$Tags]" >>"$CurFile"
echo "toc: true" >>"$CurFile"
echo "date: $Date" >>"$CurFile"
echo "---" >>"$CurFile"
done