【问题标题】:How to startup a Mac OS X application from command line?如何从命令行启动 Mac OS X 应用程序?
【发布时间】:2011-12-05 15:08:48
【问题描述】:

"open -a" 不是想要的答案,因为我想自动调试 Mac OS X 应用程序。这意味着如果有人可以提供类似 [program] [args] 格式的命令行会更好。所以ltrace机制可以将[program]作为调试目标,以[args]作为输入。

我尝试过像“/Applications/Microsoft Office 2011/Microsoft PowerPoint.app/Contents/MacOS/Microsoft PowerPoint”/Users/poc.pptx 这样的命令行,只有 Microsoft Point 进程已启动,但 poc.pptx 未打开。

打开 pptx 文件对 Microsoft Point 进行 grepping 后,它类似于:/Applications/Microsoft Office 2011/Microsoft PowerPoint.app/Contents/MacOS/Microsoft PowerPoint -psn_0_307275,没有参数“poc.pptx”。

我什至手动使用“gdb /Applications/Microsoft Office 2011/Microsoft PowerPoint.app/Contents/MacOS/Microsoft PowerPoint”和“set args /Users/poc.pptx”,然后“r”,目标应用程序可以不能在打开的特定文件时运行。

我对此感到困惑,那么,有人可以帮助我解决这个问题吗?

谢谢!

【问题讨论】:

  • 是什么让你相信文件名作为参数传递给 powerpoint 可执行文件?
  • 因为其他应用也可以这样启动。 /Applications/Preview.app/Contents/MacOS/Preview /Users/User/Desktop/t.tiff 例如。我是windows用户,windows的Microsoft Office也可以从cmd启动。

标签: macos


【解决方案1】:

进入文件目录,然后输入

open -a "Microsoft PowerPoint" <filename.ppt>

这里“Microsoft PowerPoint”是PowerPoint应用程序的名称,如果您的应用程序目录中的power point名称不同,请检查它。

这在我的 MAC (OSX 10.8) 上运行良好。

我们也可以给出完整的路径,而不仅仅是文件名。

    open -a "Microsoft PowerPoint" <ppt file path>

这也很好用。

【讨论】:

  • 确认open -a "Microsoft Word" &lt;filename.docx&gt;也有效
【解决方案2】:

open -b com.microsoft.PowerPoint &lt;filename&gt; 似乎可以让我从命令行打开演示文稿。

【讨论】:

    【解决方案3】:

    如果 PowerPoint 没有打开作为命令行参数传递的文档,那么这反映了 PowerPoint 的编码方式。除了微软之外,没有任何人可以做到这一点。

    操作系统通常不使用该技术来告诉应用程序打开文档。相反,它将 Apple 事件传递给应用程序。默认情况下,Cocoa 将接受命令行参数并将它们与此类 Apple 事件类似地对待,但显然 PowerPoint 覆盖了该默认行为。

    如果您想调试或跟踪 PowerPoint,我建议您分两步进行。首先,在调试器或跟踪程序下不带参数启动它。然后,告诉它打开一个文档。您可以使用 Finder 和/或 Dock 以正常方式执行此操作,也可以使用 open -a ...。这种打开文档的请求不会启动 PowerPoint 的第二个实例,它会向您正在调试/跟踪的已经运行的 PowerPoint 传递一个事件。因此,结果应该与您想要的相似。

    【讨论】:

      【解决方案4】:

      不确定这是否会对您有所帮助(取决于您希望如何进行调试),但您可以从命令行使用 AppleScript,如下所示:

      %osascript <<<EOD
      tell application "Excel" to open "Users:xxx:Documents:sheet.xls"
      EOD
      

      以这种方式输入时,您的脚本可以包含多行,而不必限于一行。

      【讨论】:

        【解决方案5】:

        我知道这是一个老问题,但无论如何这是我的 2ct。 我在/usr/local/bin 中添加我想通过命令行打开的应用程序作为符号链接。

        我从来没有遇到过任何问题,但正如 Ken 所说,这取决于应用程序如何处理参数。

        Visual Studio 示例:

        首先我检查是什么使应用程序开始执行应用程序内容中的文件,例如:

        $ /Applications/Visual\ Studio\ Code.app/Contents/MacOS/Electron

        如果可行,那么我将按如下方式创建符号链接 (ln -s &lt;path-to-app&gt; &lt;path-to-symlink&gt;):

        $ ln -s /Applications/Visual\ Studio\ Code.app/Contents/MacOS/Electron /usr/local/bin/vs

        之后我可以启动 Visual Studio 并将当前文件夹加载为:

        ~/Development/SomeProject $ vs .

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2010-11-21
          • 1970-01-01
          • 1970-01-01
          • 2011-04-11
          • 2012-01-24
          • 1970-01-01
          • 2011-10-08
          相关资源
          最近更新 更多