通过Shell快速发布博客

简介

刚开博客不久,对写作的热爱之情溢于言表。哈哈哈,希望可以保持下去。
但近来,发现一个问题:我是使用Cmd Markdown 作为博客的书写工具的,这里先安利下这个工具,有WEB版和离线版,离线版支持各种操作系统,并且实时云同步,大家可以尝试下。

我不知道大家是怎么通过hexo写博客的,你可能这样的(当然首先进到你的博客目录下),通过一下命令创建一篇新博客:

hexo new yyyy-mm-dd-title.md

然后会在 ./source/_posts 中生成一个md文件,此后,你就可以对此文件修改,并通过 hexo s 在本地预览,觉得满足自己要求了,再通过 hexo ghexo 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

如何修改成属于自己的脚本

  1. 当然此脚步只限于Linux用户使用
  2. 修改DES_PATH 为你的存放博客的目录地址
  3. 修改HEXO_PATH 为你的博客目录
  4. 修改YOUR_WEBSITE 为你的博客域名
  5. 我使用的是Chrome浏览器,所以使用的是google-chrome命令,如果是其他浏览器,请修改为相应的浏览器命令

如何运行脚本

  1. 当编辑好你的脚本后(以我的脚本名hexonew为例),为此脚本修改权限

chmod 755 hexonew

  1. 将你的脚本加入环境变量中,~/.bin 目录是我存放自己编写脚本的目录,我将此目录写入 ~/.bashrc 文件,此后就可以在任意目录直接使用脚本名直接运行

export PATH=~/.bin:$PATH

  1. 进入存放你刚写完的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 欢迎访问我的网站 ,如有问题,请随时和我联系,一起进步!

    原文作者:jerry_shenchao
    原文地址: https://www.jianshu.com/p/69ee8e755a50
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞