相当于 OS X 中 Cygwin 中的“开放”?

相当于 OS X 中 Cygwin 中的“开放”?

我知道这可能是一个有点奇怪的问题,而且我在这里问这个问题。原因是,每当我询问 Windows 用户,甚至普通的 Cygwin 用户时,他们似乎不明白为什么我需要这个功能。

对于那些没有在 Mac OS X 的 shell 中使用过“open”的人来说,它的工作原理如下:

$ 打开 somepic.jpg

$ 打开 SomeFile.m

因此它会查看与该文件关联的默认程序,然后将其打开。我想在 Cygwin 内部做同样的事情。任何想法将不胜感激!

答案1

$ cygstart theFile.ext

这将使用您为 .ext 文件设置的默认应用程序打开 theFile.ext。

答案2

为了完整起见,xdg-openLinux 上的角色与 Linux 端的角色大致相同。

答案3

如前所述,最好的方法可能是cygstart。您可以向 .bashrc (或 .zshrc 或其他)添加别名:

alias open='cygstart'

但您也可以用 做一些事情explorer.exe。它可能不如,cygstart但如果您在使用该方法时遇到任何问题(或者您需要将其与 Git 的 bash shell 而不是 Cygwin 一起使用),请记住这是一个选项。

在此之前,我一直在使用 Windows 版 Git 附带的 bash shell,并且我已经

alias open='explorer.exe'

在我的 .bash_profile 中。它将在 Windows 资源管理器中打开目录,并在默认应用程序中打开文件(根据 Windows 的“默认”定义)。

但它确实有局限性。由于 explorer.exe 预计在 DOS 提示符下使用(如果在命令行下的话),因此不要指望通配符能够工作。例如,如果您想同时打开 Gemfile、Vagrantfile、Cheffile 和 Rakefile,并且您输入

open *file

您只会看到一个 Windows 资源管理器窗口。我不知道这里的逻辑(!?)是什么。最有可能的是 explorer.exe 只是忽略所有参数,因为它不知道如何处理多个参数。

cygstart也不是很智能,因为它在传递多个参数时只打开第一个参数,但至少它打开一个文件,而不是当前目录。

相关内容