如何从终端启动 GUI 应用程序

终端

我们将演示如何从 MacOS X 的命令行启动任何图形化 Mac 应用程序,包括如何使用 GUI 应用程序从命令行打开特定文件,以及如何使用根访问权限编辑和打开这些文件如果有必要的话。

从命令行打开 Mac OS X 应用程序

启动 MacOS gui 应用程序的终端命令被恰当地称为“打开”,这是它最简单的工作方式:

open -a ApplicationName

这将打开名为“ApplicationName”的已定义应用。

但 open 比这更强大。如果您只是在命令提示符下键入“open”,您将返回基本帮助文件,其中包含有关如何使用各种标志和语法正确使用该命令的详细信息。

虽然打开命令存在于所有版本的 Mac OS X 中,但其功能会有所不同,具体取决于 Mac 运行的 MacOS/Mac OS X 版本。尽管如此,在现代版本中,您将看到以下内容:

$ open
Usage: open [-e] [-t] [-f] [-W] [-R] [-n] [-g] [-h] [-b ] [-a ] [filenames] [--args arguments]
Help: Open opens files from a shell.
By default, opens each file using the default application for that file.
If the file is in the form of a URL, the file will be opened as a URL.
Options:
-a Opens with the specified application.
-b Opens with the specified application bundle identifier.
-e Opens with TextEdit.
-t Opens with default text editor.
-f Reads input from standard input and opens with TextEdit.
-F --fresh Launches the app fresh, that is, without restoring windows. Saved persistent state is lost, excluding Untitled documents.
-R, --reveal Selects in the Finder instead of opening.
-W, --wait-apps Blocks until the used applications are closed (even if they were already running).
--args All remaining arguments are passed in argv to the application's main() function instead of opened.
-n, --new Open a new instance of the application even if one is already running.
-j, --hide Launches the app hidden.
-g, --background Does not bring the application to the foreground.
-h, --header Searches header file locations for headers matching the given filenames, and opens them.

换句话说,示例简单的命令语法可能如下所示,使用位于路径“/file/to/open”的文件打开“ApplicationName”:

open -a ApplicationName /file/to/open

您会注意到您不需要应用程序名称的完整路径,但您需要文件名的完整路径。

对于那些在命令行环境中有经验的人来说,用法很可能是不言自明的,但是对于终端的新手来说,不要太困惑,它很容易使用,我们会解释。例如,如果您想使用 TextWrangler 编辑 /etc/motd 以更改您的每日消息,但您讨厌命令行编辑器 nano 和 vi,请输入以下内容:

$ open -a TextWrangler /etc/motd

现在您可以在熟悉的 GUI 中编辑这些文件。 open 足够聪明,知道当你应用 -a 标志时,你正在启动一个应用程序,所以你不需要输入它的完整路径。显然,它仍然需要您正在编辑的文件的完整路径。

除了编辑文本文件之外,打开命令还有许多其他用途,所以请发挥您的想象力并发挥创意。 open 对于在 shell 脚本中使用它的系统管理员可能特别有用,也许可以在预定时间启动特定的 GUI 应用程序。

另外值得注意的是,如果您启动的应用程序名称中有空格,您需要在每个单词后添加一个反斜杠,打开 Adob​​e Photoshop CS 将如下所示:

$ open -a Adob​​e Photoshop CS

从命令行以 root 身份启动 GUI 应用程序

如果您需要以 root 身份编辑文件,您甚至可以使用 open 命令使用 sudo 打开文件,例如:

sudo open -a TextEdit /tmp/magicfile

这将以 root 用户身份将目标文件启动到所需的应用程序中,给予完全的 root 权限来编辑和修改文件,这对于编辑许多系统文件非常有帮助。当然,如果您不知道自己在做什么,请不要修改任何系统文件。

为频繁启动的 GUI 应用程序创建 Shell 别名

因此,重复输入完整的命令或一遍又一遍地输入所有命令是一件很痛苦的事情,对吧?好吧,让我们通过为经常启动的应用程序分配别名来简化它。我们将以前面提到的 Adob​​e Photoshop 应用程序为例,因为文件名很长,因此我们将使用 Mac OS X 默认 Bash shell 执行此操作:

首先将配置文件或 .bash_profile 启动到文本编辑器中:

$ nano.profile

$ open -e .profile

忽略此文件中的任何其他内容(它也可能为空),将以下内容添加到新行:

alias photoshop="open -a Adob​​e Photoshop CS"

这会创建一个别名,因此“open -a Adob​​e Photoshop CS”命令现在缩写为“photoshop”。保存 .profile,您就上路了!您几乎可以将 alias 命令与 open 结合用于任何操作,只需确保为尚不存在的命令选择一个别名即可。

如您所见,打开命令非常方便,如果您在 Mac OS X 中对它有任何其他重要用途,请务必在评论中告诉我们。