原创博客地址:脚本_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. OC语言--SEL类型小记
  2. Access denied for user 'root'@'localhost' (using password:YES) 解决方案
  3. 关于小程序云开发的一些经典问题处理
  4. 【MCTalk Live】网易对话谷歌:如何成为一个顶50个的A+++++程序员
  5. visual studio学习python_一步一步学Python3(小学生也适用) 第三篇: Visual Studio Code
  6. 使用gradle-android搭建jenkins slave构建机器常见构建问题(二)
  7. 进入法院黑名单之后,买彩票中了500万还能领奖吗?
  8. android相对布局代码,Android基础_3 Activity相对布局(示例代码)
  9. ToF是否是噱头?小米王腾发长文详解...
  10. unable to locate adb , android studio无法识别模拟器和手机
  11. 五邑大学计算机组成原理试卷,2017年五邑大学信息工程学院807微机原理与应用[专业硕士]之计算机组成原理考研强化模拟题...
  12. python如何查看类信息_关于如何查看本地python类库详细信息的方法
  13. 关于欧几里德第五公设的感言
  14. mysql 正则表达式_MySQL的正则表达式
  15. 京东注册页面简单html代码,(模仿京东用户注册)用JQuery实现简单表单验证,初学者必看...
  16. Halcon例程分析2:颜色检测识别
  17. 扣哒世界发布面向中小学阶段C++信奥课程体系
  18. 民兴商学院:2019最新13家银行信用卡提额攻略!
  19. 数据分析36计(24):因果推断结合机器学习估计个体处理效应
  20. 搭载三款动力 宝马丰田将联手推全新跑车

热门文章

  1. 利用cli.go来写命令行应用
  2. 关于web项目跨域问题详解
  3. SQL Server着眼于非数字数据类型
  4. ssis 列转换_SSIS包中的行采样转换和百分比采样转换
  5. olap 多维分析_如何通过依赖T-SQL从OLAP多维数据集有效地提取数据
  6. PowerShell加密SQL Server的密码技术
  7. centos7 如何使用ReaR进行系统备份(如何使用NFS方法设置ReaR备份)
  8. parseInt原来是这样用的
  9. 公式化学习urllib(第一卷)
  10. php的计划任务定时执行