![相当于 OS X 中 Cygwin 中的“开放”?](https://linux22.com/image/17403/%E7%9B%B8%E5%BD%93%E4%BA%8E%20OS%20X%20%E4%B8%AD%20Cygwin%20%E4%B8%AD%E7%9A%84%E2%80%9C%E5%BC%80%E6%94%BE%E2%80%9D%EF%BC%9F.png)
我知道这可能是一个有点奇怪的问题,而且我在这里问这个问题。原因是,每当我询问 Windows 用户,甚至普通的 Cygwin 用户时,他们似乎不明白为什么我需要这个功能。
对于那些没有在 Mac OS X 的 shell 中使用过“open”的人来说,它的工作原理如下:
$ 打开 somepic.jpg
$ 打开 SomeFile.m
因此它会查看与该文件关联的默认程序,然后将其打开。我想在 Cygwin 内部做同样的事情。任何想法将不胜感激!
答案1
$ cygstart theFile.ext
这将使用您为 .ext 文件设置的默认应用程序打开 theFile.ext。
答案2
为了完整起见,xdg-open
Linux 上的角色与 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
也不是很智能,因为它在传递多个参数时只打开第一个参数,但至少它打开一个文件,而不是当前目录。