Portability | portable |
---|---|
Stability | provisional |
Maintainer | John Goerzen <jgoerzen@complete.org> |
Copyright (c) 2006-2008 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.
- abspath :: FilePath -> IO FilePath
- appendTo :: FilePath -> String -> IO String
- basename :: FilePath -> FilePath
- bracketCD :: FilePath -> IO a -> IO a
- catFrom :: [FilePath] -> String -> IO String
- catFromBS :: [FilePath] -> ByteString -> IO ByteString
- catTo :: FilePath -> String -> IO String
- catToBS :: FilePath -> ByteString -> IO ByteString
- cd :: FilePath -> IO ()
- cut :: Integer -> Char -> String -> String
- cutR :: [Integer] -> Char -> String -> String
- dirname :: FilePath -> FilePath
- echo :: String -> String -> String
- echoBS :: ByteString -> ByteString -> ByteString
- exit :: Int -> IO a
- glob :: FilePath -> IO [FilePath]
- grep :: String -> [String] -> [String]
- grepV :: String -> [String] -> [String]
- egrep :: String -> [String] -> [String]
- egrepV :: String -> [String] -> [String]
- joinLines :: [String] -> [String]
- lower :: String -> String
- upper :: String -> String
- mkdir :: FilePath -> FileMode -> IO ()
- numberLines :: [String] -> [String]
- pwd :: IO FilePath
- readlink :: FilePath -> IO FilePath
- readlinkabs :: FilePath -> IO FilePath
- rev :: [String] -> [String]
- revW :: [String] -> [String]
- space :: [String] -> [String]
- unspace :: [String] -> [String]
- tac :: [String] -> [String]
- tee :: [FilePath] -> String -> IO String
- teeBS :: [FilePath] -> ByteString -> IO ByteString
- tr :: Char -> Char -> String -> String
- trd :: Char -> String -> String
- wcW :: [String] -> [String]
- wcL :: [String] -> [String]
- uniq :: String -> String
Documentation
abspath :: FilePath -> IO FilePathSource
Return the absolute path of the arg. Raises an error if the computation is impossible.
bracketCD :: FilePath -> IO a -> IO aSource
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.
catFrom :: [FilePath] -> String -> IO StringSource
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.
See also catFromBS
.
catFromBS :: [FilePath] -> ByteString -> IO ByteStringSource
Lazy ByteString version of catFrom
. This may have performance
benefits.
catToBS :: FilePath -> ByteString -> IO ByteStringSource
Like catTo
, but operates in a lazy ByteString. This could be a
performance benefit.
An alias for System.Directory.setCurrentDirectory.
Want to change to a user's home directory? Try this:
glob "~jgoerzen" >>= cd . head
See also bracketCD
.
cut :: Integer -> Char -> String -> StringSource
Split a list by a given character and select the nth list.
cut ' ' 2 "foo bar baz quux" -> "bar"
cutR :: [Integer] -> Char -> String -> StringSource
Split a list by a given character and select ranges of the resultant lists.
cutR [2..4] ' ' "foo bar baz quux foobar" -> "baz quux foobar" cutR [1..1000] ' ' "foo bar baz quux foobar" -> "bar baz quux foobar" cutR [-1000..1000] ' ' "foo bar baz quux foobar" -> "foo bar baz quux foobar"
Note that too large and too small indices are essentially ignored.
echo :: String -> String -> StringSource
Takes a string and sends it on as standard output.
The input to this function is never read.
See also echoBS
.
echoBS :: ByteString -> ByteString -> ByteStringSource
ByteString.Lazy version of echo
.
glob :: FilePath -> IO [FilePath]Source
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]Source
Search for the string in the lines. Return those that match. Same as:
grep needle = filter (isInfixOf needle)
grepV :: String -> [String] -> [String]Source
Search for the string in the lines. Return those that do NOT match.
egrep :: String -> [String] -> [String]Source
Search for the regexp in the lines. Return those that match.
egrepV :: String -> [String] -> [String]Source
Search for the regexp in the lines. Return those that do NOT match.
upper :: String -> StringSource
Inverse of double space; drop empty lines
Convert a string to all upper or lower case
mkdir :: FilePath -> FileMode -> IO ()Source
Creates the given directory. A value of 0o755 for mode would be typical.
An alias for System.Posix.Directory.createDirectory.
numberLines :: [String] -> [String]Source
Number each line of a file
readlink :: FilePath -> IO FilePathSource
Return the destination that the given symlink points to.
An alias for System.Posix.Files.readSymbolicLink
readlinkabs :: FilePath -> IO FilePathSource
As readlink
, but turns the result into an absolute path.
tac :: [String] -> [String]Source
Reverse words on each line
Reverse lines in a String (like Unix tac).
Implemented as:
tac = reverse
See uniq
.
teeBS :: [FilePath] -> ByteString -> IO ByteStringSource
Lazy ByteString version of tee
.