úÎNJ–3      !"#$%&'()*+,-./012>3456789:;<=>? )A helper to catch any exception (same as  ... @ (e :: SomeException) -> ...). &Catch an exception in the ShIO monad. EChange current working directory of ShIO. This does *not* change the I working directory of the process we are running it. Instead, ShIO keeps J track of its own workking directory and builds absolute paths internally C instead of passing down relative paths. This may have performance D repercussions if you are doing hundreds of thousands of filesystem N operations. You will want to handle these issues differently in those cases.  Currently a  renameFile) wrapper. TODO: Support cross-filesystem F move. TODO: Support directory paths in the second parameter, like in cp. ,List directory contents. Does *not* include "." and "..", but it does  include (other) hidden files. 3List directory recursively (like the POSIX utility find). -Obtain the current (ShIO) working directory. IEcho string to standard (error, when using _err variants) output. The _n ( variants do not print a final newline. 8Create a new directory (fails if the directory exists). ECreate a new directory, including parents (succeeds if the directory  already exists). $Get a full path to an executable on PATH, if exists. FIXME does not  respect setenv'd environment and uses PATH inherited from the process  environment. IObtain a (reasonably) canonic file path to a filesystem object. Based on  canonicalizePath in System.FilePath. %A monadic-conditional version of the when guard. 4Does a path point to an existing filesystem object? 'Does a path point to an existing file? ,Does a path point to an existing directory?  Does a path point to a symlink? KA swiss army cannon for removing things. Actually this goes farther than a K normal rm -rf, as it will circumvent permission problems for the files we  own. Use carefully. IRemove a file. Does not fail if the file already is not there. Does fail  if the file is not a file. CSet an environment variable. The environment is maintained in ShIO D internally, and is passed to any external commands to be executed. CFetch the current value of an environment variable. Both empty and 7 non-existent variables give empty string as a result. !HCreate a sub-ShIO in which external command outputs are not echoed. See sub. "DCreate a sub-ShIO in which external command outputs are echoed. See sub. #DEnter a sub-ShIO. The new ShIO inherits the environment and working L directory from the current one, but the sub-ShIO cannot affect the current * one. Exceptions are propagated normally. $IEnter a ShIO from (Monad)IO. The environment and working directories are K inherited from the current process-wide values. Any subsequent changes in G processwide working directory or environment are not reflected in the  running ShIO. AB%An infix shorthand for run. Write "command" # [ "argument" ... ]. &GExecute an external command. Takes the command name (no shell allowed, 0 just a name of something that can be found via PATH; FIXME: setenv'd  PATHC is not taken into account, only the one inherited from the actual . outside environment). Nothing is provided on stdin of the process, and  stdout and stderr are collected and stored. The stdout is returned as  a result of run:, and complete outputs are available after the fact using   lastStdout,  lastStderr and  lastOutput with the last giving an N interleaving of both, approximately reflecting the times of their arrival --  basically what 2>&1 would give you in a shell. '()The output of last external command. See run. )*JRun a ShIO computation and collect timing (TODO: and memory) information. +)Copy a file, or a directory recursively. ,ECopy a file. The second path could be a directory, in which case the 0 original file name is used, in that directory. -CLike filter, but more conveniently used with String lists, where a O substring match (TODO: also provide regexps, and maybe globs) is expressed as  grep "needle" [ "the", "stack", "of", "hay" ] . Boolean  predicates just like with filter are supported too:  grep ("fun"  isPrefixOf) [...]. .(A functor-lifting function composition. /BCreate a temporary directory and pass it as a parameter to a ShIO 1 computation. The directory is nuked afterwards. 0Write a String to a file. 1Append a String to a file. 2$(Strictly) read file into a String. 3  !"#$%&'()*+,-./0123$#!"   ,+201/&%)'(.- * /  !"#$%&'()*+,-./012C     !"#$%&'()*+,-./0123456789:;;<=>?@ABCDEFGHIshellish-0.1.4Shellishbase Data.Functor<$>filepath-1.2.0.0System.FilePath.Posix<.>transformers-0.2.2.0Control.Monad.IO.ClassliftIO RunFailedShIOMemTimecatchanycatch_shcdmvlsfindpwdechoecho_necho_err echo_n_errmkdirmkdir_pwhichcanonicwhenMtest_etest_ftest_dtest_srm_rfrm_fsetenvgetenvsilently verboselysubshellish#run lastStdout lastStderr lastOutputtimecp_rcpgrep<$$> withTmpDir writefile appendfilereadfile PredicateLikematchStsCodesStderrsStdoutsOutput sDirectorysVerbosesRun sEnvironmentgetControl.Exception.Basecatchdrain drainChan