博客目前使用 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
  }

结语

现在舒服了~