πŸ–‹οΈ Command Reference

. Source a shell source file via .
, Output a ; semicolon
$ Run any arbitrary command
$ Run any arbitrary command
: Output a line containing the : null character
:: Write a ;; for use in case/esac options
[ Starts a line with a [ statement, e.g. [ '$#' -eq 0 ] AND ...
[[ Starts a line with a [[ statement, e.g. [[ '"$1"' =~ ^-- ]] AND ...
{ Start a { block
{{ Write a (( arithmetic statement (replaces }} with )))
} Closes a function or an open { block
appendln Append a line of text to source output without indentation
append Append a string of text to source output without indentation
AND Used for generating &&
array Define an array variable
case Begin a case / esac statement
cleanSlate Clean the slate of the current pen (resets source code)
code Output the code for the current pen (does not modify source)
comment Append a # command line
declare Declare a variable (shortcuts available: [int](/docs/int), [array](/docs/array), [map](/docs/map))
done End a for or while loop
do Syntax sugar (does not modify source code)
echo echo the provided arguments (wrapped in "...")
elif Add an elif to an if conditional block
else Add an else to an if conditional block
esac End a case / esac statement
fi End an if conditional block
fn Alias for function
for Begin a for loop
fromCommand Append < <([command]) to the following command
fromFile Append < "[file path]" to the following command
fromStdin Append < [argument] to the following command
fromText Append <<< "[text]" to the following command
function Begin a function definition block
getIndent Begin a function definition block
if Begin an if conditional block
int Define an integer variable
local Define a local variable
main Write a β€˜main’ execution statement for provided function
map Define an associative array variable
option Add an option to a case / esac statement
OR Used for generating ||
prepend Prepend a string of text to source output without indentation
prependln Prepend a line of text to source output without indentation
printf printf the provided arguments (with '%s' formatter support)
putAway Delete the current pen (also deletes source code)
raw Perform command without processing , AND OR \|
return Append a return [code] statement
shift shift a command-line argument
shebang Write β€˜#!’ hashbang with provided command path (default: /bin/bash)
source Source a shell source file
then Syntax sugar (does not modify source code)
toFile Append > [file path] to the following command
toStderr Append >&2 to the following command
unset unset a variable
var Define a variable
while Begin a while loop
writeln Append a line of text to source output including indentation
write Append a string of text to source output including indentation

Extending Syntax

extend Extend shellpen with custom syntax
$PEN Write using the current pen
--push Push an item onto the current stack
--pop Pop the last item off the current stack (rightmost)
--get-stack Populate a provided array with the full current stack
--get-last-pushed Get last item pushed onto the current stack
--eval-last-pushed Evaluate the last item pushed onto the current stack
--eval-full-stack Close every item on current stack (from right to left)
--mark-last-not-empty Mark the last item on current stack as not empty
--write-null-if-last-empty Append a : if the last item in the current stack is empty