Docsify 自动生成sidebar.md脚本
2026-10-01 更新:本站 Wiki 已改为由 Hexo 的 scripts/wiki-data.js 在构建时从本地 Markdown 生成文章目录和搜索索引。新增文章后在博客根目录执行 npm run build 即可更新侧栏与搜索,现有 source/wiki/sidebar.sh 只维护四个查询入口。下文保留 2021 年的完整侧栏方案供参考,不要用它覆盖本站新版脚本;产品/CVE/指纹的 Markdown 索引页目前仍需单独同步。
项目结构12
3
4
5
6
╰─➤ ls -l
total 408
drwxr-xr-x 9 aresx staff 288 2 20 11:50 VulWiki
-rw-r--r--@ 1 aresx staff 140136 2 20 11:51 _sidebar.md
-rw-r--r--@ 1 aresx staff 1895 11 3 23:49 index.html
-rwxr-xr-x 1 aresx staff 1025 10 16 13:30 sidebar.sh
sidebar.sh
复制到index.html 同级目录下执行
注意:修改25行root_dir 中的目录为存储Markdown文件的目录
12
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#!/bin/bash
IFS=$(echo -en "\n\b")
function getdir(){
for element in `ls -1 $1`
do
dir_or_file=$1"/"$element
counter=`echo $dir_or_file | grep -o / | wc -l`
let counter-=2
if [ -d $dir_or_file ] ;
then
printf '%0.s ' $(seq 0 $counter) >> _sidebar.md
echo "- $element" >> _sidebar.md
getdir $dir_or_file
else
echo $dir_or_file
printf '%0.s ' $(seq 0 $counter) >> _sidebar.md
path=`echo $dir_or_file| sed "s/[ ]/%20/g" | sed "s/[+]/%2B/g"`
title=`echo $element | sed "s/.md//"`
echo "- [$title](./$path)" >> _sidebar.md
fi
done
}
root_dir=`ls -d VulWiki/*/`
#root_dir=`ls -d */ "$1/VulWiki" | sed 's/\///g'`
:> _sidebar.md
for dir in $root_dir
do
if [ "$dir" = "." ]
then
continue
else
C1=`echo $dir | cut -f2 -d '/'`
echo "- $C1" | cut -f2 -d '/' >> _sidebar.md
getdir `echo $dir | sed s'/.$//'`
fi
done
脚本会依次递归扫描root_dir下的目录中的所有Markdown文件
12
╰─➤ ls -d VulWiki/*/
VulWiki/IOT安全/ VulWiki/Web安全/ VulWiki/系统安全/