shellShell那些事儿Linux 琐事之123

shell编写的hexo新建文章生成脚本

2017-02-09  本文已影响99人  2625K

前言

近期闲来无事,也好久没写文章了,发现使用hexo新建文章的时候每次都要复制粘贴一些配置,实在是相当麻烦,正好前段时间学习了下shell编程,便使用shell写了个脚本来自动生成。

使用方法

假设shell脚本的名字为 newFile.sh,执行下面的命令:

newFile.sh 测试文件 -c 编程 shell -t shell hexo

其中的参数如下:

执行过后,就会在你的blog hexo的_posts 目录中新建相应的目录和文件,具体如下图:

Paste_Image.png

所生成的文件内容如下:

---
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


上一篇 下一篇

猜你喜欢

热点阅读