将 Cygwin 路径转换为 ruby 可以理解的路径
在我的脚本中,我有一个部分需要将本地路径名更改为绝对路径(抱歉,没有进入它)
我正在使用
args+="-f "
args+="$(realpath "$relative-path") "
jruby -Ilib bin/trace.rb $args
这适用于脚本内的内容,但是当我将此绝对文件路径传递给 ruby 时,它不知道该怎么办。我可以想办法通过字符串替换来解决本地机器上的这个问题。 sub(C:代表 cygpath/c),但如果我要将脚本部署到未知的文件系统,我可能会遇到麻烦。 它需要在 cygwin 上进行开发(我知道我必须在 widows 中开发)和 unix 盒子上工作。
问题:
是否有一种方法可以让我的脚本始终将可用路径作为参数传递给 ruby(jruby,但这应该不重要)。
欢迎提供单一解决方案或以不同方式处理 cygwin 和 unix 环境的建议。
In my scrip I have a section that needs to change a local path name into an absolute path(not going in to it, sorry)
I am using
args+="-f "
args+="$(realpath "$relative-path") "
jruby -Ilib bin/trace.rb $args
This works for things inside the script, but when I pass this absolute file path to ruby, it does not know what to do. I can think of ways to fix this problem on my local box through string substitution.
sub (C: for cygpath/c), but if I were to deploy my script to an unknown file system I could be in trouble.
it needs to work on cygwin for development (I know I have to develop in widows) and unix boxes.
Question:
Is the a way that I can make my script always pass a usable path as an arg to ruby (jruby but that should not matter).
advice for a single solution or one tackles the cygwin and unix environments differently are both welcome.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
Cygwin 的 cygpath 命令就是完成这项工作的工具。它在 Cygwin 的 POSIX 路径和各种形式的 Windows 路径之间进行转换。它甚至会为您执行绝对路径转换,因此:
有关其选项的详细信息,请参阅 cygpath 的帮助输出或手册页。
Cygwin's
cygpath
command is the tool for the job. It converts between Cygwin's POSIX paths and various forms of Windows paths. It will even do the absolute path conversion for you, so:See cygpath's help output or man page for details on its options.
@ak2 具有正确答案。不过,最好使用数组来构建参数,特别是在路径有空格的情况下:
@ak2 has the right answer. You would be better off using an array to build up the arguments though, especially if the path has a space: