DorBB
DorBB

Reputation: 891

Open an .html file with default browser using Bash on Mac

So, this is what I need :

Let's say I have an index.html file.

How do I tell the terminal to open it using the default browser?

(Using AppleScript, BASH,...?)

Upvotes: 89

Views: 165853

Answers (10)

Robert Kniazidis
Robert Kniazidis

Reputation: 1878

AsObjC soluition:

use AppleScript version "2.4" -- Yosemite (10.10) or later
use framework "Foundation"
use scripting additions

set theHTML to (choose file of type "public.html") as text

set defaultBrowserID to getDefaultBrowserID()
tell application id defaultBrowserID to open theHTML

on getDefaultBrowserID()
    set sharedWorkspace to (current application's NSWorkspace)'s sharedWorkspace()
    set urlNSString to (current application's NSString)'s stringWithString:"http://"
    set testURL to (current application's |NSURL|)'s URLWithString:urlNSString
    set theURL to sharedWorkspace's URLForApplicationToOpenURL:testURL
    set defaultBrowserID to id of application (theURL's |path|() as string)
end getDefaultBrowserID

Shell implementation:

osascript -e "use AppleScript version \"2.4\" -- Yosemite (10.10) or later
use framework \"Foundation\"
use scripting additions

set theHTML to (choose file of type \"public.html\") as text

set defaultBrowserID to getDefaultBrowserID()
tell application id defaultBrowserID to open theHTML

on getDefaultBrowserID()
    set sharedWorkspace to (current application's NSWorkspace)'s sharedWorkspace()
    set urlNSString to (current application's NSString)'s stringWithString:\"http://\"
    set testURL to (current application's |NSURL|)'s URLWithString:urlNSString
    set theURL to sharedWorkspace's URLForApplicationToOpenURL:testURL
    set defaultBrowserID to id of application (theURL's |path|() as string)
end getDefaultBrowserID
"

Upvotes: 0

Shelvacu
Shelvacu

Reputation: 4362

Install defaultbrowser with homebrew:

brew install defaultbrowser

And then use defaultbrowser to get the correct binary name, eg:

"$(defaultbrowser | grep '*' | awk '{ print $2 }')" https://google.com

Upvotes: 0

milahu
milahu

Reputation: 3549

this works on linux, should also work on mac

#!/bin/sh

# open a html file in default browser, not text editor,
# when text editor is set as default app for html files

url=file:///path/to/file.html

protocol=http

app=$(xdg-mime query default x-scheme-handler/$protocol)
# example: chromium-browser.desktop

[ -z "$app" ] && {
  echo "error: xdg-mime could not find default app for protocol $protocol"
  exit 1
}

app=$(basename $app .desktop)

gtk-launch $app "$url"

ideally i could just say

xdg-open http+file:///path/to/file.html

but this is not working

Upvotes: -1

Vandit Shah
Vandit Shah

Reputation: 140

To open the filename.html in the default browser use :

open filename.html

open is a very good command as well as a feature of Mac OS that makes me fall in love with it more deeper. It automatically chooses the appropriate default app to open the file.

And in case you want to open a file in your desired app rather then default :

open -a /Applications/Google\ Chrome.app filename.html

The backslash \ after Google is used to escape the space character.

Alternatively you can write :

open -a "/Applications/Google Chrome.app" filename.html

Hope this helps you ( I know I am very late ) and others !!!.

Upvotes: 9

Zabe Sangary
Zabe Sangary

Reputation: 61

In terminal you can run open index.html

Upvotes: 4

Nameless477
Nameless477

Reputation: 51

i managed to open the html file with chrome by placing the file after the browser command. so,

google-chrome-stable ./index.html

although im not sure what the call would be to the default browser, if you knew it you could put it as an alias in your .bashrc and from then on, use whatever you called your alias, plus the file.

goo ./index.html

just my experience, first response

Upvotes: 4

moomark
moomark

Reputation: 359

You can use the open command with the -a flag to open a file or location in Chrome (or any target application):

open -a "Google Chrome" index.html

This also works with URLs, i.e. open -a "Google Chrome" http://www.apple.com.

---> I found this answer @ stack exchange, thanks to user "robmathers"

Upvotes: 35

Lri
Lri

Reputation: 27613

You can also get the default browser with Perl: open http://example.com -a "$(VERSIONER_PERL_PREFER_32_BIT=true perl -MMac::InternetConfig -le 'print +(GetICHelper "http")[1]')".

Upvotes: 4

kopischke
kopischke

Reputation: 3413

Actually, this is not quite as straightforward as it looks. As suggested by the other answers, OS X provides the open utility to launch applications matching a file type from the shell. However, in the case of a HTML file, that is the application registered with Launch Services for the file type public.html, which can, but need not be, your default browser (I think it is on a pristine install) – or whatever editor registers as able to edit HTML (not an uncommon occurrence on a dev system). And while the default browser is registered for the URL protocol http no matter what, there is no way to access that protocol handler to open a file with open.

To compound the issue, although the handlers are stored in the com.apple.LaunchServices.plist preferences accessible via the defaults command, the structure of the information (a dictionary with two same level entries, one denoting the protocol, one the handler) makes it non-trivial to parse with defaults.

The good news is somebody already solved that problem: HAMsoft Engineering offers the DefaultApplication shell utility. Download it and save it somewhere where it is accessible to the shell (typically /usr/local/bin, although that is not in the default path for shells on some OS X versions – check the contents of /etc/paths to be sure). That available, the following command will open a HTML file in the default browser, whatever editor / viewer might be registered otherwise:

open -a "$(/usr/local/bin/DefaultApplication -url 'http:')" "/path/to/your/document.html"

Upvotes: 22

kevlarkevin
kevlarkevin

Reputation: 1281

from the directory containing index.html, try...

open ./index.html

the open command opens a file (or directory, or URL). open is included with MacOSx. specifics and options can be found using

man open

note: default application is determined via LaunchServices.

Upvotes: 114

Related Questions