Is there an "open with" command for the command line?
There isn't a command that I've ever seen that will act as "open with..." but you can use the command xdg-open <file>
to open a given <file>
in the application that's associated with that particular type of file.
Examples
Opening a text file:
$ xdg-open tstfile.txt
$
Resulting in the file tstfile.txt
being opened in gedit
:
Opening a LibreOffice Writer document:
$ xdg-open tstfile.odt
$
Resulting in the file tstfile.odt
being opened in Writer:
What apps get used?
You can use xdg-mime
to query the system to find out what applications are associated to a given file type.
$ xdg-mime query default $(xdg-mime query filetype tstfile.txt)
gedit.desktop calibre-ebook-viewer.desktop
$ xdg-mime query default $(xdg-mime query filetype tstfile.odt)
libreoffice-writer.desktop calibre-ebook-viewer.desktop
This is a 2 step operation. First I'm querying for the mime-type of a given file, xdg-mime query filetype tstfile.txt
, which will return text/plain
. This is then used to perform another lookup to find out the list of applications that are associated with this mime-type. As you can see above I have 2 apps associated, gedit
and calibre
, for .txt
files.
You can use xdg-mime
to change the associations too. See man xdg-mime
for more details.
Sort of, but it will change your default application as a result. I'm not sure what other operating systems this works on, but the instructions below work for Ubuntu 12.04 - Desktop X86-64. I didn't have any pdf files handy so I tested with a .zip archive.
General Steps
Step #1In a terminal type:
$ mimeopen -d /home/username/example.zip
screenshot #1 = https://copy.com/qfWSZaZ4FzlA
Step #2
Choose from the list by entering the #
of the application you want, and pressing enter. The file will immediately open in the application you chose.
screenshot #3 = https://copy.com/ytwKCqR6nv8i
Notes
Note #1This changes the default application to the one you choose, and so any time you open that file type it will now open in whatever application you last chose from the list.
If you mostly work on the command line, you could look at a curses-based file manager, like ranger or vifm. Both allow you to define default actions for filetypes.
In vifm, for example, in ~/.vifm/vifmrc
you can define associations like so:
" Images
filetype *.jpg,*.jpeg,*.gif,*.tif,*.png,*.bmp sxiv
" Media
filetype *.flv,*.avi,*.mp4,*.mpeg,*.mpg,*.mov,*.ogg,*.ogv,*.mkv mpv
" Web
filetype *.html,*.htm,*.shtml /home/jason/Scripts/vimprobtab.sh
" PDF
filetype *.pdf apvlv
Hitting Enter whith the cursor on any file with one of the defined actions will see it opened by the relevant application. As you can see in the case of .html
files, you can trigger a script as well as an application.