我正在关注关于如何从命令行打开 Jetbrains IDE 的教程,命令是:
open -na {app_name} --args --line {line_number} {file_path}
所以这个命令效果很好,但是从教程和
open --help
我看到-n
选项意味着
打开应用程序的新实例,即使该实例已经在运行。
这不是我想要的。在这种特定情况下,这并不是什么大问题,因为看起来只有一个 Jetbrains IDE 实例可以存在,因此它将尝试打开一个实例并重定向到正在运行的实例(我可以看到一个新图标在 Dock 中弹出,然后它切换到现有的)。
但是,如果我不传递
-n
选项,它将打开已经运行的应用程序,但看起来参数被忽略。 (我知道我仍然可以使用 open -na {app_name} {file_path}
传递文件路径,但我需要行号焦点)。除非应用程序尚未运行,在这种情况下它与-na
完全相同。
起初我以为这是 Jetbrains 的问题,但我尝试了其他应用程序(例如 Google Chrome 和 Safari),它似乎来自
open
命令本身。
这是一个错误还是预期的?
-n
选项的描述没有提及参数。是因为应用程序仅在启动新实例时才读取参数吗?
这是预期行为,因为
--args
在启动期间传递给应用程序。osascript -e 'tell application "appname" to if it is running then quit'
然后
open -a
带有 --args
的应用程序,没有 -n