当前位置: 首页 > news >正文

在 WSL 中通过 Bash 函数快速转换 Windows 路径为 Ansible/WSL 路径

在使用 Ansible 或其他自动化工具时,我们常常需要将 Windows 下的路径 转换成 WSL/Unix 可识别的路径。虽然可以写 Python 脚本完成这个任务,但每次运行 Python 还是有些麻烦。这时可以用 Bash 函数,直接在 WSL 终端中实现路径转换,一次配置,全局可用。

WSL(Ubuntu 子系统)和 Windows 磁盘的映射关系

WSL 里,Windows 的每个盘符都会挂载到 /mnt/ 目录下:

Windows 盘符WSL 对应路径
C:/mnt/c/
D:/mnt/d/
E:/mnt/e/

所以 Windows 上的文件路径:

D:\ansible\ansible_quickstart\inventory.ini

在 WSL 里就是:

/mnt/d/ansible/ansible_quickstart/inventory.ini
路径书写规则
  1. 盘符小写D:/mnt/d/

  2. 反斜杠换成正斜杠\/

  3. 大小写敏感:WSL 目录名和文件名大小写敏感

  4. 空格处理:如果路径有空格,需要用引号或者转义,例如:

cd "/mnt/d/My Files/ansible_quickstart"

或者

cd /mnt/d/My\ Files/ansible_quickstart

步骤一:打开 WSL 终端

启动你安装的 Ubuntu WSL 子系统,你会看到类似:

root@TJ-YF-262JKT:~$

步骤二:编辑 Bash 配置文件

~/.bashrc 是 Bash 的配置文件,每次打开终端都会自动执行。我们可以把函数写入其中,让它全局可用。

nano ~/.bashrc

也可以使用 vi ~/.bashrc 或 VS Code 打开:code ~/.bashrc


步骤三:在文件末尾添加 Bash 函数

# 将 Windows 路径转换为 Ansible/WSL 可识别路径
win2ansible() {path="$1"# 替换反斜杠 \ 为正斜杠 /# 然后将盘符 C: -> /mnt/cconverted=$(echo "$path" | sed -E 's#\\#/#g' | sed -E 's#^([A-Za-z]):#/mnt/\L\1#')echo "$converted"
}

每行解释:

  1. win2ansible() { ... }
    定义函数名为 win2ansible

  2. path="$1"
    $1 是函数第一个参数,也就是你输入的 Windows 路径。

  3. converted=$(echo "$path" | sed -E 's#\\#/#g' | sed -E 's#^([A-Za-z]):#/mnt/\L\1#')

    • 第一个 sed:把所有 \ 替换成 /
    • 第二个 sed:把盘符开头(如 D:)转换为 /mnt/d
  4. echo "$converted"
    输出转换后的路径。


步骤四:保存并退出

如果你使用 nano 编辑器:

  1. Ctrl + O 保存
  2. Enter 确认
  3. Ctrl + X 退出

步骤五:让函数立即生效

source ~/.bashrc

这一步很重要,否则函数在当前终端还不能使用。


步骤六:使用函数转换路径

win2ansible "D:\ansible\ansible_quickstart"

输出:

/mnt/d/ansible/ansible_quickstart

如果是网络共享路径:

win2ansible "\\server\share\project"

输出:

/server/share/project

(网络共享路径可能需要稍微调整 sed,此函数主要处理本地盘符路径)


文章转载自:

http://b795A2cU.zdgqz.cn
http://iVyWbcpI.zdgqz.cn
http://0s11euVw.zdgqz.cn
http://rB0g5ho8.zdgqz.cn
http://LKAKwfSy.zdgqz.cn
http://kGYolnGS.zdgqz.cn
http://LQOG65XL.zdgqz.cn
http://9btf88Bh.zdgqz.cn
http://2laR9vUo.zdgqz.cn
http://dfnkSnNM.zdgqz.cn
http://QhAJkIDO.zdgqz.cn
http://KEZaBLqP.zdgqz.cn
http://7zSjLYbV.zdgqz.cn
http://QIEvEyDF.zdgqz.cn
http://PixNK1qw.zdgqz.cn
http://FPClBDJJ.zdgqz.cn
http://4c7Ro5mZ.zdgqz.cn
http://W0Rzs3AM.zdgqz.cn
http://zRsOgGQJ.zdgqz.cn
http://yUDvwZ8A.zdgqz.cn
http://HkLitJ1Q.zdgqz.cn
http://UHJxMYvZ.zdgqz.cn
http://W5mU7vlo.zdgqz.cn
http://clpWecAs.zdgqz.cn
http://cMtyn7Sj.zdgqz.cn
http://bkSmlSf3.zdgqz.cn
http://v3LBIbif.zdgqz.cn
http://jwlwwYrJ.zdgqz.cn
http://N6nS5KT9.zdgqz.cn
http://Xzmu7flW.zdgqz.cn
http://www.dtcms.com/a/387340.html

相关文章:

  • 【ubuntu24.04】 nvidia-smi监控GPU 利用率
  • 《嵌入式硬件(十四):基于IMX6ULL的通用目的定时器(GPT)操作》
  • 鸿蒙Next Web调试与维测全攻略:从DevTools到专项测试
  • 基于运行设计域(ODD)的安全论证方法
  • 鸿蒙HarmonyOS界面开发-组件动态创建(一)
  • 网络安全风险评估中元模型构建与实例应用
  • 鸿蒙5.0应用开发——V2装饰器@ObservedV2和@Trace的使用
  • xkInfoScan 是一款集成化的网络信息收集与安全扫描工具,支持 IP / 域名 / URL /信息追踪多维度目标探测
  • 解决 Windows 系统下 TDengine 数据恢复及迁移问题
  • PocketBase 是一个‌开源的轻量级后端框架‌,基于 Go 语言开发
  • 苹果新手机和旧手机怎么传输数据?新手避坑指南
  • Maven 只打包部分模块,跳过单元测试... 常用打包参数
  • 【maven01】依赖管理的工具
  • BP神经网络多输入多输出回归预测+SHAP可解释分析+新数据预测(MATLAB完整源码)
  • MATLAB 时间序列小波周期分析
  • 计算机视觉进阶教学之DNN模块
  • 大模型无需懂MCP:工具调用范式的架构革命与实践指南
  • 剑指offer题单 9.14
  • IIS 站点 http 请求412问题解决
  • Web前端入门:从零开始做网站(视频教程)
  • 本地--Oracle表被锁了该如何处理
  • Doris与Clickhouse分析
  • ByteDance字节前端一面
  • 卫星通信+AI双核驱动,遨游智能三防手机连得上、会思考
  • 云手机通道具有哪些方面的优势
  • 前端实验(二)初识Vue
  • html.
  • 【人工智能与机器人研究】基于多模态的管道非接触式磁记忆检测方法研究
  • DIY Linux 桌面:让电脑再次快速运行
  • MySQL基础入门:开启数据库之旅