Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 如何从命令行启动Mac OS X应用程序?_Macos - Fatal编程技术网

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

Macos 如何从命令行启动Mac OS X应用程序?,macos,Macos,“open-a”不是我想要的答案,因为我想自动调试MacOSX应用程序。这意味着如果有人能给出类似[program][args]格式的命令行,效果会更好。因此,ltrace机制可以将[program]作为调试目标,并将[args]作为输入 我尝试过命令行,如“/Applications/Microsoft Office 2011/Microsoft PowerPoint.app/Contents/MacOS/Microsoft PowerPoint”/Users/poc.pptx,只有Micro

“open-a”不是我想要的答案,因为我想自动调试MacOSX应用程序。这意味着如果有人能给出类似[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变灰后,类似于:/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”,目标应用程序无法在打开特定文件的情况下运行

我对此感到困惑,那么,有没有人能帮我解决这个问题


谢谢大家!

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

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

%osascript
打开-b com.microsoft.PowerPoint
似乎可以从命令行打开演示文稿。

转到文件目录,然后键入

open -a "Microsoft PowerPoint" <filename.ppt>
打开-一个“Microsoft PowerPoint”
此处“Microsoft PowerPoint”是power point应用程序的名称,请检查power point的名称是否与您的应用程序目录中的名称不同

这在我的MAC(OSX 10.8)上运行得非常好

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

    open -a "Microsoft PowerPoint" <ppt file path>
打开-一个“Microsoft PowerPoint”

这也可以正常工作。

如果PowerPoint没有打开作为命令行参数传递的文档,则这反映了PowerPoint的编码方式。除了微软,其他任何人都无能为力

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


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

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

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

Visual Studio示例:

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

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

如果这样做有效,那么我创建符号链接如下(
ln-s
):

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

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


~/Development/SomeProject$vs.

什么让你相信文件名是作为参数传递给powerpoint可执行文件的?因为其他应用程序可以通过这种方式启动/Applications/Preview.app/Contents/MacOS/Preview/Users/User/Desktop/t.tiff例如,我是windows用户,Microsoft Office for windows也可以从cmd.confirm
open启动-一个“Microsoft Word”
也可以工作