NAME
zoidbuiltins - Zoidberg's builtins
DESCRIPTION
This is a listing of the default builtins of the Zoidberg shell. Many of these are defined in the default plugins, so a modified shell can have different builtins.
- cd [-v|--verbose] [dir|-|(+|-)hist_number]
- cd (-l|--list)
-
Changes the current working directory to dir. When used with a single dash changes to OLDPWD.
This command uses the environment variable 'CDPATH'. It serves as a search path when the directory you want to change to isn't found in the current directory.
This command also uses a directory history. The '-number' and '+number' switches are used to change directory to an positive or negative offset in this history.
__END__
- exec cmd
-
Execute cmd. This effectively ends the shell session, process flow will NOT return to the prompt.
- eval cmd
-
Eval cmd like a shell command. Main use of this is to run code stored in variables.
- export var=value
-
Set the environment variable var to value.
TODO explain how export moved varraibles between the perl namespace and the environment
- setenv var value
-
Like export, but with a slightly different syntax.
- unsetenv var
-
Set var to undefined.
- set [+-][abCefnmnuvx]
- set [+o|-o] option
-
Set or unset a shell option. Although sometimes confusing a '+' switch unsets the option, while the '-' switch sets it.
Short options correspond to the following names:
a => allexport * b => notify C => noclobber e => errexit * f => noglob m => monitor * n => noexec * u => nounset * v => verbose x => xtrace * *) Not yet supported by the rest of the shell
See zoiduser for a description what these and other options do.
FIXME takes also hash arguments
- source file
-
Run the perl script file. This script is NOT the same as the commandline syntax. Try using Zoidberg::Shell in these scripts.
- alias
- alias name
- alias name=command
- alias name command
-
Make name an alias to command. Aliases work like macros in the shell, this means they are substituted before the commnd code is interpreted and can contain complex statements.
In zoid you also can use positional parameters (
$_[0]
,$_[1]
etc.) and@_
, which will be replaced with the arguments to the alias.Without command shows the alias defined for name if any; without arguments lists all aliases that are currently defined.
- unalias name
-
Remove an alias definition.
- read [-r] var1 var2 ..
-
Read a line from STDIN, split the line in words and assign the words to the named enironment variables. Remaining words are stored in the last variable.
Unless '-r' is specified the backslash is treated as an escape char and is it possible to escape the newline char.
- newgrp
-
TODO
- umask
-
TODO
- false
-
A command that always returns an error without doing anything.
- true
-
A command that never fails and does absolutely nothing.
- dirs
-
Output the current dir stack.
TODO some options
Note that the dir stack is ont related to the dir history. It was only implemented because historic implementations have it.
- popd dir
-
Pops a directory from the dir stack and cds to that directory.
TODO some options
- pushd dir
-
Push dir on the dir stack.
TODO some options
- pwd
-
Prints the current PWD.
- symbols [-a|--all] [class]
-
Output a listing of symbols in the specified class. Class defaults to the current perl namespace, by default
Zoidberg::Eval
.All symbols are prefixed by their sigil ('$', '@', '%', '&' or '*') where '*' is used for filehandles.
By default sub classes (hashes containing '::') and special symbols (symbols without letters in their name) are hidden. Use the --all switch to see these.
- help [topic|command command]
-
Prints out a help text.
- which [-a|--all|-m|--module] ITEM
-
Finds ITEM in PATH or INC if the -m or --module option was used. If the -a or --all option is used all it doesn't stop after the first match.
TODO it should identify aliases
TODO what should happen with contexts other then CMD ?
- jobs
-
List current jobs.
- bg job_spec
-
Run the job corresponding to jobspec as an asynchronous background process.
Without argument uses the "current" job.
- fg job_spec
-
Run the job corresponding to jobspec as a foreground process.
Without argument uses the "current" job.
- wait
-
TODO
- kill -l
- kill [-w | -s sigspec|-n signum|-sigspec] (pid|job_spec)
-
Sends a signal to a process or a process group. By default the "TERM" signal is used.
The '-l' option list all possible signals.
The -w or --wipe option is zoidberg specific. It not only kills the job, but also wipes the list that would be executed after the job ends.
- disown
-
TODO
- fc [-r][-e editor] [first [last]]
- fc -l [-nr] [first [last]]
- fc -s [old=new] [first [last]]
-
"Fix command", this builtin allows you to edit and re-execute commands from the history. first and last are either command numbers or strings matching the beginning of a command; a negative number is used to designate commands by counting back from the current one. Use the '-l' option to list the commands in the history, and the '-n' switch to surpress the command numbers in the listing.The '-r' switch reverses the order of the commands. The '-s' switch re-executes the commands without editing.
first and last default to '-16' and '-1' when the '-l' option is given. Otherwise first defaults to '-1' and last defaults to first.
Note that the selection of the editor is not POSIX compliant but follows bash, if no editor is given using the '-e' option the environment variables 'FCEDIT' and 'EDITOR' are both checked, if neither is set, vi is used. ( According to POSIX we should use 'ed' by default and probably ignore the 'EDITOR' varaiable, but I don't think that is "What You Want" )
Following zsh setting the editor to '-' is identical with using the -s switch.
Also note that fc removes itself from the history and adds the resulting command instead.
Typically r is aliased to 'fc -s' so r will re-execute the last command, optionally followed by a substitution and/or a string to match the begin of the command.
TODO: regex/glob substitution for '-s' switch; now only does string substitution.
- history [--type type] [--read] [-n|--nonu] [-r|--reverse] [first [last]]
-
Returns (a part of) the history. By default it tries to find the commandline history (depending on GetHistory), but the '--read' option forces reading the history file. To get other log types, like 'pwd', use the '--type' option. The '--nonu' option surpressees line numbering for the terminal output.
The arguments first and last can either be a positive or negative integer, representing the command number or reverse offset, or a string matching the begin of the command. If only one integer is given last defaults to '-1'; if only one string is given last defaults to first. As a bonus you can supply a regex reference instead of a string when using the perl interface.
Note that unlike fc the history command is not specified by posix and the implementation varies widely for different shells. In zoid, fc is build on top of history, so options for history are chosen consistently with fc.
- log string type
-
Adds string to the history file with the current timestamp and the supplied type tag. The type defaults to "log". If the type is set to "hist" the entry will become part of the command history after the history file is read again.
- readline
-
Returns a line of input.
- select
-
Given a list of items presents the user with a menu and returns the choice made or undef.
- SetHistory
-
Takes either an array or an array reference and uses that as new commandline history.
This routine does not alter the history file.
- GetHistory
-
Returns the commandline history either as an array reference or as an array.
This routine does not use the history file.