有没有办法在Mac OS X终端中启动GUI应用程序时将其带到前台?如果我运行以下命令:
/Applications/TextEdit.app/Contents/MacOS/TextEdit
在终端中,TextEdit会在后台打开。如果你正在开发GUI应用程序并使用“make && ./run”,这会非常烦人。
> open -a TextEdit
至少对于TextEdit和类似的GUI应用程序,open
命令可行:
> open /Applications/TextEdit.app
open
命令,但没有意识到我也可以打开整个包。如果你使用 open /Applications/TextEdit.app/Contents/MacOS/TextEdit
命令,会启动一个新的终端窗口,并将程序放到后台运行。 - jnsgopen
。这是有趣的行为。不过这很有道理:如果你从Finder中打开一个可执行文件,它将在终端中运行。 - Chris Pageopen
或其他命令,使应用程序进入前台且在应用程序启动后不退出? - Spencer Williamsopen(1)
。这有两个限制,在您的用例中可能很重要:
open
作为分离的进程运行应用程序包open
不会将标准I/O管道返回到您的脚本/ shell为了解决这些问题:
open
采用-W
选项,以等待应用程序退出的打开方式open
采用--stdout
和--stderr
选项,您可以将它们管道连接到您的shell(或脚本)TTY。例如:
open -W --stdout $(tty) --stderr $(tty) <path/to/Bundle.app>
我在这里写了更多关于这个的内容:https://www.jviotti.com/2022/11/28/launching-macos-applications-from-the-command-line.html
open "$(mdfind Minecraft.app | grep Minecraft.app | tail -1)"
- Bruno Bronosky