记一次添加shell命令的经历

前言

日常的启动了我的博客, 打算开始边记笔记边看书, 然后在经历了启动博客的一系列操作之后, 觉得倍感麻烦, 所以就有了现在这篇博客, 其中涉及到了一些shell相关的知识。

原因

我的启动博客的方式是这样的:

1
2
3
4
5
6
7
8
# bashrc:
HEXO=/home/user/我的博客路径/node_modules/hexo/node_modules/.bin
export PATH=$HEXO:$PATH

alias hexo='sh $HEXO/hexo'
alias startMyBlog='cd $MYBLOG; hexo clean; hexo g; hexo s &'
alias deployMyBlog='cd $MYBLOG; hexo clean; hexo g; hexo d'
alias pushMyBlog='cd $MYBLOG; git add --all; git commit -m"更新"; git push'

这里面有我的博客路径地址, 还创建了一些命令, 比如开启博客, 上传博客等, 然后我每次打开博客之后当前的工作目录总会变成我的博客的目录, 非常难受, 所以想解决这个问题。

解决

想到了linux肯定有可以返回上一个工作目录的命令, 果然, 还真有, 然后我的命令就都变成了这样:

1
2
3
4
5
6
7
8
# bashrc:
HEXO=/home/user/我的博客路径/node_modules/hexo/node_modules/.bin
export PATH=$HEXO:$PATH

alias hexo='sh $HEXO/hexo'
alias startMyBlog='cd $MYBLOG; hexo clean; hexo g; hexo s &; cd -'
alias deployMyBlog='cd $MYBLOG; hexo clean; hexo g; hexo d; cd -'
alias pushMyBlog='cd $MYBLOG; git add --all; git commit -m"更新"; git push; cd -'

cd -(或者cd $OLDPWD) 就可以返回上一个工作目录, 然后我发现了一个问题, 我不能启动我的博客了! 原来&后面是不可以再加命令了, 这可怎么办, 随即我尝试了各种办法, 比如kill -2(模拟ctrl-c); 把&去掉, 加上kill -SIGSTOP $pid(模拟ctrl-z), 然后在bg一下; 不使用;, 改为&& , 统统不好用, 可以说非常难受了, 后面我灵机一动, linux不是有service这个东东嘛, 直接将启动博客注册为一个服务算了, 然后又学习了一下该怎么去注册linux的服务, 这篇博客通俗易懂, 注意这篇博客的[service]写错了, 给写成了[serive]…还有阮一峰老师的这篇也很不错。

但是思路还是错了, 我的博客需要在博客的路径下启动才可以, 而我尝试了半天也不行, 故放弃, 最后我一拍脑瓜, 直接写一个可执行文件啊笨! 最后的解决办法是, 在博客的根目录下创建一个shell可执行文件, 它长这样:

startBlog.sh:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/bin/bash
MYBLOG="/home/user/博客目录"

HEXO="$MYBLOG/node_modules/hexo/node_modules/.bin"

hexo="sh $HEXO/hexo"

cd $MYBLOG
$hexo clean
wait
$hexo g
wait
$hexo s &
cd -

createBlog.sh:

1
2
3
4
5
6
7
8
9
10
#!/bin/bash

MYBLOG="/home/user/博客目录"
HEXO="$MYBLOG/node_modules/hexo/node_modules/.bin"
hexo="sh $HEXO/hexo"

$hexo new "$1"
wait
# 这里是将创建好的博客文件放到当前文件夹中
mv "$MYBLOG/source/_posts/$1.md" .

然后我的bashrc变成了这样:

1
2
3
4
5
6
7
8
HEXO=/home/user/博客目录/node_modules/hexo/node_modules/.bin
export PATH=$HEXO:$PATH
alias hexo='sh $HEXO/hexo'
alias startMyBlog='cd $MYBLOG; hexo clean; hexo g; hexo s &'
alias startMyBlogB='sh $MYBLOG/startMyBlog.sh'
alias createBlog='sh $MYBLOG/createBlog.sh'
alias deployMyBlog='cd $MYBLOG; hexo clean; hexo g; hexo d; cd -'
alias pushMyBlog='cd $MYBLOG; git add --all; git commit -m"更新"; git push; cd -'

总结

果然还是太菜了。


记一次添加shell命令的经历
http://icecreamzhao.github.io/config_skill_experience/system_config/linux/hexo-create-blog.html
作者
littleboyDK
发布于
2019年6月1日
许可协议