How to Launch GUI Applications from the Terminal
Mac OS X, Tips & Tricks, Command Line, How to
We all know how to launch applications from the GUI, there are numerous ways to do it and they’re all relatively speedy. If you spend a decent amount of time with the command line though, it’s nice to be able to launch apps directly. Likewise, the Terminal has its fair share of applications that run in text based mode, but maybe you wanted to edit that text file in the OS X GUI app TextWrangler rather than the text based nano. Here’s how:
The Terminal command to launch OS X gui apps is appropriately called ‘open’ and here is how it works. If you just type ‘open’ at the command prompt, this is what you’ll see:
$ open
Usage: open [-e] [-t] [-f] [-b
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.
It’s usage is self explanatory to those who have experience in the command line environment, but for those who are new to the Terminal, it is easy to use and we’ll explain. For example, if you want to edit /etc/motd with TextWrangler to change your Message of the Day, but you hate the command line editors nano and vi, here is what you’d type:
$ open -a TextWrangler /etc/motd
Now you can edit these files in the familiar GUI. open is smart enough to know that when you apply the -a flag, you are launching an application so you don’t need to type in its full path. Obviously, it’ll still need the full path to the file you’re editing though.
There are many other usages for the open command rather than just editing text files, so use your imagination and get creative. open could be particularly useful to system administrators who utilize it in a shell script, perhaps to launch a specific GUI application at a scheduled time.
Also worth noting is that if you are launching an application with spaces in its name, you’ll want to add a backslash after each word, opening Adobe Photoshop CS would look like this:
$ open -a Adobe\ Photoshop\ CS
So it’s kind of a pain in the butt to type all that out over and over again, right? Well let’s make it easier by assigning an alias to Adobe Photoshop, here’s how with the Mac OS X default Bash shell:
$ nano .profile
or
$ open -e .profile
Ignoring whatever else may be in this file (it could be empty also), add the following to a new line:
alias photoshop="open -a Adobe\ Photoshop\ CS"
This creates an alias, so that the “open -a Adobe\ Photoshop CS” command is now shortened to simply ‘photoshop’. Save .profile, and you’re on your way! You can use the alias command in conjunction with open for virtually anything, just be sure to pick an alias to a command that doesn’t already exist.
Mac Deals from the Apple Store:
Social bookmarks:
- del.icio.us | Digg it | Furl | ma.gnolia | Netscape | reddit | StumbleUpon | Yahoo MyWeb |
Comments:
Comments: 8
Comment from Rich Siegel
Time: February 1, 2007, 6:53 pm
For TextWrangler, just use the “edit” command - if you’ve opted to install the command-line tools, “man edit” will tell you all you need to know. (For BBEdit, it’s “man bbedit”.)
You can also compare from the command line: “twdiff” and “bbdiff”, respectively.
Comment from xmanoel
Time: February 2, 2007, 1:10 am
Woah! Great that finally ‘open’ made it.
I am a huge fan from my very start in OS X. I am a huge fan of command line (and quite able with *NIX environments).
And already on my very first days I discovered the (venerable) ‘open’ program. And It makes my day.
I have several ‘alias’ for opening my favourite applications from the command line….
But it is also very handy to just simply open whatever document with the asociated application:
> open *.jpg
I just love it.
Pingback from Solving VNC Issues on OS X Remotely
Time: May 15, 2007, 9:36 pm
[…] Simply, you fire up an SSH terminal (I used PuTTY) and start typing poking around. But Hagus.net already had part of the answer: using Apple Remote Desktop’s kickstart command to directly issue commands to a GUI app from the terminal. Cool! So I ran kickstart with the –help parameter, and a nice and long man page comes up… In this case, I decided to stop and deactivate Remote Desktop (for subsequent reboots) by using the following command: […]
Comment from Bill Thompson
Time: August 26, 2007, 6:29 pm
i’m not clear on the destination directory to which .profile should be Saved in the ‘open’ example (the file wasn’t present on my Tiger box.)
would love to leverage this (& recognize I’m revealing my *nix noob status) but that bit seems important.
tia,
bt
Comment from dm_spire
Time: October 26, 2007, 3:10 pm
The .profile file goes in your home directory, on OS X that would be
/Users/
Pingback from bloggins:blog » how to launch a GUI app from Terminal in OS X
Time: February 28, 2008, 11:38 am
[…] http://osxdaily.com/2007/02/01/how-to-launch-gui-applications-from-the-terminal/ […]
Pingback from http://osxdaily.com/2007/02/01/how-to-launch-gui-applications-from-the-terminal/
Time: March 16, 2008, 1:28 pm
[…] http://osxdaily.com/2007/02/01/how-to-launch-gui-applications-from-the-terminal/ […]
Pingback from iPlat » How to Launch External Files with Java on Mac OS
Time: April 30, 2008, 8:46 am
[…] I was trying the other day to figure out how on earth I could launch some log files using Java. I could easily find the relevant information on Google about Windows but there wasn’t any article saying how to achieve this on Mac OS. So after a lot of search I realized that this could be done using Terminal commands. If you are not familiar with the “Mac DOS” take a look here to understand Terminal in a nutshell. Here is an example about how to launch a log file with TextEdit: […]


Write a comment