HSH-1.2.4: Library to mix shell scripting with Haskell programsContentsIndex
HSH.ShellEquivs
Portabilityportable
Stabilityprovisional
MaintainerJohn Goerzen <jgoerzen@complete.org>
Description

Copyright (c) 2006-2007 John Goerzen, jgoerzen@complete.org

This module provides shell-like commands. Most, but not all, are designed to be used directly as part of a HSH pipeline. All may be used outside HSH entirely as well.

Synopsis
abspath :: FilePath -> IO FilePath
appendTo :: FilePath -> String -> IO String
basename :: FilePath -> FilePath
bracketCD :: FilePath -> IO a -> IO a
dirname :: FilePath -> FilePath
catFrom :: [FilePath] -> String -> IO String
catTo :: FilePath -> String -> IO String
cd :: FilePath -> IO ()
echo :: String -> String -> String
exit :: Int -> IO a
glob :: FilePath -> IO [FilePath]
grep :: String -> [String] -> [String]
grepV :: String -> [String] -> [String]
egrep :: String -> [String] -> [String]
egrepV :: String -> [String] -> [String]
mkdir :: FilePath -> FileMode -> IO ()
pwd :: IO FilePath
readlink :: FilePath -> IO FilePath
readlinkabs :: FilePath -> IO FilePath
tee :: [FilePath] -> String -> IO String
wcL :: [String] -> [String]
Documentation
abspath :: FilePath -> IO FilePath
Return the absolute path of the arg. Raises an error if the computation is impossible.
appendTo :: FilePath -> String -> IO String
Like catTo, but appends to the file.
basename :: FilePath -> FilePath
The filename part of a path
bracketCD :: FilePath -> IO a -> IO a

Changes the current working directory to the given path, executes the given I/O action, then changes back to the original directory, even if the I/O action raised an exception.

This is an alias for the MissingH function System.Path.bracketCWD.

dirname :: FilePath -> FilePath
The directory part of a path
catFrom :: [FilePath] -> String -> IO String

Load the specified files and display them, one at a time.

The special file - means to display the input.

If it is not given, no input is read.

Unlike the shell cat, - may be given twice. However, if it is, you will be forcing Haskell to buffer the input.

Note: buffering behavior here is untested.

catTo :: FilePath -> String -> IO String
Takes input, writes it to the specified file, and does not pass it on. See also tee.
cd :: FilePath -> IO ()

An alias for System.Directory.setCurrentDirectory.

Want to change to a user's home directory? Try this:

 glob "~jgoerzen" >>= cd . head 

See also bracketCD.

echo :: String -> String -> String

Takes a string and sends it on as standard output.

The input to this function is never read.

exit :: Int -> IO a
Exits with the specified error code. 0 indicates no error.
glob :: FilePath -> IO [FilePath]

Takes a pattern. Returns a list of names that match that pattern. Handles:

~username at beginning of file to expand to user's home dir
? matches exactly one character
* matches zero or more characters
[list] matches any character in list
[!list] matches any character not in list

The result of a tilde expansion on a nonexistant username is to do no tilde expansion.

The tilde with no username equates to the current user.

Non-tilde expansion is done by the MissingH module System.Path.Glob.

grep :: String -> [String] -> [String]
Search for the string in the lines. Return those that match.
grepV :: String -> [String] -> [String]
Search for the string in the lines. Return those that do NOT match.
egrep :: String -> [String] -> [String]
Search for the regexp in the lines. Return those that match.
egrepV :: String -> [String] -> [String]
Search for the regexp in the lines. Return those that do NOT match.
mkdir :: FilePath -> FileMode -> IO ()
Creates the given directory. A value of 0o755 for mode would be typical. An alias for System.Posix.Directory.createDirectory
pwd :: IO FilePath
An alias for System.Directory.getCurrentDirectory
readlink :: FilePath -> IO FilePath
Return the destination that the given symlink points to. An alias for System.Posix.Files.readSymbolicLink
readlinkabs :: FilePath -> IO FilePath
As readlink, but turns the result into an absolute path.
tee :: [FilePath] -> String -> IO String

Takes input, writes it to all the specified files, and passes it on.

This function buffers the input.

See also catFrom.

wcL :: [String] -> [String]
Count number of lines. wc -l
Produced by Haddock version 0.8