49 lines
1.6 KiB
Bash
Executable File
49 lines
1.6 KiB
Bash
Executable File
#!/bin/bash
|
|
# 技能链接脚本 - 将当前目录下分类中的技能链接到 ~/.agents/skills/
|
|
# 用法: 在技能根目录(包含 development-and-standards 等分类文件夹)执行此脚本
|
|
|
|
TARGET_DIR="$HOME/.agents/skills"
|
|
|
|
# 创建目标目录(如果不存在)
|
|
mkdir -p "$TARGET_DIR"
|
|
|
|
# 遍历所有一级子目录(分类目录)
|
|
for category_dir in */; do
|
|
# 排除非目录项
|
|
[ -d "$category_dir" ] || continue
|
|
# 遍历分类目录下的技能子目录
|
|
for skill_dir in "$category_dir"/*/; do
|
|
[ -d "$skill_dir" ] || continue
|
|
skill_name="${skill_dir%/}"
|
|
skill_name="${skill_name##*/}"
|
|
|
|
# 源技能目录的绝对路径
|
|
src="$(realpath "$skill_dir")"
|
|
|
|
# 目标链接路径
|
|
link="$TARGET_DIR/$skill_name"
|
|
|
|
# 如果目标已存在且不是链接到当前源,则跳过(或可改为询问)
|
|
if [ -L "$link" ]; then
|
|
# 已存在符号链接,检查是否指向相同路径
|
|
current_target="$(readlink "$link")"
|
|
if [ "$current_target" = "$src" ]; then
|
|
echo "跳过: $link 已指向 $src"
|
|
continue
|
|
else
|
|
echo "警告: $link 存在但指向不同目标 ($current_target),将替换"
|
|
rm "$link"
|
|
fi
|
|
elif [ -e "$link" ]; then
|
|
echo "警告: $link 存在且不是符号链接,跳过 (手动处理)"
|
|
continue
|
|
fi
|
|
|
|
# 创建符号链接
|
|
ln -s "$src" "$link"
|
|
echo "已链接: $src -> $link"
|
|
done
|
|
done
|
|
|
|
echo "完成。所有技能已链接到 $TARGET_DIR"
|