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

7
"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未打开。
在使用grep搜索已打开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
您认为文件名作为参数传递给PowerPoint可执行文件的原因是什么? - mouviciel
因为其他应用程序可以通过这种方式启动。/Applications/Preview.app/Contents/MacOS/Preview /Users/User/Desktop/t.tiff 例如。而我是Windows用户,Microsoft Office for Windows也可以从cmd启动。 - yodaFirst Name Lulu
5个回答

10

前往文件目录,然后输入以下命令:

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

这里的 "Microsoft PowerPoint" 是幻灯片应用程序的名称,请检查您的应用程序目录中是否有不同的幻灯片名称。

在我的 MAC(OSX 10.8)上运行得非常完美。

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

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

这也是正常工作的。


确认 open -a "Microsoft Word" <filename.docx> 也可以工作。 - Lincoln Bergeson

8

open -b com.microsoft.PowerPoint <filename> 看起来对于我来说可以通过命令行打开演示文稿。


2
我知道这是一个古老的问题,但这里仍然有我的意见。我通过命令行在 /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 .

1
如果 PowerPoint 无法打开作为命令行参数传递的文档,则这反映了 PowerPoint 的编码方式。除 Microsoft 外,没有人能做任何事情。
操作系统通常不使用该技术来告诉应用程序打开文档。相反,它将 Apple 事件传递给应用程序。Cocoa 默认情况下接受命令行参数并将其类似于此类 Apple 事件处理,但显然 PowerPoint 覆盖了该默认行为。
如果您想调试或跟踪 PowerPoint,则建议您分两步进行。首先,在调试器或跟踪程序下不使用参数启动它。然后,告诉它打开一个文档。您可以使用 Finder 和/或 Dock 正常方式执行此操作,也可以使用 open -a ...。这样的请求打开文档不会启动第二个 PowerPoint 实例,而是将事件传递给您正在调试/跟踪的已运行 PowerPoint。因此,结果应与您所需的类似。

1

不确定这是否能帮到您(取决于您想如何进行调试),但您可以从命令行使用AppleScript,像这样:

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接