離線環境下 HELP CONTENTS 輸出扁平化,大類/小類/主題層級關係不明,查找語法極其低效。
mysql -e "HELP CONTENTS" 獲取一級分類列表mysql -e "HELP '分類名'" 獲取下級內容Name: 'xxx' → 具體主題(葉子節點)PLUGINS 首行異常、Numeric Functions 含 `/` 字符tree 命令:| ├── 縮進層級
#!/bin/bash
mkdir -p /tmp/test
mysql -uroot -p123456 -e "HELP CONTENTS" > /tmp/test/test.txt
sed -i '1d;$d' /tmp/test/test.txt
cd /tmp/test
format="|\t\b"
number=0
recursive() {
local filename=$1
number=$((number+1))
while read line; do
local name=$(echo "$line" | tr -d '[:blank:]')
mysql -uroot -p123456 -e "HELP '$line'" > "$name"
local firstline=$(head -1 "$name")
if [[ "$firstline" == "Name: '$line'" ]] || [[ "$firstline" == "Name: 'SHOW PLUGINS'" ]]; then
for i in $(seq $((number-1))); do echo -ne "$format"; done
echo "├── $line"
else
for i in $(seq $((number-1))); do echo -ne "$format"; done
echo "├── $line"
if [[ "$line" == "Numeric Functions" ]]; then
sed -i '1d;$d' "$name"
while read fn; do
for i in $(seq $number); do echo -ne "$format"; done
echo "├── $fn"
done < "$name"
else
sed -i '1d;$d' "$name"
recursive "$name"
number=$((number-1))
fi
fi
done < "$filename"
}
recursive /tmp/test/test.txt
rm -rf /tmp/test
sh 2.sh > 1.txt 2>&1 # 重定向 stderr 避免密碼警告污染輸出
├── Account Management
| ├── ALTER USER
| ├── CREATE USER
| ├── DROP USER
├── Administration
| ├── BINLOG
| ├── CACHE INDEX
| ├── FLUSH
...
├── Functions
| ├── Bit Functions
| | ├── &
| | ├── <<
| | ├── >>
| ├── Comparison operators
| | ├── !=
| | ├── <
| | ├── <=
...
mysql_help_tree.txt,離線環境直接 grep 查找less / vim 折疊功能,秒級定位語法