如何从命令行启动Mac OS X应用程序?

时间:2011-12-05 15:08:49

标签: macos

“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没有打开。< / p>

在打开pptx文件后点击Microsoft Point后,它类似于:/ 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”,目标应用程序可以不能在打开某个文件的情况下运行。

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

谢谢!

5 个答案:

答案 0 :(得分:6)

open -b com.microsoft.PowerPoint <filename>似乎对我来说可以从命令行打开演示文稿。

答案 1 :(得分:5)

转到文件目录,然后键入

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

此处“Microsoft PowerPoint”是电源点应用程序的名称,如果应用程序目录中的电源点名称不同,请检查电源点的名称。

这在我的MAC(OSX 10.8)上完全正常。

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

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

这也很好。

答案 2 :(得分:1)

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

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

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

答案 3 :(得分:1)

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

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

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

答案 4 :(得分:0)

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

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

Visual Studio示例:

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

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

如果这行得通,那么我将按如下所示创建符号链接(ln -s <path-to-app> <path-to-symlink>):

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

在那之后,我可以使用以下内容加载当前文件夹来启动Visual Studio:

~/Development/SomeProject $ vs .