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

119,247

Solution 1

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.

Solution 2

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"

Solution 3

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"

Solution 4

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]')".

Solution 5

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 !!!.

Share:
119,247
DorBB
Author by

DorBB

Silence is golden.

Updated on July 05, 2022

Comments

  • DorBB
    DorBB almost 2 years

    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,...?)

  • kopischke
    kopischke about 12 years
    That will open the HTML file in the default editor or viewer, which is not guaranteed to be the browser. See my answer for a solution that works no matter what.
  • tresf
    tresf almost 9 years
    Very nice solution. What is wrong with simply putting file:/// in front of the path?
  • tresf
    tresf almost 9 years
    The requirement was to use the Default browser, so by specifying Google Chrome, you have failed to meet the requirements.
  • kopischke
    kopischke almost 9 years
    @QZSupport funny you should ask, as that was my first idea when I set out to answer this, but there are two stumbling stones: 1. needs URL encoding to handle things like spaces in file names and 2. doesn’t work for file paths with a network protocol like smb: or afp:.
  • qodeninja
    qodeninja about 5 years
    this was the simplest answer that is also correct, in case anyone stumbles upon this.
  • wim
    wim almost 4 years
    This is already shown in other answers. Please don't add new answers that just repeat the content from other answers again.
  • Vandit Shah
    Vandit Shah almost 4 years
    Honestly I haven't referred any content below. If you felt so I am sorry for that. I am a consistent user of terminal and I already know above commands, so there is no point in copying answers. Hope you are safe and healthy. #StayHomeStaySafe
  • Vandit Shah
    Vandit Shah almost 4 years
    @wim also can you point out who has written the code with a backslash escape ? If there is a question with a narrow scope wrt to scope of knowledge that is going to be used, then they are bound to be similar. The thing that matters is from which answer you understand the most and also which is well formed. Thanks for your opinion :)