Fun With the 'open' Command
By user12611203 on Oct 13, 2009
In MacOS (I'm running 10.5), the
open command is one of those little tools that keeps giving and giving. Sure, it seems simple enough. From the man page:
The open command opens a file (or a directory or URL), just as if you had double- clicked the file's icon. If no application name is specified, the default applica- tion as determined via LaunchServices is used to open the specified files.
But I've discovered I use it more and more while I work. In case you haven't thought of all these already, here are some of the things you can do with
open besides the very obvious use opening URLs.
Open windows in Finder that Mac won't let you get to normally:
For instance, if you want to open a Finder window to see your original photos under ~/Pictures, it's simply (am using autocompletion to escape the spaces in the path):
open ~/Pictures/iPhoto\\ Library/Originals/Trying to click through this in Finder normally will just bring up iPhoto. Generally, that's the correct behavior, but some of us really want the ability to mess things up manually.
Open compressed archives simply:
This one is nice during development. I work on the GlassFish application server, and often hack it all up and need to reset my installation back to some known snapshot. After installing and doing whatever configuration I need, I can tar/gzip the whole thing up into an archive. Then when I need to "reinstall," it's as simple as:
rm -rf glassfishv3 && open gf3.tar.gzSure, that's not much less typing than unzipping and piping the result to tar, but it's short enough that I don't need to think about it.
Edit text files quickly:
Some file types are, by default, opened with heavyweight apps. Opening an xml file, for instance, brings up OpenOffice on my system. The '-e' flag to
open will instead bring whatever file you specify up in TextEdit:
open -e domain.xmlI'm just as likely to use emacs in this case, but sometimes I want to have that text editor open for a while and not taking up one of my terminal windows (so I don't lose it in the cmd-1, cmd-2, cmd-n shuffle). You can also use the -a flag to specify a particular app, which can also be a modest time saver. Just let autocompletion do the path work for you.
Pipe process output to a text editor:
This is a little time saver when you'd normally pipe output to a file and then open that file for editing.
svn diff | open -f
Find out when a job is done:
On my Solaris machines, I used to have an alias that would print ctrl-g characters (beeps). So I could start a process and have the terminal beep at me when the process was done. iTunes makes this much more fun. Before you try setting an alias (or adding to a script), do the whole
open command by itself to let MacOS handle all the escaped characters for you. Then cut and paste, as in:
alias go="open -g ~/Music/iTunes/iTunes\\ Music/Israel\\ Kamakawiwo\\'ole/Ka\\ \\'Ano\\'i/03\\ Kainoa.mp3"Then I can run some long process like mvn -u install && go and the music starts when it's done. The '-g' flag in the open command keeps the application in the background.