给文章编号
文章目录
博客目前使用 hugo 静态博客生成软件。当文章数目变多之后会有一个苦恼——不方便查找之前的文章。
起因
博客文章变多后在 VSCode 中就变成了下图的样子,要找到一篇文章要费一会功夫。
编号之前的样子
本着能偷懒就偷懒的原则,为了快速查找文章,就想到了给每篇博客编号。编号之后就变成了下面的样子:
编号之后的样子
自动化编号过程
花了半个小时的时间把四十多博客的编号搞定之后,我就在想:总不能每次创建新博客都自己编号吧?那就用脚本自动化编号吧。
用脚本自动编号的关键点是如何得到目前的最新博客的编号是多少。最容易想到的是创建一个文件用于保存当前的编号,每次新建博客时读取这个编号,新建完博客后更新这个值。但是这么做就需要有一个辅助的文件,感觉不是很优雅。接到想到能不能通过计算 ls 命令返回的文件数来进行编号呢。查了一下,果然可以。
下面这一行命令就可以实现计算 content/post/ 文件夹下的文件数。
ls -l content/post/ | grep "^-" | wc -l其中 ls -l content/post/ 按行输出目录中的文件和文件夹,grep "^-" 筛选出开头是 - 的文件,wc -l 计算行数。
在使用 bash 脚本编程进行数学运算时需要用 $(()) 将表达式包裹起来。
重定向迁移
编号完成之后显然之前博客的地址会发生变化,为了不影响 Google 搜索引擎的索引也方便保存博客书签的人可以正常访问到博客内容,我的打算是不删除之前的博客链接,等到足够长的时间后再手动删除过时的博客链接。
就这样过了一周之后,在 Google Search Console 中查看,发现 Google 并不会自动使用新的地址替换旧的地址,就算更新了博客的 sitemap 也不行。仔细想一下也是,谷歌没办法知道两个链接之间的关系。一番探索之后,在谷歌的整合重复网址文档中找到了解决方案。那就是使用 301 永久重定向。
在 Caddy 中可以使用如下的语法重定向链接:
redir 301 {
from-url to-url
}
结语
现在舒服了~