“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”,目标应用程序可以不能在打开某个文件的情况下运行。
我对此感到困惑,所以,有人可以帮助我解决这个问题吗?
谢谢!
答案 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 .