bash 判断 /opt/wslibs-cuda11.8 是否为软连接, 如果是,获取连接目的目录并自动创建

以下是实现该功能的 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 的特性)
支持包含空格的路径(通过引号包裹变量)