以下是实现该功能的 Bash 脚本:
bash
#!/bin/bash
LINK_PATH="/opt/wslibs-cuda11.8"
检查是否为软链接
if [ -L "KaTeX parse error: Expected 'EOF', got '#' at position 24: ...H" ]; then #̲ 获取软链接的绝对目标路径 ...(readlink -f "$LINK_PATH")
# 提取目录部分(去掉文件名)
TARGET_DIR=$(dirname "$TARGET_PATH")
# 在当前目录创建对应目录结构
mkdir -p "${PWD}${TARGET_DIR#/}" # 转换为当前目录下的路径
echo "软链接目标目录已创建:${PWD}${TARGET_DIR#/}"
else
echo "$LINK_PATH 不是软链接"
exit 1
fi
关键点解释:
软链接检测
[ -L "$LINK_PATH" ] 检查指定路径是否为符号链接
获取真实路径
readlink -f 解析软链接并返回绝对路径(包括处理多级链接)
路径转换
${TARGET_DIR#/} 去除路径开头的 /,将绝对路径转换为相对路径
目录创建
mkdir -p 递归创建目录,自动处理父目录
示例:
假设软链接指向 /usr/local/cuda-11.8,脚本会在当前目录创建:
./usr/local/cuda-11.8
使用方法:
将脚本保存为 create_link_dir.sh
赋予执行权限:
chmod +x create_link_dir.sh
运行脚本:
sudo ./create_link_dir.sh
(需要 root 权限修改 /opt 目录)
注意事项:
脚本会直接在 /opt 目录操作,请确保有足够权限
已存在的目录不会报错(mkdir -p 的特性)
支持包含空格的路径(通过引号包裹变量)