通過Shell快速發(fā)布博客

簡介

剛開博客不久,對寫作的熱愛之情溢于言表。哈哈哈,希望可以保持下去。
但近來,發(fā)現(xiàn)一個問題:我是使用Cmd Markdown 作為博客的書寫工具的,這里先安利下這個工具,有WEB版和離線版,離線版支持各種操作系統(tǒng),并且實時云同步,大家可以嘗試下。

我不知道大家是怎么通過hexo寫博客的,你可能這樣的(當然首先進到你的博客目錄下),通過一下命令創(chuàng)建一篇新博客:

hexo new yyyy-mm-dd-title.md

然后會在 ./source/_posts 中生成一個md文件,此后,你就可以對此文件修改,并通過 hexo s 在本地預覽,覺得滿足自己要求了,再通過 hexo ghexo d 命令部署到github中,以此達到發(fā)布博客的目的。
我之前是這樣的,通過Cmd Markdown編寫好博客,然后保存成md文件,再把md文件copy到 博客目錄/source/_posts 文件夾中,然后預覽,發(fā)布。當然如果發(fā)現(xiàn)不滿意,又要回去重新修改編寫。多次以后我發(fā)現(xiàn)非常的麻煩,特別是我的博客目錄非常的深,如下所示:

/home/jerry/.shenchao/mybloy/hexo_test/source/_posts/

既然在學Linux,所以我希望shell來幫我簡化這一系列操作,使得只要通過一條命令就可以幫我完成整個流程。

實現(xiàn)

#!/bin/bash
# fileName: hexonew
# 當我用CMD Markdown創(chuàng)建一片博客到指定目錄時,初始命名為title.md,此腳本可以自動幫我修改名字為 yyyy-mm-dd-title.md 并且mv 到 _post 文件夾下
# 當mv 操作后讓我判斷是否要在本地預覽,如果不預覽,那么直接退出,如果需要預覽,預覽后再詢問我是否要發(fā)布到我的網站
# 注意:必須在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 "傻逼,你還沒有寫文章或者文件路徑寫錯了,怎么讓我?guī)湍惆。?
    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. 將你的腳本加入環(huán)境變量中,~/.bin 目錄是我存放自己編寫腳本的目錄,我將此目錄寫入 ~/.bashrc 文件,此后就可以在任意目錄直接使用腳本名直接運行

export PATH=~/.bin:$PATH

  1. 進入存放你剛寫完的md文件目錄,執(zhí)行

hexonew 文件名

按照命令行提示,你就可以快速進行部署了。

注意

由于在本地查看博客時,采用了后臺運行

hexo s &

所以如果多次運行 hexonew 會發(fā)現(xiàn)報錯,因為本地服務已經開啟,但其實并不影響操作,忽略即可。如果你想關掉本地服務,那么執(zhí)行 ps -u 找到 PID ,使用 kill PID 殺死進程即可。

如何修改博客

想要對已經發(fā)布的博客進行修改,由于Cmd Markdown 不支持使用命令行進行打開md文件操作,只能通過窗口一層層選擇文件,對于我這種目錄很深的用戶,實在太過麻煩,所以我只好采用了一個笨辦法,通過運行腳本hexomodify

hexomodify 文件名

將要修改的博客轉移出來,然后進行修改,最后再通過上述介紹 hexonew 重新發(fā)布。

#!/bin/bash
# 此腳本用于對已有博客進行修改,通過輸入博客文件的名稱(不要忘記后綴),將此博客移到一個相對外層目錄,方便使用CMD Markdown打開,修改完,再用hexonew 文件名發(fā)布

#博客目錄
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

要想轉變?yōu)樽约旱哪_步,只要把對應目錄改為自己的即可。

That's all 歡迎訪問我的網站 ,如有問題,請隨時和我聯(lián)系,一起進步!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容