simple-cmd: Simple String-based process commands

[ bsd3, library, system ] [ Propose Tags ]

Simple wrappers over System.Process (readProcess, readProcessWithExitCode, rawSystem, and createProcess). The idea is to provide some common idioms for calling out to commands from programs. For more advanced shell-scripting or streaming use turtle, shelly, shake, etc.

[Skip to Readme]


Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees


Versions [RSS], 0.1.1, 0.1.2, 0.1.3,, 0.1.4, 0.2.0,, 0.2.1, 0.2.2, 0.2.3, 0.2.4, 0.2.5, 0.2.6, 0.2.7
Change log
Dependencies base (<5), directory (>=, extra, filepath, process (>=, time, unix [details]
License BSD-3-Clause
Copyright 2017-2022 Jens Petersen <>
Author Jens Petersen <>
Maintainer Jens Petersen <>
Category System
Home page
Bug tracker
Source repo head: git clone
Uploaded by JensPetersen at 2022-06-20T15:32:15Z
Distributions Fedora:0.2.7, LTSHaskell:0.2.7, NixOS:0.2.7, Stackage:0.2.7
Reverse Dependencies 2 direct, 1 indirect [details]
Downloads 6414 total (63 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs available [build log]
Last success reported on 2022-06-20 [all 1 reports]

Readme for simple-cmd-0.2.7

[back to package description]

Hackage Stackage LTS Stackage Nightly


Some simple String wrappers of readProcess, readProcessWithExitCode, rawSystem from the Haskell process library.


import SimpleCmd
cmd_ :: String -> [String] -> IO ()

outputs to stdout. For example

cmd_ "echo" ["Hello"]
cmd_ "git" ["clone", url]

This can shortened to git_ "clone" [url].

cmd :: String -> [String] -> IO String

returns stdout as a String. eg

date <- cmd "date" []

There are also cmdBool, cmdMaybe, cmdList, shell, and others.

Simple pipes are also supported:

pipe_ ("echo",["hello"]) ("grep",["ello"])

pipeBool returns True if both commands succeed.

Other examples:

gitBranch :: IO String
grep_ pat file :: IO Bool
sudo_ c args :: IO ()
timeIO :: IO a -> IO a

See the library documentation for more details.