hexo图片不支持[[]]
的写法
obsidian默认为上述语法,可以在设置里更改为指定目录
但是默认粘贴格式是z-img/xxxx
hexo里渲染完后放入静态目录下,只有/z-img/xxxx
才能被顺利访问
所以简单写个脚本,进行hexo的同步,在脚本里把图片更改一下
脚本内容
#!/usr/bin/env bash
bash ~/.local/bin/blog_img_invert
SOURCE_DIR="~/blog/source/" # 博客内容的源目录
IMAGES_DIR="~blog/z-img/"%20%20%20%20%20%20%20%20%20%20%20%20#%20博客图片的源目录
DEST_POSTS="~/moonlit/source/_posts/" # hexo文章位置
DEST_IMG="~/moonlit/source/z-img/"%20%20%20%20#%20hexo图片位置
HEXO_DIR="~/moonlit/"
echo "开始复制 $SOURCE_DIR -> $DEST_POSTS ..."
cp -r "$SOURCE_DIR"/* "$DEST_POSTS"
if [ $? -ne 0 ]; then
echo "[错误] 文件复制失败,请检查路径或权限。"
exit 1
fi
echo "博客内容复制完成。"
echo "开始复制 $IMAGES_DIR -> $DEST_IMG ..."
cp -r "$IMAGES_DIR"* "$DEST_IMG"
if [ $? -ne 0 ]; then
echo "[错误] 图片复制失败,请检查路径或权限。"
exit 1
fi
echo "图片复制完成。"
cd "$HEXO_DIR" || {
echo "[错误] 无法进入 Hexo 目录: $HEXO_DIR"
exit 1
}
echo "执行: hexo clean ..."
hexo clean
if [ $? -ne 0 ]; then
echo "[错误] hexo clean 失败。"
exit 1
fi
echo "执行: hexo generate ..."
hexo generate
if [ $? -ne 0 ]; then
echo "[错误] hexo generate 失败。"
exit 1
fi
echo "执行: hexo algolia ..."
hexo algolia
if [ $? -ne 0 ]; then
echo "[错误] hexo algolia 失败。"
exit 1
fi
echo "执行: hexo deploy ..."
hexo deploy
if [ $? -ne 0 ]; then
echo "[错误] hexo deploy 失败。"
exit 1
fi
echo "脚本执行成功!"
exit 0
图片格式转换
#!/usr/bin/env bash
TARGET_DIR="~/blog/source"
find "$TARGET_DIR" -type f -name "*.md" | while read -r FILE; do
echo "处理文件: $FILE"
sed -i '' -E 's@(!\[.*\]\()z-img/@\1/z-img/@g'%20"$FILE"
sed -i '' -E 's@!\[\[([^]]+)\]\]@@g' "$FILE"
sed -i '' -E -e ':a' -e 's@(/z-img/[^)]*) ([^)]*)@\1%20\2@g' -e 'ta' "$FILE"
done
echo "替换完成。"
然后在obsidian里可以用插件绑定操作,每次写完自动来次image_invert就好了