原创博客地址:脚本_vnote同步到hexo步骤[博]

1,批量跑md2hexo命令

1
2
3
4
5
6
7
cd /home/john/文档/vnote_notebooks/vnote
conda activate py35
python md2hexo.py $(ls -I _v_recycle_bin)   变更部分比对
gitk:验证只有文件头部被修改
或者:meld .

2,关于[博]文章迁移到_post文件夹

1
2
3
4
5
6
7
8
9
10
11
12
13
删除原内容
rm ~/my_hexo/source/_posts/*
rm ~/my_hexo/source/images/*切换到临时目录
cd ~/my_tmp
rm md_file_loc.txt tmp_png/* tmp_png_choose.txt tmp_png.txt
所有含有[博]的md文件绝对路径写到md_file_loc.txt
find ~/文档/vnote_notebooks/vnote/ -path ~/文档/vnote_notebooks/vnote/_v_recycle_bin -prune -o  -name "*\[博\].md" -print > md_file_loc.txt
md文件名含有扩号的需要转义
sed -i 's/(/\\(/g;s/)/\\)/g'   md_file_loc.txt
将md文件copy到surce/_post文件夹
awk  -v  to="/home/john/my_hexo/source/_posts/" '{cmd="cp  "$0" "to ; system(cmd)}'  md_file_loc.txt

3,md相关图片复制(复制到source/images/)

1
2
3
4
5
6
7
8
9
所有图片文件绝对路径写到tmp_png.txt
find ~/文档/vnote_notebooks/vnote/ -path ~/文档/vnote_notebooks/vnote/_v_recycle_bin -prune -o  -regex ".*\.jpg\|.*\.png" -print > tmp_png.txt
所有图片cp到my_tmp/tmp_png中
mkdir tmp_png
awk  -v  to="/home/john/my_tmp/tmp_png/" '{cmd="cp  "$0" "to ; system(cmd)}'  tmp_png.txt
从md中提取md涉及的文件名
awk -F / -v patten="'[0-9_]+\.png'"  -v mdPath="/home/john/my_hexo/source/_posts/" '{cmd= "grep -o -E " patten " " mdPath $NF;system(cmd)}' md_file_loc.txt  > tmp_png_choose.txt
将涉及到的文件copy到source/images中
awk -v from="./tmp_png/" -v to="/home/john/my_hexo/source/images/" '{cmd="mv "from $1 " " to ;system(cmd)}' tmp_png_choose.txt

4,修改各md文件中路径(_posts/下的md替换/images为/images)

1
2
3
4
image的路径替换
awk -F / -v newPath="/home/john/my_hexo/source/_posts/" -v sedCmd="'s//images/\\\\/images/g'"  '{cmd= "sed -i "  sedCmd " " newPath $NF;system(cmd) }' md_file_loc.txt
image后尺寸控制的替换(hexo不支持尺寸控制)
awk -F / -v newPath="/home/john/my_hexo/source/_posts/" -v sedCmd="'s/ =[0-9]\+x)/)/g'"  '{cmd= "sed -i "  sedCmd " " newPath $NF;system(cmd) }' md_file_loc.txt

5,发布到服务器

1
cd ~/my_hexo;hexo g && hexo deploy

6,补充password字段

需要加密的文档添加password字段

7,整合后脚本

从第二步开始(第一步和发布无关,属于vnote格式自整理)

脚本目的,将vnote格式的md文件,统一copy到hexo文件路径(md文件+图片文件)
$1:vnote笔记目录,比如:/文档/vnote_notebooks/vnote
$2:hexo的source文件夹位置,比如:/my_hexo/source(会删除此文件夹下的_posts/和images/下的内容)
$3:*[博客].md

命令:./xx.sh ~/文档/vnote_notebooks/vnote ~/my_hexo/source “*[博客].md”

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# 删除hexo已有的文章和附件
echo "删除hexo博客下的文件夹_posts,images"
rm ~/my_hexo/source/_posts/*
rm ~/my_hexo/source/images/*# 创建临时目录
echo "创建临时目录"
mkdir -p ~/tmp_hexo/tmp_png/;cd ~/tmp_hexo# 需发布到hexo文件路径写到md_file_loc.txt中,并且生成copy命令列表
echo "生成hexo的文件copy命令"
find ~/文档/vnote_notebooks/vnote/ -path ~/文档/vnote_notebooks/vnote/_v_recycle_bin -prune -o  -name "*\[博\].md" -print | grep -v total > md_file_loc.txt
sed -i 's/(/\\(/g;s/)/\\)/g'   md_file_loc.txt
awk  -v  to="/home/john/my_hexo/source/_posts/" '{cmd="cp  "$0" "to ; system(cmd)}'  md_file_loc.txt# 将hexo文件中的图片地址,提取到md_file_loc.txt中
echo "hexo文件中的图片地址,提取到md_file_loc.txt中"
find ~/文档/vnote_notebooks/vnote/ -path ~/文档/vnote_notebooks/vnote/_v_recycle_bin -prune -o  -regex ".*\.jpg\|.*\.png" -print | grep -v total > tmp_png.txt
awk  -v  to="/home/john/my_tmp/tmp_png/" '{cmd="cp  "$0" "to ; system(cmd)}'  tmp_png.txt
awk -F / -v patten="'[0-9_]+\.png'"  -v mdPath="/home/john/my_hexo/source/_posts/" '{cmd= "grep -o -E " patten " " mdPath $NF;system(cmd)}' md_file_loc.txt  | grep -v total > tmp_png_choose.txt
awk -v from="./tmp_png/" -v to="/home/john/my_hexo/source/images/" '{cmd="mv "from $1 " " to ;system(cmd)}' tmp_png_choose.txt# 替换文件路径(vnote图片位于/images下,而hexo图片位置为images)
echo "替换文件路径"
awk -F / -v newPath="/home/john/my_hexo/source/_posts/" -v sedCmd="'s//images/\\\\/images/g'"  '{cmd= "sed -i "  sedCmd " " newPath $NF;system(cmd) }' md_file_loc.txt
awk -F / -v newPath="/home/john/my_hexo/source/_posts/" -v sedCmd="'s/ =[0-9]\+x)/)/g'"  '{cmd= "sed -i "  sedCmd " " newPath $NF;system(cmd) }' md_file_loc.txt# 删除临时目录
echo "删除临时目录"
rm md_file_loc.txt  tmp_png.txt tmp_png_choose.txt
rm -rf tmp_png/*# 发布到hexo
echo "发布到hexo"
cd ~/my_hexo;hexo g && hexo deploy
echo "完成"

8,整理为参数的脚本形式(github)

脚本地址:github:https://github.com/yuanjh6/scripts

基于vnote的自动发布
将vnote中的符合条件的文章(.md文件),复制到hexo/source/_posts/,
符合条件的md文章里面涉及的图片,复制到hexo/source/images/
使用方法:

1
./vnote2hexo.sh ~/文档/vnote_notebooks/vnote ~/my_hexo/source "*发布*.md"

大概执行路径:
find
vnote笔记本路径:~/文档/vnote_notebooks/vnote
找出其中文明名符合:”发布.md”
的md文件,将其copy到
hexo的source文件夹(路径):~/my_hexo/source/_posts/(后面的_posts脚本写死的)
同时,符合条件的md文件里面的.png,.jpeg等文件会复制到
hexo的source文件夹(路径):~/my_hexo/source/images/(后面的images脚本写死的)
代码行数不多,但是较难看懂,主要是awk语法使用较多,其中很多涉及多次转义的字符
参考本博客博文:脚本_vnote同步到hexo步骤[博](自行搜索)

脚本_vnote同步到hexo步骤[博]相关推荐

  1. 使用Hexo搭建博客步骤详解

    简介 hexo -- 简单.快速.强大的Node.js静态博客框架.Hexo 使用 Markdown(或其他渲染引擎)解析文章,在几秒内,即可利用靓丽的主题生成静态网页. 特性 风一般的速度 Hexo ...

  2. 使用 goodsync 软件将指定目录的文档单向同步到 hexo 博客

    使用 goodsync 软件将指定目录的文档单向同步到 hexo 博客 我的所有笔记保存在 "我的文档" 目录, 我的笔记类型有 .md, .pdf, .docx 等等, 包括私人 ...

  3. python博客下载本地文件_Linux CentOS6安装Git、Node.js及Hexo静态博客安装和使用方法...

    有些时候,我们有听到或者看到某个技术很希望自己也能尝试一下,即便我们没有项目需求,但接触过后以后还可以跟别人吹嘘这个技术我玩过,具体能否玩的精通都无所谓,至少我们可以体验到其中的乐趣.这不,这几天有接 ...

  4. Hexo Next 博客添加相册瀑布流

    原文:https://rebootcat.com/2020/09/19/nextphotowall/ 前言 一直没有时间来整理下博客搭建的一些事情,现在补上一篇,给 Hexo Next 博客添加一个相 ...

  5. hexo+GitHub博客搭建实战

    我的个人博客链接:wangwlj.com 想要搭建类似的博客吗? 如果是,那就赶快点进来吧-- 手把手教学,现在开始!! PS: 将会在个人博客持续更新,本文链接:hexo+GitHub博客搭建实战. ...

  6. Github+Hexo+matery博客搭建

    文章目录 前言 主题介绍 一.博客环境搭建 1. 下载Git和Node.js 1.1 Node.js的安装与配置 1.2 Git的安装与配置 二.Github注册以及Github Pages创建 三. ...

  7. Hexo+GitHub 博客部署 个人踩坑记录(一)

    Hexo+GitHub 博客部署 个人踩坑记录(一) 前言 博客的作用 编程学习本身是持续性的学习行为,说明所学习的内容是在持续地增加.这要求我们要学会阶段性总结自己所学的东西,复习并巩固.所以写文章 ...

  8. Hexo 个人博客 SEO 优化(3):改造你的博客,提升搜索引擎排名

    Hexo 个人博客 SEO 优化三篇系列文章终于完成了 Hexo 个人博客 SEO 优化(1):搜索引擎原理介绍 Hexo 个人博客 SEO 优化(2):站内优化 Hexo 个人博客 SEO 优化(3 ...

  9. SQLServer2000同步复制技术实现步骤

    SQLServer2000同步复制技术实现步骤<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:off ...

最新文章

  1. 字节跳动内部 MySQL 学习笔记火了,完整版开放下载!
  2. mysql8解压版安装没有密码_MySQL8解压版安装
  3. 产品经理必备的14大效率工具
  4. 计算机组成原lta,计算机组成原理实验三运算器
  5. HDU - 3530 Subsequence(单调队列+思维)
  6. 计算机部分选择怎么操作,计算机基础试题选择题部分
  7. oraclr 和mysql的不同_Mysql和Oracle中的不同
  8. Vue源码学习: 关于对Array的数据侦听
  9. 长沙戴维营教育iOS开发面试题周刊
  10. docker给php装swoole,制作php+swoole的Docker环境
  11. 196.删除重复的电子邮箱
  12. Java基础知识——JavaIO
  13. cyj等于什么英语单词_英语解题方法指导及例题分析
  14. 第六周:整数转罗马数字
  15. FileOutputStream、OutputStreamWriter、BufferedWriter的区别和用法
  16. SWUSTOJ #77 计算员工周工资
  17. 什么是编码?什么是解码?为什么要编码.解码?
  18. S3C6410 中的 cascaded irqdomain 之 gpio
  19. 二进制枚举子集的方法
  20. 关于PL2303用于STC单片机下载的讨论

热门文章

  1. 关于微信小程序使用获取用户信息getUserProfile的问题:TypeError: wx.getUserProfile is not a function
  2. css实现图片虚化_什么? CSS 阴影竟然还有这种骚操作 ?
  3. 索引sql server_SQL Server索引与统计顾问的困境或麻烦
  4. aws rds监控慢sql_AWS RDS SQL Server中的高级Windows身份验证配置
  5. phpstorm设置xdebug调试
  6. 可对Python运行原理进行可视化分析的工具
  7. Python 密文转换为明文
  8. 近期将要学习的内容(flag)
  9. 最小公倍数最大公约数
  10. WIndow Document