Welcome to HSH

HSH is designed to let you mix and match shell expressions with Haskell programs. With HSH, it is possible to easily run shell commands, capture their output or provide their input, and pipe them to/from other shell commands and arbitrary Haskell functions at will.

Here are a few examples to get you started:

run $ "echo /etc/pass*" :: IO String
 -> "/etc/passwd /etc/passwd-" 

runIO $ "ls -l" -|- "wc -l" 
 -> 12

runIO $ "ls -l" -|- wcL
 -> 12

runIO $ ("ls", ["-l", "file with spaces.txt"])
glob "~jgoerzen" >>= cd . head

wcL is a pure Haskell function defined in HSH.ShellEquivs.wcL

More examples at Examples.

Starting Points

Using This Site:

Downloads: Source and Binaries

  • Source releases are available from the downloads area on this site; just click the Files tab above.
  • The latest development trees are available via Git; see below.
  • You can find Debian packages from the HSH Debian Page.
  • RPMs and packages for many other Linux and BSD distributions are also included with your distribution.

Contributing to HSH

You can always download the source from the Downloads page and attach diffs. But it's far better, both for you and for me, if you use Git.

Please see our 5-Minute Git Guide. You can check out the HSH repository with:

git clone git://git.complete.org/hsh

You can also help by adding information to this wiki.

Mailing List

I encourage the use of the haskell-cafe mailing list for questions and discussions about HSH. Gmane has made available excellent archives of this list as well.

Forums / Discussion Boards

They're available and hosted right here on this site. Just click on the Forums tab above.

Also available in: HTML TXT