我想从脚本中启动OSX上的应用程序.我需要传递命令行参数.不幸的是,open不接受命令行参数.
我能想到的唯一选择是使用nohup myApp > /dev/null &启动我的应用程序,使其可以独立于启动它的脚本而存在.
有更好的建议吗?
Ned*_*ily 73
在OS X 10.6中,该open命令已得到增强,允许将参数传递给应用程序:
open ./AppName.app --args -AppCommandLineArg
Run Code Online (Sandbox Code Playgroud)
但对于旧版本的Mac OS X的,因为应用程序包不是用来传递命令行参数,传统的方法是使用苹果活动的文件,就像在这里为Cocoa程序或在这里为Carbon程序.你也可以通过在使用环境变量中传递参数来做一些事情.
NSS*_*Sec 32
应用程序包(.app文件)实际上是一堆目录.您可以实际移入它并启动实际的二进制文件,而不是使用open和.app名称.例如:
$ cd /Applications/LittleSnapper.app/
$ ls
Contents
$ cd Contents/MacOS/
$ ./LittleSnapper
Run Code Online (Sandbox Code Playgroud)
这是可能接受参数的实际二进制文件(或者不是,在LittleSnapper这种情况下).
小智 19
您可以使用以下方式启动应用程序open:
open -a APP_YOU_WANT
Run Code Online (Sandbox Code Playgroud)
这应该会打开您想要的应用程序。
小智 14
如果您的应用需要处理文件(您通常希望传递的内容为:)./myApp *.jpg,您可以这样做:
open *.jpg -a myApp
Run Code Online (Sandbox Code Playgroud)
open还有一个 -a 标志,您可以使用它通过应用程序名称(或通过带有 -b 标志的包标识符)从应用程序文件夹中打开应用程序。您可以将其与 --args 选项结合起来以获得您想要的结果:
open -a APP_NAME --args ARGS
Run Code Online (Sandbox Code Playgroud)
要在 VLC 播放器中打开一个应以 2 倍缩放并循环播放的视频,您可以执行以下命令:
open -a VLC --args -L --fullscreen
Run Code Online (Sandbox Code Playgroud)
请注意,我无法将命令的输出发送到终端。(虽然我没有尝试任何方法来解决这个问题)
| 归档时间: |
|
| 查看次数: |
138862 次 |
| 最近记录: |