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

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

在 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/c
converted=$(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://www.hskmm.com/?act=detail&tid=8640

相关文章:

  • 金融租赁公司厂商租赁业务调研报告
  • 普科科技PKC7030H交直流电流探头应用指南​​
  • 从“分散”到“统一”,中控技术利用SeaTunnel构建高效数据采集框架,核心数据同步任务0故障运行!
  • T/B cell subtype marker - un
  • SAP FICO 完全凭证替代
  • K8s Application模式下的flink任务执行精要
  • 从0打造一个TTS语音合成引擎:原理与实现
  • 莫队
  • 0voice-2.1.1-网络io与io多路复用select/poll/epoll
  • Java基本语句-分支语句
  • 丘成桐谈AI
  • 异常检测在网络安全中的应用 - 实践
  • 大文件分片上传
  • 人小鼠免疫细胞maker基因 - un
  • HyperWorks许可配置
  • 国标GB28181视频平台EasyGBS如何解决安防视频融合与级联管理的核心痛点?
  • python基础-推导式
  • 人 CD 抗原完全指南 - un
  • Java入门知识
  • AUTOSAR网络管理
  • 写用例注意点
  • 12 路低延迟推流!米尔 RK3576 赋能智能安防 360 环视
  • A公司一面:类加载的过程是怎么样的? 双亲委派的优点和缺点? 产生fullGC的情况有哪些? spring的动态代理有哪些?区别是什么? 如何排查CPU使用率过高?
  • Alternating Subsequence
  • 白鲸开源“创客北京2025”再摘殊荣,聚焦Agentic AI时代数据基础设施建设
  • python基础-公共操作
  • 天翼云第九代弹性云主机:让每一次计算快人一步
  • 若依(RuoYi)框架漏洞总结
  • 第一次个人项目作业_论文查重
  • 2025年版《中科院期刊分区表》与2023年版对比表,附名单可直接查阅