聲明
着急的朋友可以直接看下面的編寫腳本目錄項
背景
最近https://raw.githubusercontent.com/
被牆了,然後衆所周知我們就無法訪問上面的內容了,所以我自己用github當圖牀,然後我的博客現在的圖片全都無法正常加載了
所以我需要更改到國內的鏈接倉庫或者自己自己服務器搭建的倉庫,那麼我就要修改我現在整整131篇博文的圖片鏈接,我想我會煩死的,所以我就想到了自己之前學的shell腳本,自動化批量修改文件鏈接的格式
背景二
我今天瀏覽我的blog的時候突然發現一些照片無法正常訪問,然後突然想到自己之前從gitee搬遷到github的原因,就是因爲gitee有1M大小的顯示,一旦圖片大於1M就無法正常展示
所以2020年3月4日17:20 又一次批處理我的文件鏈接,並且在此之前花了整整一個下午去搭建我的私有服務器圖牀
背景三
發現了cdn.jsdelivr無縫銜接github倉庫,而且帶寬無限,然後就用上了,畢竟自己的服務器帶寬只有1M
單文件測試
非插入測試
sed -e "s/https:\/\/raw.githubusercontent.com\/wolfdan666\/BlogPic\/master\//https:\/\/gitee.com\/wolfdan\/BlogPic\/raw\/master\//g" ARSTB打卡第44周-44-521.md
解讀
-e
是表示用後面的腳本執行s/./../
表示用.
替換..
,然後最後加一個g
表示全局替換- 其中對於鏈接中用到的每一個
/
都要在前面添加\
來轉義 - 最後的是要執行腳本的文件名
- 當然這個腳本是sed執行流處理,所以不會修改文件內容,只是把修改結果打印到stdout,這裏的stdout就是我們的命令行終端
- 我們要修改文件的話,就要把
-e
改成-i
結果截取片段
# 修改前
(https://raw.githubusercontent.com/wolfdan666/BlogPic/master/books/%E4%B8%80%E7%A6%85_%E4%BD%A0%E6%80%BB%E8%AF%B4%E6%B2%A1%E4%BA%8B.jpg)
# 運行上面的腳本之後
(https://gitee.com/wolfdan/BlogPic/raw/master/books/%E4%B8%80%E7%A6%85_%E4%BD%A0%E6%80%BB%E8%AF%B4%E6%B2%A1%E4%BA%8B.jpg)
插入測試(總感覺哪裏怪怪的)
sed -i "s/https:\/\/raw.githubusercontent.com\/wolfdan666\/BlogPic\/master\//https:\/\/gitee.com\/wolfdan\/BlogPic\/raw\/master\//g" ARSTB打卡 第44周-44-521.md
解讀
這裏就是上面的腳本把-e
改成-i
結果展示
sed修改文件,git查看差異
文件批處理
操作前請備份,或者有git倉庫,可以回滾
測試find
for n in `find . -name "*.md"`;do echo $n;done
編寫腳本
wolfdan@wolfdan-PC $ vim chlink.sh
wolfdan@wolfdan-PC $ cat chlink.sh
#!bin/bash
echo "請開始你的表演---腳本出自:www.wolfdan.cn , 作者: 單林敏"
sum=0
for n in `find . -name "*.md"`
do
((sum++))
sed -i "s/https:\/\/raw.githubusercontent.com\/wolfdan666\/BlogPic\/master\//https:\/\/gitee.com\/wolfdan\/BlogPic\/raw\/master\//g" $n
done
echo "操作了{$sum}個文件"
echo "請仔細覈查,建議使用VScode的git工具查看更改差異更香"
wolfdan@wolfdan-PC $ bash chlink.sh
請開始你的表演---腳本出自:www.wolfdan.cn , 作者: 單林敏
操作了{143}個文件
請仔細覈查,建議使用VScode的git工具查看更改差異更香
背景二的代碼編寫
發現windows使用git的bash處理速度比linux下面的原生bash處理速度相差甚遠!
單林敏@DESKTOP-A7T3V67 MINGW64 /f/hexo/blog/source (master)
$ ls
_drafts _posts about ads.txt alipay.jpg categories chlink.sh CNAME links tags 捐贈 下雪了
單林敏@DESKTOP-A7T3V67 MINGW64 /f/hexo/blog/source (master)
$ vim chlink.sh
單林敏@DESKTOP-A7T3V67 MINGW64 /f/hexo/blog/source (master)
$ cat chlink.sh
#!bin/bash
echo "請開始你的表演---腳本出自:www.wolfdan.cn , 作者: 單林敏"
sum=0
for n in `find . -name "*.md"`
do
((sum++))
#sed -i "s/https:\/\/raw.githubusercontent.com\/wolfdan666\/BlogPic\/master\//https:\/\/gitee.com\/wolfdan\/BlogPic\/raw\/master\//g" $n
sed -i "s/https:\/\/gitee.com\/wolfdan\/BlogPic\/raw\/master/https:\/\/www.wolfdan.cn\/img/g" $n
done
echo "操作了{$sum}個文件"
echo "請仔細覈查,建議使用VScode的git工具查看更改差異更香"
單林敏@DESKTOP-A7T3V67 MINGW64 /f/hexo/blog/source (master)
$ bash chlink.sh
請開始你的表演---腳本出自:www.wolfdan.cn , 作者: 單林敏
操作了{146}個文件
請仔細覈查,建議使用VScode的git工具查看更改差異更香
真香
背景三代碼編寫
單林敏@DESKTOP-A7T3V67 MINGW64 /f/hexo/blog/source (master)
$ vim chlink.sh
單林敏@DESKTOP-A7T3V67 MINGW64 /f/hexo/blog/source (master)
$ cat chlink.sh
#!bin/bash
echo "請開始你的表演---腳本出自:www.wolfdan.cn , 作者: 單林敏"
sum=0
for n in `find . -name "*.md"`
do
((sum++))
#sed -i "s/https:\/\/raw.githubusercontent.com\/wolfdan666\/BlogPic\/master\//https:\/\/gitee.com\/wolfdan\/BlogPic\/raw\/master\//g" $n
#sed -i "s/https:\/\/gitee.com\/wolfdan\/BlogPic\/raw\/master/https:\/\/www.wolfdan.cn\/img/g" $n
sed -i "s/https:\/\/www.wolfdan.cn\/img/https:\/\/cdn.jsdelivr.net\/gh\/wolfdan666\/BlogPic/g" $n
done
echo "操作了{$sum}個文件"
echo "請仔細覈查,建議使用VScode的git工具查看更改差異更香"
單林敏@DESKTOP-A7T3V67 MINGW64 /f/hexo/blog/source (master)
$ bash chlink.sh
請開始你的表演---腳本出自:www.wolfdan.cn , 作者: 單林敏
操作了{149}個文件
請仔細覈查,建議使用VScode的git工具查看更改差異更香
單林敏@DESKTOP-A7T3V67 MINGW64 /f/hexo/blog/source (master)
$
檢查
VScode初步檢查
用vscode的git查看十分方便,還可以隨時撤銷更改
hexo s檢查
hexo clean && hexo g && hexo s
檢查
Have fun with shell
shell真的好爽,自動化腳本,減去人工頻繁操作
我因爲背景二更新文章小插曲
因爲hexo沒有文章分類,我100多篇博文,所以很難找,然後用shell查找非常愉悅