Output type options:
-d, --dos print DOS (short) form of NAMEs (C:\PROGRA~1\)
-m, --mixed like --windows, but with regular slashes (C:/WINNT)
-M, --mode report on mode of file (binmode or textmode)
-u, --unix (default) print Unix form of NAMEs (/cygdrive/c/winnt)
-w, --windows print Windows form of NAMEs (C:\WINNT)
-t, --type TYPE print TYPE form: 'dos', 'mixed', 'unix', or 'windows'
9条答案
按热度按时间6fe3ivhb1#
Cygwin、Git Bash和MSYS2有一个现成的实用程序
cygpath.exe
,专门用于执行此操作。lx0bsm1f2#
我不知道
msys
,但是快速的谷歌搜索显示它包含了sed
实用程序。所以,假设它在msys
中的工作方式与在原生Linux中的工作方式相似,下面是一种方法:从Windows到POSIX
您必须将所有反斜杠替换为斜杠,删除驱动器号后面的第一个冒号,并在开头添加一个斜杠:
或者,如Xaizek所指出的,
从POSIX到Windows
您必须添加一个分号,删除第一个斜杠,并将所有斜杠替换为反斜杠:
或者更有效地,
其中
$pth
是分别存储Windows或POSIX路径的变量。w9apscun3#
只需使用
cygpath
:你可能会问:"我是否安装了
cygpath
?"1.如果您使用的是git-bash shell,那么是的。
1.如果你在cygwin或mSYS2,那么是的。
1.如果你使用的是另一个shell,但是你之前安装过git-bash,那么
cygpath
可以在git-bash-install-folder\usr\bin\cygpath.exe
中找到。1.也许没有,但我相信你能找到安装它的方法。
t1rydlwq4#
MSYS中的“正确”方法是:
这避免了手动转换斜线,它只是简单地取消激活路径转换。
kiayqfof5#
下面是我的实现(在git bash上测试)。
从POSIX到Windows
\,^/, s,/,:/,2
(将/drive/dir/
转换为/drive:/dir/
)是它的核心,并在2
和/
之前插入:
。为了可读性,我使用,
而不是/
作为分隔符。如果以/
开始(\,^/,
),然后将/
替换为:/
以获得第二个2
。我不想假设驱动器号长度为1,因此这适用于/sd0/some/dir
。s,^/,,
移除前导的/
,并且s,/,\\,g
将所有的/
转换为\
。\,/$, !s,$,/,
用于处理/c
的极端情况,并确保第二个/
(/c/
)用于下一个命令的工作。注:
如果这里的字符串
<<<
在shell中不起作用,那么可以使用echo
和管道作为这里e script
4c8rllxm6#
仅供参考-至少对于我的git版本2.26.2.windows.1,例如,如果我有一个类似于C:\dev\work_setup\msk的路径,我可以直接进入Git Bash并输入
这将导致当前文件夹被更改为/c/dev/work_setup/msk -所以这种类型的转换似乎是自动完成的,只要我把Windows路径放在双引号内。不幸的是,我没有参考原始文档,将备份。
sbtkgmzw7#
我的解决方案使用文件夹/文件列表,它分两步完成。假设您想将路径从***D:\example*替换为 * a /example,以替换重复了此Windows路径的文件列表。
第一步,它将反斜杠更改为斜线
请注意,parent-folder***可以是根(/)或您喜欢的任何名称,如果您的文件名或文件夹名称中包含白色,则必须使用-d '\n'***参数。
第二步,将D:/example替换为/example:
我想分享这个解决方案,因为它花了我一些时间,使这2行,但它一直是真正有帮助的工作(我正在迁移一个Windows应用程序到Linux服务器与吨的Windows路径内')。
iszxjhcz8#
@hello_earth的答案具有误导性,因为Windows路径必须是双反斜杠,如下所示:
否则 shell 将找到转义序列。
zzzyeukh9#
我觉得这能帮到你。我是为了自己。
将所有Windows路径转换为POSIX路径:
https://github.com/hypolas/wintobashpath
技术:
我的结果:
变成:
你可以把这个二进制文件放在你的Windows启动文件夹中,所以如果你用PATH安装新的软件,这个PATH会在启动时自动添加到bashrc中。
如果你有任何建议,我可以为你更新,如果这可以帮助很多人。