前言
生活、工作中一直使用markdown记录一些东西,所以我就使用了Typora。Typora中上传图片不是很方便,我想通过自定义命令将图片上传到git,不想额外下载PicGo之类的工具。于是参考其他大佬们的方法,自己尝试着写了一下上传的shell脚本。
直接贴代码
#!/bin/bash
# 本地仓库路径
LOCAL_REPO_PATH=[Your local Repo path]
# 远程仓库路径
# Git
REMOTE_REPO_PATH=[Your remote Repo path]
## 或者Gitee
# REMOTE_REPO_PATH=[Your remote Repo path]
# 日志文件地址
LOG_FILE="${LOCAL_REPO_PATH}/typora_upload.log"
# 清除日志
> ${LOG_FILE}
# 遍历文件路径
for file_path in "$@"
do
# 校验文件路径
if [ ! -n "${file_path}" ] ; then
echo "Usage: imgup [image path]"
exit 1
fi
# 切换至本地仓库的目录
cd ${LOCAL_REPO_PATH} || { echo "Failed to change directory to ${LOCAL_REPO_PATH}" >> ${LOG_FILE}; exit 1; }
# 获取文件名
file_name=$(basename "${file_path}")
# 复制文件至本地仓库目录
cp "${file_path}" "${LOCAL_REPO_PATH}/src/${file_name}" && { echo "Copy ${file_path} to ${LOCAL_REPO_PATH}/src/${file_name}" >> ${LOG_FILE}; } || { echo "Failed to copy ${file_path} to ${LOCAL_REPO_PATH}/src/${file_name}" >> ${LOG_FILE}; exit 1; }
# 通过git bash上传到远程仓库
git add . >> ${LOG_FILE} 2>&1 && git commit -m "${file_name}" >> ${LOG_FILE} 2>&1 && git push -u origin master >> ${LOG_FILE} 2>&1
# 判断git命令是否失败
if [ $? -ne 0 ]; then
echo "Git operation failed. Check ${LOG_FILE} for details."
exit 1
fi
# 根据域名处理上传后的文件url
if [[ "${REMOTE_REPO_PATH}" =~ ^https://github.com ]]; then
# Git
echo "${REMOTE_REPO_PATH}/src/${file_name}?raw=true"
elif [[ "${REMOTE_REPO_PATH}" =~ ^https://gitee.com ]]; then
# Gitee
echo "${REMOTE_REPO_PATH}/src/${file_name}"
else
echo "Unknown repository '${REMOTE_REPO_PATH}'. Check ${LOG_FILE} for details." >> ${LOG_FILE}
fi
done
使用
我是macos,所以没有考虑windows中该如何处理。
使用时只需git clone仓库,然后将scripts/upload.sh中的变量LOCAL_REPO_PATH、REMOTE_REPO_PATH替换成自己的。由于网络原因,也可以使用Gitee仓库,访问速度会快一些。它跟Git仓库的区别是预览文件的路径规则不同。
然后打开Typora的设置,按图中标注的顺序配置即可。