在Cygwin上,cygpath应用程序在Windows和Unix样式的路径之间转换.
考虑以下例子:
$ cygpath -u "c:/"
/cygdrive/c
$ cygpath -u "c:/cygwin64/bin"
/usr/bin有任何方法从第二个命令中获取/cygdrive/c/cygwin64/bin吗?
我需要这样做,因为Cygwin有时会对它的根在哪里感到困惑,所以我想要一个绝对的路径来澄清。
发布于 2015-11-10 18:45:13
不,Cygwin的cygpath不支持这个。您所能做的最好是用您自己的转换工具手动修复它;如下所示:
#!/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/。
$ ./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设置有问题。但这不是你问的问题,你也没有给出足够的细节来开始提出建议。
https://stackoverflow.com/questions/33628727
复制相似问题