Friday, June 8, 2012

Linux equivalent of the Mac OS X "open' command

I've found the "open" command in Mac OS X very handy in the command line. From "man open":

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 application as determined via LaunchServices is used to open the specified files.

That is, if I want to open a PDF file with the default PDF viewer (happens to be Preview), I only need to do:

open my.pdf

In Linux, however, to open a PDF file from the command line, I had to dig around to find the default PDF viewer is, for instance, "evince" (who'd have guessed??), and then

evince my.pdf

So, is there a simple equivalent of the 'open' command in the Linux command line?


Source: Tips4all


  1. You could try xdg-open, most Linux distros have it. It will open default associated app for your file.


  2. The equivalent you are looking for is xdg-open, which can be used in the same way as OS X's open command. For example:

    xdg-open ~/Documents/Chubby_Bubbies.odt

    However, this is really hard to type quickly and accurately. Instead, you should make an alias to xdg-open, which makes the process much quicker.

    Of course, you can alias it to open to make it match OS X (you can pick anything you want), but personally, I use the right square bracket (]) for my shortcut for speed reasons. To use this, add the following to your .bashrc file:

    alias ']'='xdg-open'

    Then, to open any resource, use it like any of these examples:

    ] file.txt
    ] ~/Pictures
    ] ssh://myserver.local/home/jeremy

    Also this lets you open a file browser (e.g. Nautilus) in the current directory:

    ] .

    From experience I have found that one-letter aliases work best for the above shortcut. After all, the goal is efficiency. And you can go back and make the same alias on OS X — I leave that as an exercise to the reader. :-)

  3. Traditionally, you can use the "see" command. Which just uses run-mailcap. This will work without Gnome and X etc.

    man see

  4. I just sorted this out myself so thought I would write down how I did it, which is specifically relevant to what Suan asked.
    These steps allow you just type "open " and not your terminal covered in messages you don't need:

    Create a script in your /home/username/bin folder called open, the contents is just:

    xdg-open $1 &> /dev/null &

    Save and close, then type "source .profile" (or .bash_profile if relevant).
    Thats it so typing "open Music" will open your music folder in the nautilus GUI and shouldn't enter anything onto your terminal.