首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >总是从cygpath获得启动/cygdrive的路径?

总是从cygpath获得启动/cygdrive的路径?
EN

Stack Overflow用户
提问于 2015-11-10 11:16:01
回答 1查看 994关注 0票数 2

在Cygwin上,cygpath应用程序在Windows和Unix样式的路径之间转换.

考虑以下例子:

代码语言:javascript
复制
$ cygpath -u "c:/"
/cygdrive/c

$ cygpath -u "c:/cygwin64/bin"
/usr/bin

有任何方法从第二个命令中获取/cygdrive/c/cygwin64/bin吗?

我需要这样做,因为Cygwin有时会对它的根在哪里感到困惑,所以我想要一个绝对的路径来澄清。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-10 18:45:13

不,Cygwin的cygpath不支持这个。您所能做的最好是用您自己的转换工具手动修复它;如下所示:

代码语言:javascript
复制
#!/usr/bin/env bash

if [[ "$1" == -z ]]; then
    # Invoked with -z, so skip normal cygpath processing and convert the path
    # here.
    #
    # The sed command replaces "c:" with "/cygdrive/c", and switches any
    # back slashes to forward slashes.
    shift
    printf "%s\n" "$*" | sed -r 's!(.):([\\\/].*)$!/cygdrive/\1\2!;s!\\!/!g'
else
    # Not invoked with -z, so just call cygpath with the arguments this script
    # was called with.
    exec cygpath "$@"
fi

如果您将上面的脚本存储为mycygpath.sh,那么它的行为将与cygpath完全一样,除非给它-z参数,在这种情况下,它将简单地将n:/转换为/cygdrive/n/

代码语言:javascript
复制
$ ./mycygpath.sh -u "c:/"
/cygdrive/c

$ ./mycygpath.sh -u "c:/cygwin64/bin"
/usr/bin

$ ./mycygpath.sh -z "c:/cygwin64/bin"
/cygdrive/c/cygwin64/bin

当然,有一个很明显的问题,为什么"Cygwin会对它的根在哪里感到困惑“;这根本不应该发生,并且意味着Cygwin设置有问题。但这不是你问的问题,你也没有给出足够的细节来开始提出建议。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33628727

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档