Skip to content

Embed URL

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
pipe html to a browser
#!/bin/sh -e
#
# Usage: browser
# pipe html to a browser
# e.g.
# $ echo '<h1>hi mom!</h1>' | browser
# $ ron -5 man/rip.5.ron | browser
if [ -t 0 ]; then
if [ -n "$1" ]; then
open $1
else
cat <<usage
Usage: browser
pipe html to a browser
$ echo '<h1>hi mom!</h1>' | browser
$ ron -5 man/rip.5.ron | browser
usage
fi
else
f="/tmp/browser.$RANDOM.html"
cat /dev/stdin > $f
open $f
fi
@kennethreitz

Installation:

brew install browser

Or, if you must:

 sudo curl https://gist.github.com/raw/318247/browser -o /usr/local/bin/browser
 sudo chmod +x /usr/local/bin/browser
@jocap

Just in case anyone can't figure this out:
TextMate command:
cat $TM_FILE | /usr/local/bin/browser

@rleber

Small point, but "...hi mom!..." should be '...hi mom!...' in the usage example in the comments. Strong quoting is needed to avoid the dreaded "bash: !: event not found" error.

@secondplanet

/Users/humza/homebrew/bin/browser: line 2: syntax error near unexpected token '<'
'Users/humza/homebrew/bin/browser: line 2: '301 Moved Permanently' I get this for some reason

@codeinthehole

The URL for installation should be https:

sudo curl https://gist.github.com/raw/318247/browser -o /usr/local/bin/browser
sudo chmod +x /usr/local/bin/browser
@ghost
Unknown commented

or with zsh, it is
open =(echo '<h1>zsh rulez!</h1>')

=(foo) takes the output of foo, writes it into a file in /tmp and returns the files path.

@Ps0ke

In bash you can do <(foo) to achieve the same as zsh's =(foo). But it doesn't work with the open(1) utility for me. How should it figure out the file type anyway?

@Zeokat

Zeokat usefull piece of code.

@geoff-codes

Try

:; I="$(basename $0)"; [ -z $BROWSER ] && open=open || open=$BROWSER

[ $# -eq 0 ] && set -- -; [ "$1" = "-" ] && [ -t 0 ] &&
  echo "Usage: [ COMMAND | $I ] | [ $I < FILE ] | [ $I FILE ... ]" >&2 && exit

for what; do where="/tmp/$(od -N2 < /dev/urandom | openssl dgst -sha1).html"
  cat "$what" > "$where" && $open "$where"; sleep 1 && rm -f "$where" & done

Some advantages:

  • Respect $BROWSER. Can be BROWSER=lynx, BROWSER='open -a Firefox', etc.
  • No bashisms ($RANDOM) or zsh-isms (=(...)).
  • Correctly handles arguments that do not end in .html.
  • Correctly handles multiple arguments and shell globs.
  • Cleans up after itself.
  • Doesn't even need a shebang!

Or, you might prefer what I use: avoid leaving your terminal at all, and:

cat "$what" > "$where" && qlmanage -p "$where" >/dev/null 2>&1; sleep 1 ...
@Boldewyn

To show Markdown files in browsers, I found a way without temporary files: https://gist.github.com/Boldewyn/4311962

It uses data: URIs for fun and profit:

x-www-browser $(base64 -w0 | cat <(echo -n 'data:text/html;base64,') -)
#  ^--- Debian link to default browser
#               ^---- base64 slurps stdin as default
#                            ^--- concat the "data:" header, then the content
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.