一个自动将 markdown 的本地图片上传至 minio 的脚本

我写 blog 基本都是用 typora 这个markdown 编辑器。插入图片时它会在本地自动生成图片备份。这篇文章里我将自动替换文章里的图片路径,更改为云端的路径,并自动把图片上传到云端。我上传云端的服务为 minio。另外,这个脚本是在 Mac 下运行的。如果是其他系统可能需要做一些微调。

需求如下:

比如我8月4日完成了这篇文章:2023-08-04-displaying-images-in-the-linux-command-line.md

我需要将文件里的

  • (2023-08-04-displaying-images-in-the-linux-command-line.assets/image-20230816103829510.jpg)
  • (2023-08-04-displaying-images-in-the-linux-command-line.assets/image-20230816103916037.jpg)

这两个内容改为:

  • (https://cdn.kelu.org/blog/2023/08/image-20230816103829510.jpg)
  • (https://cdn.kelu.org/blog/2023/08/image-20230816103916037.jpg)

以下是replace.sh,执行如下命令就行:

./replace.sh 2023-08-04-displaying-images-in-the-linux-command-line.md

核心命令为这两个:

image-20230823174756304

  • 将文件夹改为url
  • 将png改为jpg

另外我额外完成了一个功能,删除连续的空行为一个空行:

sed '/^$/N;/\n$/D' "${FILE}" > $temp_file
mv $temp_file "${FILE}"

上传至 minio 的命令参考 《Mac 配置 minio 客户端 mc 命令行》 或者 minio 官方文档 MinIO Client

mc cp "$IMAGE" "myminio/blog/${DATE_PART}/${IMAGE_NAME}"

在Mac上定时强制终止应用(微信)

上班经常一不小心微信聊了几句就忘记干正事了。写了一个定时任务,每个五分钟强制退出微信,拒绝成为摸鱼人!

这是脚本:

#!/bin/bash

pid=$(ps aux | grep "/Applications/WeChat.app/Contents/MacOS/WeChat" | grep -v "AppEx" | grep -v "grep" | awk '{print $2}')

if [ -n "$pid" ]; then
    kill -9 "$pid"
    echo "$(date '+%Y-%m-%d %H:%M:%S') - 微信已经被你狠狠地终结了!!!!!!!!!!!!!!!!!!!!!!"
else
    echo "$(date '+%Y-%m-%d %H:%M:%S') - 微信已经不在了,你又多事了。"
fi

保存为文件 kill_wechat.sh

然后设置定时任务:

crontab -e

填入:

*/5 * * * * /Users/kelu/Workspace/cron/kill_wechat.sh >> /Users/kelu/Workspace/cron/kill_wechat.log

完成✅


在 Mac 下搭建jekyll环境

之所以不用docker跑,是因为我目前本地环境很少用于大型开发,docker都比较占用系统资源,不想开着它。

首先使用homebrew安装chruby:

brew install chruby ruby-install xz

image-20230818174743688

安装 ruby:

ruby-install ruby 3.1.3

image-20230818174806883

如果本地无法连接到GitHub:

>>> Updating ruby versions ...
!!! Failed to download https://raw.githubusercontent.com/postmodern/ruby-versions/master/ruby/versions.txt to /Users/kelu/.cache/ruby-install/ruby/versions.txt!
!!! Failed to download ruby versions!

那个增加一下终端的代理(根据本地代理进行配置):

export HTTP_PROXY=http://127.0.0.1:1234
export HTTPS_PROXY=http://127.0.0.1:1234

等的比较久:

image-20230818175059111

设置一些环境变量:

echo "source $(brew --prefix)/opt/chruby/share/chruby/chruby.sh" >> ~/.zshrc
echo "source $(brew --prefix)/opt/chruby/share/chruby/auto.sh" >> ~/.zshrc
echo "chruby ruby-3.1.3" >> ~/.zshrc # run 'chruby' to see actual version

如果使用的是bash的话就把 .zshrc改成 .bashrc

注意⚠️,这里需要这么配置,否则运行下面一个命令就会报错:

ERROR: While executing gem … (Gem::FilePermissionError) You don’t have write permissions for the /Library/Ruby/Gems/2.6.0 directory.

安装Jekyll

gem install jekyll

安装一些插件:

gem install jekyll-paginate

运行:

jekyll serve

参考资料


使用 lsix 让 Linux 命令行显示图片

在服务器上存了一些图片,没有预览比较麻烦。

要能在命令行下预览,需要一个前提条件是终端支持 Sixel Graphics。像我使用 iTerm2、服务端预览没有问题。但如果进入 tmux 之后,就不行了。

  1. 安装 ImageMagick

    Ubuntu/Debian

    sudo apt-get install imagemagick
    

    macOS

    brew install imagemagick
    
  2. 安装 lsix

    wget https://raw.githubusercontent.com/hackerb9/lsix/master/lsix
    sudo mv lsix /usr/local/bin
    sudo chmod +x /usr/local/bin/lsix
    
  3. 使用

    lsix
    

    image-20230816103829510

    如果终端或者服务端不支持,则会显示如下:

    image-20230816103916037