shell-escape-0.1.2: Shell escaping library.

Safe HaskellNone



Typed shell escaping for Bourne Shell and Bash.



class Escape t whereSource

A type class for objects that represent an intermediate state of escaping.


escape :: ByteString -> tSource

Transform a ByteString into the escaped intermediate form.

unescape :: t -> ByteStringSource

Recover the original ByteString.

bytes :: t -> ByteStringSource

Yield the escaped ByteString.

data Sh Source

A Bourne Shell escaped ByteString. An oddity of Bourne shell escaping is the absence of escape codes for newline and other ASCII control characters. These bytes are simply placed literally in single quotes; the effect is that a Bourne Shell escaped string may cover several lines and contain non-ASCII bytes. Runs of bytes that must be escaped are wrapped in '...'; bytes that are acceptable as literals in Bourne Shell are left as is.


sh :: ByteString -> ShSource

Construct a Bourne Shell escaped intermediate form.

data Bash Source

A Bash escaped ByteString. The strings are wrapped in $'...' if any bytes within them must be escaped; otherwise, they are left as is. Newlines and other control characters are represented as ANSI escape sequences. High bytes are represented as hex codes. Thus Bash escaped strings will always fit on one line and never contain non-ASCII bytes.


bash :: ByteString -> BashSource

Construct a Bash escaped intermediate form.