3220 lines
129 KiB
Markdown
3220 lines
129 KiB
Markdown
|
<!-- START doctoc generated TOC please keep comment here to allow auto update -->
|
|||
|
<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
|
|||
|
**Table of Contents** *generated with [DocToc](https://github.com/thlorenz/doctoc)*
|
|||
|
|
|||
|
- [17 Shell Builtin Commands](#17-shell-builtin-commands)
|
|||
|
|
|||
|
<!-- END doctoc generated TOC please keep comment here to allow auto update -->
|
|||
|
|
|||
|
<span id="Shell-Builtin-Commands"></span>
|
|||
|
<span id="Shell-Builtin-Commands-1"></span>
|
|||
|
|
|||
|
# 17 Shell Builtin Commands
|
|||
|
|
|||
|
<span id="index-builtin-commands"></span>
|
|||
|
<span id="index-commands_002c-builtin"></span>
|
|||
|
|
|||
|
Some shell builtin commands take options as described in individual
|
|||
|
entries; these are often referred to in the list below as ‘`flags`’ to
|
|||
|
avoid confusion with shell options, which may also have an effect on the
|
|||
|
behaviour of builtin commands. In this introductory section, ‘`option`’
|
|||
|
always has the meaning of an option to a command that should be familiar
|
|||
|
to most command line users.
|
|||
|
|
|||
|
Typically, options are single letters preceded by a hyphen (`-`).
|
|||
|
Options that take an argument accept it either immediately following the
|
|||
|
option letter or after white space, for example ‘`print -C3 {1..9}`’ or
|
|||
|
‘`print -C 3 {1..9}`’ are equivalent. Arguments to options are not the
|
|||
|
same as arguments to the command; the documentation indicates which is
|
|||
|
which. Options that do not take an argument may be combined in a single
|
|||
|
word, for example ‘`print -rca – *`’ and ‘`print -r -c -a – *`’ are
|
|||
|
equivalent.
|
|||
|
|
|||
|
Some shell builtin commands also take options that begin with ‘`+`’
|
|||
|
instead of ‘`-`’. The list below makes clear which commands these are.
|
|||
|
|
|||
|
Options (together with their individual arguments, if any) must appear
|
|||
|
in a group before any non-option arguments; once the first non-option
|
|||
|
argument has been found, option processing is terminated.
|
|||
|
|
|||
|
All builtin commands other than ‘`echo`’ and precommand modifiers, even
|
|||
|
those that have no options, can be given the argument ‘`-``-`’ to
|
|||
|
terminate option processing. This indicates that the following words are
|
|||
|
non-option arguments, but is otherwise ignored. This is useful in cases
|
|||
|
where arguments to the command may begin with ‘`-`’. For historical
|
|||
|
reasons, most builtin commands (including ‘`echo`’) also recognize a
|
|||
|
single ‘`-`’ in a separate word for this purpose; note that this is less
|
|||
|
standard and use of ‘`-``-`’ is recommended.
|
|||
|
|
|||
|
- `-` `simple command`
|
|||
|
See [Precommand Modifiers](Shell-Grammar.html#Precommand-Modifiers).
|
|||
|
|
|||
|
<span id="index-_002e"></span>
|
|||
|
|
|||
|
- `.` `file` \[ `arg` ... \]
|
|||
|
Read commands from `file` and execute them in the current shell
|
|||
|
environment.
|
|||
|
|
|||
|
If `file` does not contain a slash, or if `PATH_DIRS` is set, the
|
|||
|
shell looks in the components of `$path` to find the directory
|
|||
|
containing `file`. Files in the current directory are not read
|
|||
|
unless ‘`.`’ appears somewhere in `$path`. If a file named
|
|||
|
‘`file``.zwc`’ is found, is newer than `file`, and is the compiled
|
|||
|
form (created with the `zcompile` builtin) of `file`, then commands
|
|||
|
are read from that file instead of `file`.
|
|||
|
|
|||
|
If any arguments `arg` are given, they become the positional
|
|||
|
parameters; the old positional parameters are restored when the
|
|||
|
`file` is done executing. However, if no arguments are given, the
|
|||
|
positional parameters remain those of the calling context, and no
|
|||
|
restoring is done.
|
|||
|
|
|||
|
If `file` was not found the return status is 127; if `file` was
|
|||
|
found but contained a syntax error the return status is 126; else
|
|||
|
the return status is the exit status of the last command executed.
|
|||
|
|
|||
|
<span id="index-_003a"></span>
|
|||
|
<span id="index-expanding-parameters"></span>
|
|||
|
<span id="index-parameters_002c-expanding"></span>
|
|||
|
<span id="index-doing-nothing"></span>
|
|||
|
|
|||
|
- `:` \[ `arg` ... \]
|
|||
|
This command does nothing, although normal argument expansions is
|
|||
|
performed which may have effects on shell parameters. A zero exit
|
|||
|
status is returned.
|
|||
|
|
|||
|
<span id="index-alias"></span>
|
|||
|
<span id="index-aliases_002c-defining"></span>
|
|||
|
<span id="index-aliases_002c-listing"></span>
|
|||
|
|
|||
|
- `alias` \[ {`+`|`-`}`gmrsL` \] \[ `name`\[`=``value`\] ... \]
|
|||
|
For each `name` with a corresponding `value`, define an alias with
|
|||
|
that value. A trailing space in `value` causes the next word to be
|
|||
|
checked for alias expansion. If the `-g` flag is present, define a
|
|||
|
global alias; global aliases are expanded even if they do not occur
|
|||
|
in command position.
|
|||
|
|
|||
|
If the `-s` flag is present, define a suffix alias: if the command
|
|||
|
word on a command line is in the form ‘`text``.``name`’, where
|
|||
|
`text` is any non-empty string, it is replaced by the text ‘`value`
|
|||
|
`text``.``name`’. Note that `name` is treated as a literal string,
|
|||
|
not a pattern. A trailing space in `value` is not special in this
|
|||
|
case. For example,
|
|||
|
|
|||
|
<div class="example">
|
|||
|
|
|||
|
``` example
|
|||
|
alias -s ps='gv --'
|
|||
|
```
|
|||
|
|
|||
|
</div>
|
|||
|
|
|||
|
will cause the command ‘`*.ps`’ to be expanded to ‘`gv – *.ps`’. As
|
|||
|
alias expansion is carried out earlier than globbing, the ‘`*.ps`’
|
|||
|
will then be expanded. Suffix aliases constitute a different name
|
|||
|
space from other aliases (so in the above example it is still
|
|||
|
possible to create an alias for the command `ps`) and the two sets
|
|||
|
are never listed together.
|
|||
|
|
|||
|
For each `name` with no `value`, print the value of `name`, if any.
|
|||
|
With no arguments, print all currently defined aliases other than
|
|||
|
suffix aliases. If the `-m` flag is given the arguments are taken as
|
|||
|
patterns (they should be quoted to preserve them from being
|
|||
|
interpreted as glob patterns), and the aliases matching these
|
|||
|
patterns are printed. When printing aliases and one of the `-g`,
|
|||
|
`-r` or `-s` flags is present, restrict the printing to global,
|
|||
|
regular or suffix aliases, respectively; a regular alias is one
|
|||
|
which is neither a global nor a suffix alias. Using ‘`+`’ instead of
|
|||
|
‘`-`’, or ending the option list with a single ‘`+`’, prevents the
|
|||
|
values of the aliases from being printed.
|
|||
|
|
|||
|
If the `-L` flag is present, then print each status is nonzero if a
|
|||
|
`name` (with no `value`) is given for which no alias has been
|
|||
|
defined.
|
|||
|
|
|||
|
For more on aliases, include common problems, see
|
|||
|
[Aliasing](Shell-Grammar.html#Aliasing).
|
|||
|
|
|||
|
<span id="index-autoload"></span>
|
|||
|
<span id="index-functions_002c-autoloading-1"></span>
|
|||
|
<span id="index-autoloading-functions-1"></span>
|
|||
|
|
|||
|
- `autoload` \[ {`+`|`-`}`RTUXdkmrtWz` \] \[ `-w` \] \[ `name` ...
|
|||
|
\]
|
|||
|
<span id="index-fpath_002c-searching"></span>
|
|||
|
|
|||
|
See the section ‘Autoloading Functions’ in
|
|||
|
[Functions](Functions.html#Functions) for full details. The `fpath`
|
|||
|
parameter will be searched to find the function definition when the
|
|||
|
function is first referenced.
|
|||
|
|
|||
|
If `name` consists of an absolute path, the function is defined to
|
|||
|
load from the file given (searching as usual for dump files in the
|
|||
|
given location). The name of the function is the basename
|
|||
|
(non-directory part) of the file. It is normally an error if the
|
|||
|
function is not found in the given location; however, if the option
|
|||
|
`-d` is given, searching for the function defaults to `$fpath`. If a
|
|||
|
function is loaded by absolute path, any functions loaded from it
|
|||
|
that are marked for `autoload` without an absolute path have the
|
|||
|
load path of the parent function temporarily prepended to `$fpath`.
|
|||
|
|
|||
|
If the option `-r` or `-R` is given, the function is searched for
|
|||
|
immediately and the location is recorded internally for use when the
|
|||
|
function is executed; a relative path is expanded using the value of
|
|||
|
`$PWD`. This protects against a change to `$fpath` after the call to
|
|||
|
`autoload`. With `-r`, if the function is not found, it is silently
|
|||
|
left unresolved until execution; with `-R`, an error message is
|
|||
|
printed and command processing aborted immediately the search fails,
|
|||
|
i.e. at the `autoload` command rather than at function execution..
|
|||
|
|
|||
|
The flag `-X` may be used only inside a shell function. It causes
|
|||
|
the calling function to be marked for autoloading and then
|
|||
|
immediately loaded and executed, with the current array of
|
|||
|
positional parameters as arguments. This replaces the previous
|
|||
|
definition of the function. If no function definition is found, an
|
|||
|
error is printed and the function remains undefined and marked for
|
|||
|
autoloading. If an argument is given, it is used as a directory
|
|||
|
(i.e. it does not include the name of the function) in which the
|
|||
|
function is to be found; this may be combined with the `-d` option
|
|||
|
to allow the function search to default to `$fpath` if it is not in
|
|||
|
the given location.
|
|||
|
|
|||
|
The flag `+X` attempts to load each `name` as an autoloaded
|
|||
|
function, but does *not* execute it. The exit status is zero
|
|||
|
(success) if the function was not previously defined *and* a
|
|||
|
definition for it was found. This does *not* replace any existing
|
|||
|
definition of the function. The exit status is nonzero (failure) if
|
|||
|
the function was already defined or when no definition was found. In
|
|||
|
the latter case the function remains undefined and marked for
|
|||
|
autoloading. If ksh-style autoloading is enabled, the function
|
|||
|
created will contain the contents of the file plus a call to the
|
|||
|
function itself appended to it, thus giving normal ksh autoloading
|
|||
|
behaviour on the first call to the function. If the `-m` flag is
|
|||
|
also given each `name` is treated as a pattern and all functions
|
|||
|
already marked for autoload that match the pattern are loaded.
|
|||
|
|
|||
|
With the `-t` flag, turn on execution tracing; with `-T`, turn on
|
|||
|
execution tracing only for the current function, turning it off on
|
|||
|
entry to any called functions that do not also have tracing enabled.
|
|||
|
|
|||
|
With the `-U` flag, alias expansion is suppressed when the function
|
|||
|
is loaded.
|
|||
|
|
|||
|
With the `-w` flag, the `name`s are taken as names of files compiled
|
|||
|
with the `zcompile` builtin, and all functions defined in them are
|
|||
|
marked for autoloading.
|
|||
|
|
|||
|
The flags `-z` and `-k` mark the function to be autoloaded using the
|
|||
|
zsh or ksh style, as if the option `KSH_AUTOLOAD` were unset or were
|
|||
|
set, respectively. The flags override the setting of the option at
|
|||
|
the time the function is loaded.
|
|||
|
|
|||
|
Note that the `autoload` command makes no attempt to ensure the
|
|||
|
shell options set during the loading or execution of the file have
|
|||
|
any particular value. For this, the `emulate` command can be used:
|
|||
|
|
|||
|
<div class="example">
|
|||
|
|
|||
|
``` example
|
|||
|
emulate zsh -c 'autoload -Uz func'
|
|||
|
```
|
|||
|
|
|||
|
</div>
|
|||
|
|
|||
|
arranges that when `func` is loaded the shell is in native `zsh`
|
|||
|
emulation, and this emulation is also applied when `func` is run.
|
|||
|
|
|||
|
Some of the functions of `autoload` are also provided by `functions
|
|||
|
-u` or `functions -U`, but `autoload` is a more comprehensive
|
|||
|
interface.
|
|||
|
|
|||
|
<span id="index-bg"></span>
|
|||
|
<span id="index-jobs_002c-backgrounding"></span>
|
|||
|
|
|||
|
- `bg` \[ `job` ... \]
|
|||
|
`job` ... `&`
|
|||
|
Put each specified `job` in the background, or the current job if
|
|||
|
none is specified.
|
|||
|
|
|||
|
- `bindkey`
|
|||
|
See [Zle Builtins](Zsh-Line-Editor.html#Zle-Builtins).
|
|||
|
|
|||
|
<span id="index-break"></span>
|
|||
|
<span id="index-exiting-loops"></span>
|
|||
|
<span id="index-loops_002c-exiting"></span>
|
|||
|
|
|||
|
- `break` \[ `n` \]
|
|||
|
Exit from an enclosing `for`, `while`, `until`, `select` or `repeat`
|
|||
|
loop. If an arithmetic expression `n` is specified, then break `n`
|
|||
|
levels instead of just one.
|
|||
|
|
|||
|
<span id="index-builtin-1"></span>
|
|||
|
|
|||
|
- `builtin` `name` \[ `args` ... \]
|
|||
|
Executes the builtin `name`, with the given `args`.
|
|||
|
|
|||
|
<span id="index-bye"></span>
|
|||
|
|
|||
|
- `bye`
|
|||
|
Same as `exit`.
|
|||
|
|
|||
|
- `cap`
|
|||
|
See [The zsh/cap Module](Zsh-Modules.html#The-zsh_002fcap-Module).
|
|||
|
|
|||
|
<span id="index-cd"></span>
|
|||
|
<span id="index-directories_002c-changing"></span>
|
|||
|
|
|||
|
- `cd` \[ `-qsLP` \] \[ `arg` \]
|
|||
|
`cd` \[ `-qsLP` \] `old` `new`
|
|||
|
`cd` \[ `-qsLP` \] {`+`|`-`}`n`
|
|||
|
Change the current directory. In the first form, change the current
|
|||
|
directory to `arg`, or to the value of `$HOME` if `arg` is not
|
|||
|
specified. If `arg` is ‘`-`’, change to the previous directory.
|
|||
|
|
|||
|
Otherwise, if `arg` begins with a slash, attempt to change to the
|
|||
|
directory given by `arg`.
|
|||
|
|
|||
|
If `arg` does not begin with a slash, the behaviour depends on
|
|||
|
whether the current directory ‘`.`’ occurs in the list of
|
|||
|
directories contained in the shell parameter `cdpath`. If it does
|
|||
|
not, first attempt to change to the directory `arg` under the
|
|||
|
current directory, and if that fails but `cdpath` is set and
|
|||
|
contains at least one element attempt to change to the directory
|
|||
|
`arg` under each component of `cdpath` in turn until successful. If
|
|||
|
‘`.`’ occurs in `cdpath`, then `cdpath` is searched strictly in
|
|||
|
order so that ‘`.`’ is only tried at the appropriate point.
|
|||
|
|
|||
|
The order of testing `cdpath` is modified if the option `POSIX_CD`
|
|||
|
is set, as described in the documentation for the option.
|
|||
|
|
|||
|
If no directory is found, the option `CDABLE_VARS` is set, and a
|
|||
|
parameter named `arg` exists whose value begins with a slash, treat
|
|||
|
its value as the directory. In that case, the parameter is added to
|
|||
|
the named
|
|||
|
|
|||
|
The second form of `cd` substitutes the string `new` for the string
|
|||
|
`old` in the name of the current directory, and tries to change to
|
|||
|
this new directory.
|
|||
|
|
|||
|
The third form of `cd` extracts an entry from the directory stack,
|
|||
|
and changes to that directory. An argument of the form ‘`+``n`’
|
|||
|
identifies a stack entry by counting from the left of the list shown
|
|||
|
by the `dirs` command, starting with zero. An argument of the form
|
|||
|
‘`-``n`’ counts from the right. If the `PUSHD_MINUS` option is
|
|||
|
set, the meanings of ‘`+`’ and ‘`-`’ in this context are swapped. If
|
|||
|
the `POSIX_CD` option is set, this form of `cd` is not recognised
|
|||
|
and will be interpreted as the first form.
|
|||
|
|
|||
|
If the `-q` (quiet) option is specified, the hook function `chpwd`
|
|||
|
and the functions in the array `chpwd_functions` are not called.
|
|||
|
This is useful for calls to `cd` that do not change the environment
|
|||
|
seen by an interactive user.
|
|||
|
|
|||
|
If the `-s` option is specified, `cd` refuses to change the current
|
|||
|
directory if the given pathname contains symlinks. If the `-P`
|
|||
|
option is given or the `CHASE_LINKS` option is set, symbolic links
|
|||
|
are resolved to their true values. If the `-L` option is given
|
|||
|
symbolic links are retained in the directory (and not resolved)
|
|||
|
regardless of the state of the `CHASE_LINKS` option.
|
|||
|
|
|||
|
<span id="index-chdir"></span>
|
|||
|
|
|||
|
- `chdir`
|
|||
|
Same as `cd`.
|
|||
|
|
|||
|
- `clone`
|
|||
|
See [The zsh/clone
|
|||
|
Module](Zsh-Modules.html#The-zsh_002fclone-Module).
|
|||
|
|
|||
|
<span id="index-command-1"></span>
|
|||
|
|
|||
|
- `command` \[ `-pvV` \] `simple command`
|
|||
|
The simple command argument is taken as an external command instead
|
|||
|
of a function or builtin and is executed. If the `POSIX_BUILTINS`
|
|||
|
option is set, builtins will also be executed but certain special
|
|||
|
properties of them are suppressed. The `-p` flag causes a default
|
|||
|
path to be searched instead of that in `$path`. With the `-v` flag,
|
|||
|
`command` is similar to `whence` and with `-V`, it is equivalent to
|
|||
|
`whence -v`.
|
|||
|
|
|||
|
See also [Precommand
|
|||
|
Modifiers](Shell-Grammar.html#Precommand-Modifiers).
|
|||
|
|
|||
|
- `comparguments`
|
|||
|
See [The zsh/computil
|
|||
|
Module](Zsh-Modules.html#The-zsh_002fcomputil-Module).
|
|||
|
|
|||
|
- `compcall`
|
|||
|
See [The zsh/compctl
|
|||
|
Module](Zsh-Modules.html#The-zsh_002fcompctl-Module).
|
|||
|
|
|||
|
- `compctl`
|
|||
|
See [The zsh/compctl
|
|||
|
Module](Zsh-Modules.html#The-zsh_002fcompctl-Module).
|
|||
|
|
|||
|
- `compdescribe`
|
|||
|
See [The zsh/computil
|
|||
|
Module](Zsh-Modules.html#The-zsh_002fcomputil-Module).
|
|||
|
|
|||
|
- `compfiles`
|
|||
|
See [The zsh/computil
|
|||
|
Module](Zsh-Modules.html#The-zsh_002fcomputil-Module).
|
|||
|
|
|||
|
- `compgroups`
|
|||
|
See [The zsh/computil
|
|||
|
Module](Zsh-Modules.html#The-zsh_002fcomputil-Module).
|
|||
|
|
|||
|
- `compquote`
|
|||
|
See [The zsh/computil
|
|||
|
Module](Zsh-Modules.html#The-zsh_002fcomputil-Module).
|
|||
|
|
|||
|
- `comptags`
|
|||
|
See [The zsh/computil
|
|||
|
Module](Zsh-Modules.html#The-zsh_002fcomputil-Module).
|
|||
|
|
|||
|
- `comptry`
|
|||
|
See [The zsh/computil
|
|||
|
Module](Zsh-Modules.html#The-zsh_002fcomputil-Module).
|
|||
|
|
|||
|
- `compvalues`
|
|||
|
See [The zsh/computil
|
|||
|
Module](Zsh-Modules.html#The-zsh_002fcomputil-Module).
|
|||
|
|
|||
|
<span id="index-continue"></span>
|
|||
|
<span id="index-loops_002c-continuing"></span>
|
|||
|
<span id="index-continuing-loops"></span>
|
|||
|
|
|||
|
- `continue` \[ `n` \]
|
|||
|
Resume the next iteration of the enclosing `for`, `while`, `until`,
|
|||
|
`select` or `repeat` loop. If an arithmetic expression `n` is
|
|||
|
specified, break out of `n`-1 loops and resume at the `n`th
|
|||
|
enclosing loop.
|
|||
|
|
|||
|
<span id="index-declare"></span>
|
|||
|
|
|||
|
- `declare`
|
|||
|
Same as `typeset`.
|
|||
|
|
|||
|
<span id="index-dirs"></span>
|
|||
|
<span id="index-directory-stack_002c-printing"></span>
|
|||
|
|
|||
|
- `dirs` \[ `-c` \] \[ `arg` ... \]
|
|||
|
`dirs` \[ `-lpv` \]
|
|||
|
With no arguments, print the contents of the directory stack.
|
|||
|
Directories are added to this stack with the `pushd` command, and
|
|||
|
removed with the `cd` or `popd` commands. If arguments are
|
|||
|
specified, load them onto the directory stack, replacing anything
|
|||
|
that was there, and push the current directory onto the stack.
|
|||
|
|
|||
|
- `-c`
|
|||
|
clear the directory stack.
|
|||
|
|
|||
|
- `-l`
|
|||
|
print directory names in full instead of using of using `~`
|
|||
|
expressions ([Filename
|
|||
|
Expansion](Expansion.html#Filename-Expansion)).
|
|||
|
|
|||
|
- `-p`
|
|||
|
print directory entries one per line.
|
|||
|
|
|||
|
- `-v`
|
|||
|
number the directories in the stack when printing.
|
|||
|
|
|||
|
<span id="index-disable"></span>
|
|||
|
<span id="index-disabling-commands"></span>
|
|||
|
<span id="index-commands_002c-disabling"></span>
|
|||
|
|
|||
|
- `disable` \[ `-afmprs` \] `name` ...
|
|||
|
`’?’`
|
|||
|
The pattern character `?` wherever it occurs, including when
|
|||
|
preceding a parenthesis with `KSH_GLOB`.
|
|||
|
|
|||
|
- `’*’`
|
|||
|
The pattern character `*` wherever it occurs, including recursive
|
|||
|
globbing and when preceding a parenthesis with `KSH_GLOB`.
|
|||
|
|
|||
|
- `’[’`
|
|||
|
Character classes.
|
|||
|
|
|||
|
- `’<’` (`NO_SH_GLOB`)
|
|||
|
Numeric ranges.
|
|||
|
|
|||
|
- `’|’` (`NO_SH_GLOB`)
|
|||
|
Alternation in grouped patterns, case statements, or KSH\_GLOB
|
|||
|
parenthesised expressions.
|
|||
|
|
|||
|
- `’(’` (`NO_SH_GLOB`)
|
|||
|
Grouping using single parentheses. Disabling this does not disable
|
|||
|
the use of parentheses for `KSH_GLOB` where they are introduced by a
|
|||
|
special character, nor for glob qualifiers (use ‘`setopt
|
|||
|
NO_BARE_GLOB_QUAL`’ to disable glob qualifiers that use parentheses
|
|||
|
only).
|
|||
|
|
|||
|
- `’~’` (`EXTENDED_GLOB`)
|
|||
|
Exclusion in the form `A``~``B`.
|
|||
|
|
|||
|
- `’^’` (`EXTENDED_GLOB`)
|
|||
|
Exclusion in the form `A``^``B`.
|
|||
|
|
|||
|
- `’#’` (`EXTENDED_GLOB`)
|
|||
|
The pattern character `#` wherever it occurs, both for repetition of
|
|||
|
a previous pattern and for indicating globbing flags.
|
|||
|
|
|||
|
- `’?(’` (`KSH_GLOB`)
|
|||
|
The grouping form `?(``...``)`. Note this is also disabled if `’?’`
|
|||
|
is disabled.
|
|||
|
|
|||
|
- `’*(’` (`KSH_GLOB`)
|
|||
|
The grouping form `*(``...``)`. Note this is also disabled if `’*’`
|
|||
|
is disabled.
|
|||
|
|
|||
|
- `’+(’` (`KSH_GLOB`)
|
|||
|
The grouping form `+(``...``)`.
|
|||
|
|
|||
|
- `’!(’` (`KSH_GLOB`)
|
|||
|
The grouping form `!(``...``)`.
|
|||
|
|
|||
|
- `’@(’` (`KSH_GLOB`)
|
|||
|
The grouping form `@(``...``)`.
|
|||
|
|
|||
|
<span id="index-disown"></span>
|
|||
|
<span id="index-jobs_002c-disowning-1"></span>
|
|||
|
|
|||
|
`disown` \[ `job` ... \]
|
|||
|
|
|||
|
`job` ... `&|`
|
|||
|
|
|||
|
`job` ... `&!`
|
|||
|
|
|||
|
no longer report their status, and will not complain if you try to exit
|
|||
|
an interactive shell with them running or stopped. If no `job` is
|
|||
|
specified, disown the current job.
|
|||
|
|
|||
|
If the `job`s are currently stopped and the `AUTO_CONTINUE` option is
|
|||
|
not set, a warning is printed containing information about how to make
|
|||
|
them running after they have been disowned. If one of the latter two
|
|||
|
forms is used, the `job`s will automatically be made running,
|
|||
|
independent of the setting of the `AUTO_CONTINUE` option.
|
|||
|
|
|||
|
<span id="index-echo"></span>
|
|||
|
|
|||
|
`echo` \[ `-neE` \] \[ `arg` ... \]
|
|||
|
|
|||
|
Write each `arg` on the standard output, with a space separating each
|
|||
|
one. If the `-n` flag is not present, print a newline at the end. `echo`
|
|||
|
recognizes the following escape sequences:
|
|||
|
|
|||
|
- `\a`
|
|||
|
bell character
|
|||
|
|
|||
|
- `\b`
|
|||
|
backspace
|
|||
|
|
|||
|
- `\c`
|
|||
|
suppress subsequent characters and final newline
|
|||
|
|
|||
|
- `\e`
|
|||
|
escape
|
|||
|
|
|||
|
- `\f`
|
|||
|
form feed
|
|||
|
|
|||
|
- `\n`
|
|||
|
linefeed (newline)
|
|||
|
|
|||
|
- `\r`
|
|||
|
carriage return
|
|||
|
|
|||
|
- `\t`
|
|||
|
horizontal tab
|
|||
|
|
|||
|
- `\v`
|
|||
|
vertical tab
|
|||
|
|
|||
|
- `\\`
|
|||
|
backslash
|
|||
|
|
|||
|
- `\0``NNN`
|
|||
|
character code in octal
|
|||
|
|
|||
|
- `\x``NN`
|
|||
|
character code in hexadecimal
|
|||
|
|
|||
|
- `\u``NNNN`
|
|||
|
unicode character code in hexadecimal
|
|||
|
|
|||
|
- `\U``NNNNNNNN`
|
|||
|
unicode character code in hexadecimal
|
|||
|
|
|||
|
<span id="index-BSD_005fECHO_002c-use-of"></span>
|
|||
|
|
|||
|
The `-E` flag, or the `BSD_ECHO` option, can be used to disable these
|
|||
|
escape sequences. In the latter case, `-e` flag can be used to enable
|
|||
|
them.
|
|||
|
|
|||
|
Note that for standards compliance a double dash does not terminate
|
|||
|
option processing; instead, it is printed directly. However, a single
|
|||
|
dash does terminate option processing, so the first dash, possibly
|
|||
|
following options, is not printed, but everything following it is
|
|||
|
printed as an argument. The single dash behaviour is different `printf`,
|
|||
|
and for a more controllable way of printing text within zsh, see
|
|||
|
`print`.
|
|||
|
|
|||
|
`echotc`
|
|||
|
|
|||
|
See [The zsh/termcap
|
|||
|
Module](Zsh-Modules.html#The-zsh_002ftermcap-Module).
|
|||
|
|
|||
|
`echoti`
|
|||
|
|
|||
|
See [The zsh/terminfo
|
|||
|
Module](Zsh-Modules.html#The-zsh_002fterminfo-Module).
|
|||
|
|
|||
|
<span id="index-emulate"></span>
|
|||
|
<span id="index-compatibility_002c-sh"></span>
|
|||
|
<span id="index-compatibility_002c-ksh"></span>
|
|||
|
<span id="index-compatibility_002c-csh"></span>
|
|||
|
<span id="index-sh_002c-compatibility"></span>
|
|||
|
<span id="index-ksh_002c-compatibility"></span>
|
|||
|
<span id="index-csh_002c-compatibility"></span>
|
|||
|
|
|||
|
`emulate` \[ `-lLR` \] \[ {`zsh`|`sh`|`ksh`|`csh`} \[ `flags` ... \] \]
|
|||
|
|
|||
|
Without any argument print current emulation mode.
|
|||
|
|
|||
|
With single argument set up zsh options to emulate the specified shell
|
|||
|
as much as possible. csh will never be fully emulated. If the argument
|
|||
|
is not one of the shells listed above, `zsh` will be used as a default;
|
|||
|
more precisely, the tests performed on the argument are the same as
|
|||
|
those used to determine the emulation at startup based on the shell
|
|||
|
name, see [Compatibility](Invocation.html#Compatibility) . In addition
|
|||
|
to setting shell options, the command also restores the pristine state
|
|||
|
of pattern enables, as if all patterns had been enabled using `enable
|
|||
|
-p`.
|
|||
|
|
|||
|
If the `emulate` command occurs inside a function that has been marked
|
|||
|
for execution tracing with `functions -t` then the `xtrace` option will
|
|||
|
be turned on regardless of emulation mode or other options. Note that
|
|||
|
code executed inside the function by the `.`, `source`, or `eval`
|
|||
|
commands is not considered to be running directly from the function,
|
|||
|
hence does not provoke this behaviour.
|
|||
|
|
|||
|
are reset to their default value corresponding to the specified
|
|||
|
emulation mode, except for certain options describing the interactive
|
|||
|
environment; otherwise, only those options likely to cause portability
|
|||
|
problems in scripts and functions are altered. If the `-L` switch is
|
|||
|
given, the options `LOCAL_OPTIONS`, `LOCAL_PATTERNS` and `LOCAL_TRAPS`
|
|||
|
will be set as well, causing the effects of the `emulate` command and
|
|||
|
any `setopt`, `disable -p` or `enable -p`, and `trap` commands to be
|
|||
|
local to the immediately surrounding shell function, if any; normally
|
|||
|
these options are turned off in all emulation modes except `ksh`. The
|
|||
|
`-L` switch is mutually exclusive with the use of `-c` in `flags`.
|
|||
|
|
|||
|
If there is a single argument and the `-l` switch is given, the options
|
|||
|
that would be set or unset (the latter indicated with the prefix ‘`no`’)
|
|||
|
are listed. `-l` can be combined with `-L` or `-R` and the list will be
|
|||
|
modified in the appropriate way. Note the list does not depend on the
|
|||
|
current setting of options, i.e. it includes all options that may in
|
|||
|
principle change, not just those that would actually change.
|
|||
|
|
|||
|
The `flags` may be any of the invocation-time flags described in
|
|||
|
[Invocation](Invocation.html#Invocation), except that ‘`-o EMACS`’ and
|
|||
|
‘`-o VI`’ may not be used. Flags such as ‘`+r`’/‘`+o RESTRICTED`’ may
|
|||
|
be prohibited in some circumstances.
|
|||
|
|
|||
|
If `-c` `arg` appears in `flags`, `arg` is evaluated while the requested
|
|||
|
emulation is temporarily in effect. In this case the emulation mode and
|
|||
|
all options are restored to their previous values before `emulate`
|
|||
|
returns. The `-R` switch may precede the name of the shell to emulate;
|
|||
|
note this has a meaning distinct from including `-R` in `flags`.
|
|||
|
|
|||
|
Use of `-c` enables ‘sticky’ emulation mode for functions defined within
|
|||
|
the evaluated expression: the emulation mode is associated thereafter
|
|||
|
with the function so that whenever the function is executed the
|
|||
|
emulation (respecting the `-R` switch, if present) and all options are
|
|||
|
set (and pattern disables cleared) before entry to the function, and the
|
|||
|
state is restored after exit. If the function is called when the sticky
|
|||
|
emulation is already in effect, either within an ‘`emulate` `shell`
|
|||
|
`-c`’ expression or within another function with the same sticky
|
|||
|
emulation, entry and exit from the function do not cause options to be
|
|||
|
altered (except due to standard processing such as the `LOCAL_OPTIONS`
|
|||
|
option). This also applies to functions marked for autoload within the
|
|||
|
sticky emulation; the appropriate set of options will be applied at the
|
|||
|
point the function is loaded as well as when it is run.
|
|||
|
|
|||
|
For example:
|
|||
|
|
|||
|
<div class="example">
|
|||
|
|
|||
|
``` example
|
|||
|
emulate sh -c 'fni() { setopt cshnullglob; }
|
|||
|
fno() { fni; }'
|
|||
|
fno
|
|||
|
```
|
|||
|
|
|||
|
</div>
|
|||
|
|
|||
|
The two functions `fni` and `fno` are defined with sticky `sh`
|
|||
|
emulation. `fno` is then executed, causing options associated with
|
|||
|
emulations to be set to their values in `sh`. `fno` then calls `fni`;
|
|||
|
because `fni` is also marked for sticky `sh` emulation, no option
|
|||
|
changes take place on entry to or exit from it. Hence the option
|
|||
|
`cshnullglob`, turned off by `sh` emulation, will be turned on within
|
|||
|
`fni` and remain on return to `fno`. On exit from `fno`, the emulation
|
|||
|
mode and all options will be restored to the state they were in before
|
|||
|
entry to the temporary emulation.
|
|||
|
|
|||
|
The documentation above is typically sufficient for the intended
|
|||
|
environment. More detailed rules follow.
|
|||
|
|
|||
|
- 1\.
|
|||
|
The sticky emulation environment provided by ‘`emulate` `shell`
|
|||
|
`-c`’ is identical to that provided by entry to a function marked
|
|||
|
for sticky emulation as a consequence of being defined in such an
|
|||
|
environment. Hence, for example, the sticky emulation is inherited
|
|||
|
by subfunctions defined within functions with sticky emulation.
|
|||
|
|
|||
|
- 2\.
|
|||
|
No change of options takes place on entry to or exit from functions
|
|||
|
that are not marked for sticky emulation, other than those that
|
|||
|
would normally take place, even if those functions are called within
|
|||
|
sticky emulation.
|
|||
|
|
|||
|
- 3\.
|
|||
|
No special handling is provided for functions marked for `autoload`
|
|||
|
nor for functions present in wordcode created by the `zcompile`
|
|||
|
command.
|
|||
|
|
|||
|
- 4\.
|
|||
|
The presence or absence of the `-R` switch to `emulate` corresponds
|
|||
|
to different sticky emulation modes, so for example ‘`emulate sh
|
|||
|
-c`’, ‘`emulate -R sh -c`’ and ‘`emulate csh -c`’ are treated as
|
|||
|
three distinct sticky emulations.
|
|||
|
|
|||
|
- 5\.
|
|||
|
Difference in shell options supplied in addition to the basic
|
|||
|
emulation also mean the sticky emulations are different, so for
|
|||
|
example ‘`emulate zsh -c`’ and ‘`emulate zsh -o cbases -c`’ are
|
|||
|
treated as distinct sticky emulations.
|
|||
|
|
|||
|
<span id="index-enable"></span>
|
|||
|
<span id="index-enabling-commands"></span>
|
|||
|
<span id="index-commands_002c-enabling"></span>
|
|||
|
|
|||
|
`enable` \[ `-afmprs` \] `name` ...
|
|||
|
|
|||
|
earlier with `disable`. The default is to enable builtin commands. The
|
|||
|
`-a` option causes `enable` to act on regular or global aliases. The
|
|||
|
`-s` option causes `enable` to act on suffix aliases. The `-f` option
|
|||
|
causes `enable` to act on shell functions. The `-r` option causes
|
|||
|
`enable` to act on reserved words. Without arguments printed. With the
|
|||
|
`-m` flag the arguments are taken as patterns disabled with the
|
|||
|
`disable` builtin command.
|
|||
|
|
|||
|
`enable -p` reenables patterns disabled with `disable -p`. Note that it
|
|||
|
does not override globbing options; for example, ‘`enable -p "~"`’ does
|
|||
|
not cause the pattern character `~` to be active unless the
|
|||
|
`EXTENDED_GLOB` option is also set. To enable all possible patterns (so
|
|||
|
that they may be individually disabled with `disable -p`), use ‘`setopt
|
|||
|
EXTENDED_GLOB KSH_GLOB NO_SH_GLOB`’.
|
|||
|
|
|||
|
<span id="index-eval"></span>
|
|||
|
<span id="index-evaluating-arguments-as-commands"></span>
|
|||
|
|
|||
|
`eval` \[ `arg` ... \]
|
|||
|
|
|||
|
Read the arguments as input to the shell and execute the resulting
|
|||
|
command(s) in the current shell process. The return status is the same
|
|||
|
as if the commands had been executed directly by the shell; if there are
|
|||
|
no `args` or they contain no commands (i.e. are an empty string or
|
|||
|
whitespace) the return status is zero.
|
|||
|
|
|||
|
`exec` \[ `-cl` \] \[ `-a` `argv0` \] \[ `command` \[ `arg` ... \] \]
|
|||
|
|
|||
|
Replace the current shell with `command` rather than forking. If
|
|||
|
`command` is a shell builtin command or a shell function, the shell
|
|||
|
executes it, and exits when the command is complete.
|
|||
|
|
|||
|
With `-c` clear the environment; with `-l` prepend `-` to the `argv[0]`
|
|||
|
string of the command executed (to simulate a login shell); with `-a`
|
|||
|
`argv0` set the `argv[0]` string of the command executed. See
|
|||
|
[Precommand Modifiers](Shell-Grammar.html#Precommand-Modifiers).
|
|||
|
|
|||
|
If the option `POSIX_BUILTINS` is set, `command` is never interpreted as
|
|||
|
a shell builtin command or shell function. This means further precommand
|
|||
|
modifiers such as `builtin` and `noglob` are also not interpreted within
|
|||
|
the shell. Hence `command` is always found by searching the command
|
|||
|
path.
|
|||
|
|
|||
|
<span id="index-redirection_002c-current-shell_0027s-I_002fO"></span>
|
|||
|
|
|||
|
If `command` is omitted but any redirections are specified, then the
|
|||
|
redirections will take effect in the current shell.
|
|||
|
|
|||
|
<span id="index-exit"></span>
|
|||
|
|
|||
|
`exit` \[ `n` \]
|
|||
|
|
|||
|
Exit the shell with the exit status specified by an arithmetic
|
|||
|
expression `n`; if none is specified, use the exit status from the last
|
|||
|
command executed. <span id="index-IGNORE_005fEOF_002c-use-of"></span> An
|
|||
|
EOF condition will also cause the shell to exit, unless the `IGNORE_EOF`
|
|||
|
option is set.
|
|||
|
|
|||
|
See notes at the end of [Jobs &
|
|||
|
Signals](Jobs-_0026-Signals.html#Jobs-_0026-Signals) for some possibly
|
|||
|
unexpected interactions of the `exit` command with jobs.
|
|||
|
|
|||
|
<span id="index-export-1"></span>
|
|||
|
|
|||
|
`export` \[ `name`\[`=``value`\] ... \]
|
|||
|
|
|||
|
The specified `name`s are marked for automatic export to the environment
|
|||
|
of subsequently executed commands. Equivalent to `typeset -gx`. If a
|
|||
|
parameter specified does not already exist, it is created in the global
|
|||
|
scope.
|
|||
|
|
|||
|
<span id="index-false"></span>
|
|||
|
<span id="index-doing-nothing_002c-unsuccessfully"></span>
|
|||
|
|
|||
|
`false` \[ `arg` ... \]
|
|||
|
|
|||
|
Do nothing and return an exit status of 1.
|
|||
|
|
|||
|
<span id="index-fc"></span>
|
|||
|
<span id="index-history_002c-editing"></span>
|
|||
|
<span id="index-editing-history"></span>
|
|||
|
|
|||
|
`fc` \[ `-e` `ename` \] \[ `-LI` \] \[ `-m` `match` \] \[ `old``=``new`
|
|||
|
... \] \[ `first` \[ `last` \] \]
|
|||
|
|
|||
|
` fc -l `\[ `-LI` \] \[ `-nrdfEiD` \] \[ `-t` `timefmt` \] \[ `-m`
|
|||
|
`match` \]
|
|||
|
|
|||
|
` `\[ `old``=``new` ... \] \[ `first` \[ `last` \] \]
|
|||
|
|
|||
|
` fc -p `\[ `-a` \] \[ `filename` \[ `histsize` \[ `savehistsize` \] \]
|
|||
|
\]
|
|||
|
|
|||
|
`fc` `-P`
|
|||
|
|
|||
|
`fc` `-ARWI` \[ `filename` \]
|
|||
|
|
|||
|
The `fc` command controls the interactive history mechanism. Note that
|
|||
|
reading and writing of history options is only performed if the shell is
|
|||
|
interactive. Usually this is detected automatically, but it can be
|
|||
|
forced by setting the `interactive` option when starting the shell.
|
|||
|
|
|||
|
The first two forms of this command select a range of events from
|
|||
|
`first` to `last` from the history list. The arguments `first` and
|
|||
|
`last` may be specified as a number or as a string. A negative number is
|
|||
|
used as an offset to the current history event number. A string
|
|||
|
specifies the most recent event beginning with the given string. All
|
|||
|
substitutions `old``=``new`, if any, are then performed on the text of
|
|||
|
the events.
|
|||
|
|
|||
|
In addition to the number range,
|
|||
|
|
|||
|
- `-I`
|
|||
|
restricts to only internal events (not from `$HISTFILE`)
|
|||
|
|
|||
|
- `-L`
|
|||
|
restricts to only local events (not from other shells, see
|
|||
|
`SHARE_HISTORY` in [Description of
|
|||
|
Options](Options.html#Description-of-Options) – note that
|
|||
|
`$HISTFILE` is considered local when read at startup)
|
|||
|
|
|||
|
- `-m`
|
|||
|
takes the first argument as a pattern (should be quoted) and only
|
|||
|
the history events matching this pattern are considered
|
|||
|
|
|||
|
If `first` is not specified, it will be set to -1 (the most recent
|
|||
|
event), or to -16 if the `-l` flag is given. If `last` is not specified,
|
|||
|
it will be set to `first`, or to -1 if the `-l` flag is given. However,
|
|||
|
if the current event has added entries to the history with ‘`print -s`’
|
|||
|
or ‘`fc -R`’, then the default `last` for `-l` includes all new history
|
|||
|
entries since the current event began.
|
|||
|
|
|||
|
When the `-l` flag is given, the resulting events are listed on standard
|
|||
|
output. Otherwise the editor program specified by `-e` `ename` is
|
|||
|
invoked on a file containing these history events. If `-e` is not given,
|
|||
|
the value of the parameter `FCEDIT` is used; if that is not set the
|
|||
|
value of the parameter `EDITOR` is used; if that is not set a builtin
|
|||
|
default, usually ‘`vi`’ is used. If `ename` is ‘`-`’, no editor is
|
|||
|
invoked. When editing is complete, the edited command is executed.
|
|||
|
|
|||
|
The flag `-r` reverses the order of the events and the flag `-n`
|
|||
|
suppresses event numbers when listing.
|
|||
|
|
|||
|
Also when listing,
|
|||
|
|
|||
|
- `-d`
|
|||
|
prints timestamps for each event
|
|||
|
|
|||
|
- `-f`
|
|||
|
prints full time-date stamps in the US ‘`MM``/``DD``/``YY`
|
|||
|
`hh``:``mm`’ format
|
|||
|
|
|||
|
- `-E`
|
|||
|
prints full time-date stamps in the European ‘`dd``.``mm``.``yyyy`
|
|||
|
`hh``:``mm`’ format
|
|||
|
|
|||
|
- `-i`
|
|||
|
prints full time-date stamps in ISO8601 ‘`yyyy``-``mm``-``dd`
|
|||
|
`hh``:``mm`’ format
|
|||
|
|
|||
|
- `-t` `fmt`
|
|||
|
prints time and date stamps in the given format; `fmt` is formatted
|
|||
|
with the strftime function with the zsh extensions described for the
|
|||
|
`%D{``string``}` prompt format in [Prompt
|
|||
|
Expansion](Prompt-Expansion.html#Prompt-Expansion). The resulting
|
|||
|
formatted string must be no more than 256 characters or will not be
|
|||
|
printed
|
|||
|
|
|||
|
- `-D`
|
|||
|
prints elapsed times; may be combined with one of the options above
|
|||
|
|
|||
|
<span id="index-history_002c-stack"></span>
|
|||
|
<span id="index-stack_002c-history"></span>
|
|||
|
|
|||
|
‘`fc -p`’ pushes the current history list onto a stack and switches to a
|
|||
|
new history list. If the `-a` option is also specified, this history
|
|||
|
list will be automatically popped when the current function scope is
|
|||
|
exited, which is a much better solution than creating a trap function to
|
|||
|
call ‘`fc -P`’ manually. If no arguments are specified, the history list
|
|||
|
is left empty, `$HISTFILE` is unset, and `$HISTSIZE` & `$SAVEHIST` are
|
|||
|
set to their default values. If one argument is given, `$HISTFILE` is
|
|||
|
set to that filename, `$HISTSIZE` & `$SAVEHIST` are left unchanged, and
|
|||
|
the history file is read in (if it exists) to initialize the new list.
|
|||
|
If a second argument is specified, `$HISTSIZE` & `$SAVEHIST` are instead
|
|||
|
set to the single specified numeric value. Finally, if a third argument
|
|||
|
is specified, `$SAVEHIST` is set to a separate value from `$HISTSIZE`.
|
|||
|
You are free to change these environment values for the new history list
|
|||
|
however you desire in order to manipulate the new history list.
|
|||
|
|
|||
|
‘`fc -P`’ pops the history list back to an older list saved by ‘`fc
|
|||
|
-p`’. The current list is saved to its `$HISTFILE` before it is
|
|||
|
destroyed (assuming that `$HISTFILE` and `$SAVEHIST` are set
|
|||
|
appropriately, of course). The values of `$HISTFILE`, `$HISTSIZE`, and
|
|||
|
`$SAVEHIST` are restored to the values they had when ‘`fc -p`’ was
|
|||
|
called. Note that this restoration can conflict with making these
|
|||
|
variables "local", so your best bet is to avoid local declarations for
|
|||
|
these variables in functions that use ‘`fc -p`’. The one other
|
|||
|
guaranteed-safe combination is declaring these variables to be local at
|
|||
|
the top of your function and using the automatic option (`-a`) with ‘`fc
|
|||
|
-p`’. Finally, note that it is legal to manually pop a push marked for
|
|||
|
automatic popping if you need to do so before the function exits.
|
|||
|
|
|||
|
<span id="index-history_002c-file"></span>
|
|||
|
<span id="index-file_002c-history"></span>
|
|||
|
|
|||
|
‘`fc -R`’ reads the history from the given file, ‘`fc -W`’ writes the
|
|||
|
history out to the given file, and ‘`fc -A`’ appends the history out to
|
|||
|
the given file. If no filename is specified, the `$HISTFILE` is assumed.
|
|||
|
If the `-I` option is added to `-R`, only those events that are not
|
|||
|
already contained within the internal history list are added. If the
|
|||
|
`-I` option is added to `-A` or `-W`, only those events that are new
|
|||
|
since last incremental append/write to the history file are
|
|||
|
appended/written. In any case, the created file will have no more than
|
|||
|
`$SAVEHIST` entries.
|
|||
|
|
|||
|
<span id="index-fg"></span>
|
|||
|
<span id="index-jobs_002c-foregrounding"></span>
|
|||
|
<span id="index-jobs_002c-resuming"></span>
|
|||
|
|
|||
|
`fg` \[ `job` ... \]
|
|||
|
|
|||
|
`job` ...
|
|||
|
|
|||
|
Bring each specified `job` in turn to the foreground. If no `job` is
|
|||
|
specified, resume the current job.
|
|||
|
|
|||
|
<span id="index-float"></span>
|
|||
|
|
|||
|
`float` \[ {`+`|`-`}`Hghlprtux` \] \[ {`+`|`-`}`EFLRZ` \[ `n` \] \] \[
|
|||
|
`name`\[`=``value`\] ... \]
|
|||
|
|
|||
|
Equivalent to `typeset -E`, except that options irrelevant to floating
|
|||
|
point numbers are not permitted.
|
|||
|
|
|||
|
<span id="index-functions-1"></span>
|
|||
|
|
|||
|
`functions` \[ {`+`|`-`}`UkmtTuWz` \] \[ `-x` `num` \] \[ `name` ... \]
|
|||
|
|
|||
|
`functions -c` `oldfn` `newfn`
|
|||
|
|
|||
|
`functions -M` \[`-s`\] `mathfn` \[ `min` \[ `max` \[ `shellfn` \] \] \]
|
|||
|
|
|||
|
`functions -M` \[ `-m` `pattern` ... \]
|
|||
|
|
|||
|
`functions +M` \[ `-m` \] `mathfn` ...
|
|||
|
|
|||
|
Equivalent to `typeset -f`, with the exception of the `-c`, `-x`, `-M`
|
|||
|
and `-W` options. For `functions -u` and `functions -U`, see `autoload`,
|
|||
|
which provides additional options.
|
|||
|
|
|||
|
The `-x` option indicates that any functions output will have each
|
|||
|
leading tab for indentation, added by the shell to show syntactic
|
|||
|
structure, expanded to the given number `num` of spaces. `num` can also
|
|||
|
be 0 to suppress all indentation.
|
|||
|
|
|||
|
The `-W` option turns on the option `WARN_NESTED_VAR` for the named
|
|||
|
function or functions only. The option is turned off at the start of
|
|||
|
nested functions (apart from anonoymous functions) unless the called
|
|||
|
function also has the `-W` attribute.
|
|||
|
|
|||
|
The `-c` option causes `oldfn` to be copied to `newfn`. The copy is
|
|||
|
efficiently handled internally by reference counting. If `oldfn` was
|
|||
|
marked for autoload it is first loaded and if this fails the copy fails.
|
|||
|
Either function may subsequently be redefined without affecting the
|
|||
|
other. A typical idiom is that `oldfn` is the name of a library shell
|
|||
|
function which is then redefined to call `newfn`, thereby installing a
|
|||
|
modified version of the function.
|
|||
|
|
|||
|
Use of the `-M` option may not be combined with any of the options
|
|||
|
handled by `typeset -f`.
|
|||
|
|
|||
|
`functions -M` `mathfn` defines `mathfn` as the name of a mathematical
|
|||
|
function recognised in all forms of arithmetical expressions; see
|
|||
|
[Arithmetic
|
|||
|
Evaluation](Arithmetic-Evaluation.html#Arithmetic-Evaluation). By
|
|||
|
default `mathfn` may take any number of comma-separated arguments. If
|
|||
|
`min` is given, it must have exactly `min` args; if `min` and `max` are
|
|||
|
both given, it must have at least `min` and at most `max` args. `max`
|
|||
|
may be -1 to indicate that there is no upper limit.
|
|||
|
|
|||
|
By default the function is implemented by a shell function of the same
|
|||
|
name; if `shellfn` is specified it gives the name of the corresponding
|
|||
|
shell function while `mathfn` remains the name used in arithmetical
|
|||
|
expressions. The name of the function in `$0` is `mathfn` (not `shellfn`
|
|||
|
as would usually be the case), provided the option `FUNCTION_ARGZERO` is
|
|||
|
in effect. The positional parameters in the shell function correspond to
|
|||
|
the arguments of the mathematical function call. The result of the last
|
|||
|
arithmetical expression evaluated inside the shell function (even if it
|
|||
|
is a form that normally only returns a status) gives the result of the
|
|||
|
mathematical function.
|
|||
|
|
|||
|
If the additional option `-s` is given to `functions -M`, the argument
|
|||
|
to the function is a single string: anything between the opening and
|
|||
|
matching closing parenthesis is passed to the function as a single
|
|||
|
argument, even if it includes commas or white space. The minimum and
|
|||
|
maximum argument specifiers must therefore be 1 if given. An empty
|
|||
|
argument list is passed as a zero-length string.
|
|||
|
|
|||
|
`functions -M` with no arguments lists all such user-defined functions
|
|||
|
in the same form as a definition. With the additional option `-m` and a
|
|||
|
list of arguments, all functions whose `mathfn` matches one of the
|
|||
|
pattern arguments are listed.
|
|||
|
|
|||
|
`function +M` removes the list of mathematical functions; with the
|
|||
|
additional option `-m` the arguments are treated as patterns and all
|
|||
|
functions whose `mathfn` matches the pattern are removed. Note that the
|
|||
|
shell function implementing the behaviour is not removed (regardless of
|
|||
|
whether its name coincides with `mathfn`).
|
|||
|
|
|||
|
For example, the following prints the cube of 3:
|
|||
|
|
|||
|
<div class="example">
|
|||
|
|
|||
|
``` example
|
|||
|
zmath_cube() { (( $1 * $1 * $1 )) }
|
|||
|
functions -M cube 1 1 zmath_cube
|
|||
|
print $(( cube(3) ))
|
|||
|
```
|
|||
|
|
|||
|
</div>
|
|||
|
|
|||
|
The following string function takes a single argument, including the
|
|||
|
commas, so prints 11:
|
|||
|
|
|||
|
<div class="example">
|
|||
|
|
|||
|
``` example
|
|||
|
stringfn() { (( $#1 )) }
|
|||
|
functions -Ms stringfn
|
|||
|
print $(( stringfn(foo,bar,rod) ))
|
|||
|
```
|
|||
|
|
|||
|
</div>
|
|||
|
|
|||
|
`getcap`
|
|||
|
|
|||
|
See [The zsh/cap Module](Zsh-Modules.html#The-zsh_002fcap-Module).
|
|||
|
|
|||
|
<span id="index-getln"></span>
|
|||
|
<span id="index-line_002c-reading"></span>
|
|||
|
<span id="index-reading-a-line"></span>
|
|||
|
|
|||
|
`getln` \[ `-AclneE` \] `name` ...
|
|||
|
|
|||
|
Read the top value from the buffer stack and put it in the shell
|
|||
|
parameter `name`. Equivalent to `read -zr`.
|
|||
|
|
|||
|
<span id="index-getopts"></span>
|
|||
|
<span id="index-options_002c-processing"></span>
|
|||
|
|
|||
|
`getopts` `optstring` `name` \[ `arg` ... \]
|
|||
|
|
|||
|
Checks the `arg`s for legal options. If the `arg`s are omitted, use the
|
|||
|
positional parameters. A valid option argument begins with a ‘`+`’ or a
|
|||
|
‘`-`’. An argument not beginning with a ‘`+`’ or a ‘`-`’, or the
|
|||
|
argument ‘`-``-`’, ends the options. Note that a single ‘`-`’ is not
|
|||
|
considered a valid option argument. `optstring` contains the letters
|
|||
|
that `getopts` recognizes. If a letter is followed by a ‘`:`’, that
|
|||
|
option requires an argument. The options can be separated from the
|
|||
|
argument by blanks.
|
|||
|
|
|||
|
Each time it is invoked, `getopts` places the option letter it finds in
|
|||
|
the shell parameter `name`, prepended with a ‘`+`’ when `arg` begins
|
|||
|
with a ‘`+`’. The index of the next `arg` is stored in `OPTIND`. The
|
|||
|
option argument, if any, is stored in `OPTARG`.
|
|||
|
<span id="index-OPTIND_002c-use-of"></span>
|
|||
|
<span id="index-OPTARG_002c-use-of"></span>
|
|||
|
|
|||
|
The first option to be examined may be changed by explicitly assigning
|
|||
|
to `OPTIND`. `OPTIND` has an initial value of `1`, and is normally set
|
|||
|
to `1` upon entry to a shell function and restored upon exit (this is
|
|||
|
disabled by the `POSIX_BUILTINS` option). `OPTARG` is not reset and
|
|||
|
retains its value from the most recent call to `getopts`. If either of
|
|||
|
`OPTIND` or `OPTARG` is explicitly unset, it remains unset, and the
|
|||
|
index or option argument is not stored. The option itself is still
|
|||
|
stored in `name` in this case.
|
|||
|
|
|||
|
A leading ‘`:`’ in `optstring` causes `getopts` to store the letter of
|
|||
|
any invalid option in `OPTARG`, and to set `name` to ‘`?`’ for an
|
|||
|
unknown option and to ‘`:`’ when a required argument is missing.
|
|||
|
Otherwise, `getopts` sets `name` to ‘`?`’ and prints an error message
|
|||
|
when an option is invalid. The exit status is nonzero when there are no
|
|||
|
more options.
|
|||
|
|
|||
|
<span id="index-hash-1"></span>
|
|||
|
|
|||
|
`hash` \[ `-Ldfmrv` \] \[ `name`\[`=``value`\] \] ...
|
|||
|
|
|||
|
`hash` can be used to directly modify the contents of the command
|
|||
|
|
|||
|
A command `name` starting with a `/` is never hashed, whether by
|
|||
|
explicit use of the `hash` command or otherwise. Such a command is
|
|||
|
always found by direct look up in the file system.
|
|||
|
|
|||
|
Given no arguments, and neither the `-r` or `-f` options,
|
|||
|
|
|||
|
It will be subsequently rebuilt in the normal fashion. all the absolute
|
|||
|
directories in the `PATH`, These two options cannot be used with any
|
|||
|
arguments.
|
|||
|
|
|||
|
The `-m` option causes the arguments to be taken as patterns matching
|
|||
|
those patterns are printed. This is the only way to display
|
|||
|
|
|||
|
For each `name` with a corresponding `value`, put ‘`name`’ in whenever
|
|||
|
‘`name`’ is used as a command argument, the shell will try to execute
|
|||
|
the file given by ‘`value`’. that ‘`value`’ may be referred to as
|
|||
|
‘`~``name`’.
|
|||
|
|
|||
|
For each `name` with no checking what the appropriate `value` is in the
|
|||
|
normal manner for
|
|||
|
|
|||
|
added by explicit specification. If has no effect if used with `-f`.
|
|||
|
|
|||
|
the form of a call to hash.
|
|||
|
|
|||
|
<span id="index-history-1"></span>
|
|||
|
|
|||
|
`history`
|
|||
|
|
|||
|
Same as `fc -l`.
|
|||
|
|
|||
|
<span id="index-integer"></span>
|
|||
|
|
|||
|
`integer` \[ {`+`|`-`}`Hghlprtux` \] \[ {`+`|`-`}`LRZi` \[ `n` \] \] \[
|
|||
|
`name`\[`=``value`\] ... \]
|
|||
|
|
|||
|
Equivalent to `typeset -i`, except that options irrelevant to integers
|
|||
|
are not permitted.
|
|||
|
|
|||
|
<span id="index-jobs-1"></span>
|
|||
|
|
|||
|
`jobs` \[ `-dlprs` \] \[ `job` ... \]
|
|||
|
|
|||
|
`jobs -Z` `string`
|
|||
|
|
|||
|
Lists information about each given job, or all jobs if `job` is omitted.
|
|||
|
The `-l` flag lists process IDs, and the `-p` flag lists process groups.
|
|||
|
If the `-r` flag is specified only running jobs will be listed and if
|
|||
|
the `-s` flag is given only stopped jobs are shown. If the `-d` flag is
|
|||
|
given, the directory from which the job was started (which may not be
|
|||
|
the current directory of the job) will also be shown.
|
|||
|
|
|||
|
The `-Z` option replaces the shell’s argument and environment space with
|
|||
|
the given string, truncated if necessary to fit. This will normally be
|
|||
|
visible in `ps` (man page ps(1)) listings. This feature is typically
|
|||
|
used by daemons, to indicate their state.
|
|||
|
|
|||
|
<span id="index-kill"></span> <span id="index-killing-jobs"></span>
|
|||
|
<span id="index-jobs_002c-killing"></span>
|
|||
|
|
|||
|
`kill` \[ `-s` `signal_name` | `-n` `signal_number` | `-``sig` \] `job`
|
|||
|
...
|
|||
|
|
|||
|
`kill` `-l` \[ `sig` ... \]
|
|||
|
|
|||
|
Sends either `SIGTERM` or the specified signal to the given jobs or
|
|||
|
processes. Signals are given by number or by names, with or without the
|
|||
|
‘`SIG`’ prefix. If the signal being sent is not ‘`KILL`’ or ‘`CONT`’,
|
|||
|
then the job will be sent a ‘`CONT`’ signal if it is stopped. The
|
|||
|
argument `job` can be the process ID of a job not in the job list. In
|
|||
|
the second form, `kill -l`, if `sig` is not specified the signal names
|
|||
|
are listed. Otherwise, for each `sig` that is a name, the corresponding
|
|||
|
signal number is listed. For each `sig` that is a signal number or a
|
|||
|
number representing the exit status of a process which was terminated or
|
|||
|
stopped by a signal the name of the signal is printed.
|
|||
|
|
|||
|
On some systems, alternative signal names are allowed for a few signals.
|
|||
|
Typical examples are `SIGCHLD` and `SIGCLD` or `SIGPOLL` and `SIGIO`,
|
|||
|
assuming they correspond to the same signal number. `kill -l` will only
|
|||
|
list the preferred form, however `kill -l` `alt` will show if the
|
|||
|
alternative form corresponds to a signal number. For example, under
|
|||
|
Linux `kill -l IO` and `kill -l POLL` both output 29, hence `kill -IO`
|
|||
|
and `kill -POLL` have the same effect.
|
|||
|
|
|||
|
Many systems will allow process IDs to be negative to kill a process
|
|||
|
group or zero to kill the current process group.
|
|||
|
|
|||
|
<span id="index-let"></span>
|
|||
|
|
|||
|
`let` `arg` ...
|
|||
|
|
|||
|
Evaluate each `arg` as an arithmetic expression. See [Arithmetic
|
|||
|
Evaluation](Arithmetic-Evaluation.html#Arithmetic-Evaluation) for a
|
|||
|
description of arithmetic expressions. The exit status is 0 if the value
|
|||
|
of the last expression is nonzero, 1 if it is zero, and 2 if an error
|
|||
|
occurred.
|
|||
|
|
|||
|
<span id="index-limit"></span> <span id="index-resource-limits"></span>
|
|||
|
<span id="index-limits_002c-resource"></span>
|
|||
|
|
|||
|
`limit` \[ `-hs` \] \[ `resource` \[ `limit` \] \] ...
|
|||
|
|
|||
|
Set or display resource limits. Unless the `-s` flag is given, the limit
|
|||
|
applies only the children of the shell. If `-s` is given without other
|
|||
|
arguments, the resource limits of the current shell is set to the
|
|||
|
previously set resource limits of the children.
|
|||
|
|
|||
|
If `limit` is not specified, print the current limit placed on
|
|||
|
`resource`, otherwise set the limit to the specified value. If the `-h`
|
|||
|
flag is given, use hard limits instead of soft limits. If no `resource`
|
|||
|
is given, print all limits.
|
|||
|
|
|||
|
When looping over multiple resources, the shell will abort immediately
|
|||
|
if it detects a badly formed argument. However, if it fails to set a
|
|||
|
limit for some other reason it will continue trying to set the remaining
|
|||
|
limits.
|
|||
|
|
|||
|
`resource` can be one of:
|
|||
|
|
|||
|
- `addressspace`
|
|||
|
Maximum amount of address space used.
|
|||
|
|
|||
|
- `aiomemorylocked`
|
|||
|
Maximum amount of memory locked in RAM for AIO operations.
|
|||
|
|
|||
|
- `aiooperations`
|
|||
|
Maximum number of AIO operations.
|
|||
|
|
|||
|
- `cachedthreads`
|
|||
|
Maximum number of cached threads.
|
|||
|
|
|||
|
- `coredumpsize`
|
|||
|
Maximum size of a core dump.
|
|||
|
|
|||
|
- `cputime`
|
|||
|
Maximum CPU seconds per process.
|
|||
|
|
|||
|
- `datasize`
|
|||
|
Maximum data size (including stack) for each process.
|
|||
|
|
|||
|
- `descriptors`
|
|||
|
Maximum value for a file descriptor.
|
|||
|
|
|||
|
- `filesize`
|
|||
|
Largest single file allowed.
|
|||
|
|
|||
|
- `kqueues`
|
|||
|
Maximum number of kqueues allocated.
|
|||
|
|
|||
|
- `maxproc`
|
|||
|
Maximum number of processes.
|
|||
|
|
|||
|
- `maxpthreads`
|
|||
|
Maximum number of threads per process.
|
|||
|
|
|||
|
- `memorylocked`
|
|||
|
Maximum amount of memory locked in RAM.
|
|||
|
|
|||
|
- `memoryuse`
|
|||
|
Maximum resident set size.
|
|||
|
|
|||
|
- `msgqueue`
|
|||
|
Maximum number of bytes in POSIX message queues.
|
|||
|
|
|||
|
- `posixlocks`
|
|||
|
Maximum number of POSIX locks per user.
|
|||
|
|
|||
|
- `pseudoterminals`
|
|||
|
Maximum number of pseudo-terminals.
|
|||
|
|
|||
|
- `resident`
|
|||
|
Maximum resident set size.
|
|||
|
|
|||
|
- `sigpending`
|
|||
|
Maximum number of pending signals.
|
|||
|
|
|||
|
- `sockbufsize`
|
|||
|
Maximum size of all socket buffers.
|
|||
|
|
|||
|
- `stacksize`
|
|||
|
Maximum stack size for each process.
|
|||
|
|
|||
|
- `swapsize`
|
|||
|
Maximum amount of swap used.
|
|||
|
|
|||
|
- `vmemorysize`
|
|||
|
Maximum amount of virtual memory.
|
|||
|
|
|||
|
Which of these resource limits are available depends on the system.
|
|||
|
`resource` can be abbreviated to any unambiguous prefix. It can also be
|
|||
|
an integer, which corresponds to the integer defined for the resource by
|
|||
|
the operating system.
|
|||
|
|
|||
|
If argument corresponds to a number which is out of the range of the
|
|||
|
resources configured into the shell, the shell will try to read or write
|
|||
|
the limit anyway, and will report an error if this fails. As the shell
|
|||
|
does not store such resources internally, an attempt to set the limit
|
|||
|
will fail unless the `-s` option is present.
|
|||
|
|
|||
|
`limit` is a number, with an optional scaling factor, as follows:
|
|||
|
|
|||
|
- `n``h`
|
|||
|
hours
|
|||
|
|
|||
|
- `n``k`
|
|||
|
kilobytes (default)
|
|||
|
|
|||
|
- `n``m`
|
|||
|
megabytes or minutes
|
|||
|
|
|||
|
- `n``g`
|
|||
|
gigabytes
|
|||
|
|
|||
|
- \[`mm``:`\]`ss`
|
|||
|
minutes and seconds
|
|||
|
|
|||
|
The `limit` command is not made available by default when the shell
|
|||
|
starts in a mode emulating another shell. It can be made available with
|
|||
|
the command ‘`zmodload -F zsh/rlimits b:limit`’.
|
|||
|
|
|||
|
<span id="index-local"></span>
|
|||
|
|
|||
|
`local` \[ {`+`|`-`}`AHUahlprtux` \] \[ {`+`|`-`}`EFLRZi` \[ `n` \] \]
|
|||
|
\[ `name`\[`=``value`\] ... \]
|
|||
|
|
|||
|
Same as `typeset`, except that the options `-g`, and `-f` are not
|
|||
|
permitted. In this case the `-x` option does not force the use of `-g`,
|
|||
|
i.e. exported variables will be local to functions.
|
|||
|
|
|||
|
<span id="index-log"></span> <span id="index-watch_002c-use-of"></span>
|
|||
|
<span id="index-watching-users"></span>
|
|||
|
<span id="index-users_002c-watching"></span>
|
|||
|
|
|||
|
`log`
|
|||
|
|
|||
|
List all users currently logged in who are affected by the current
|
|||
|
setting of the `watch` parameter.
|
|||
|
|
|||
|
<span id="index-logout"></span>
|
|||
|
|
|||
|
`logout` \[ `n` \]
|
|||
|
|
|||
|
Same as `exit`, except that it only works in a login shell.
|
|||
|
|
|||
|
`noglob` `simple command`
|
|||
|
|
|||
|
See [Precommand Modifiers](Shell-Grammar.html#Precommand-Modifiers).
|
|||
|
|
|||
|
<span id="index-popd"></span>
|
|||
|
|
|||
|
`popd` \[ `-q` \] \[ {`+`|`-`}`n` \]
|
|||
|
|
|||
|
Remove an entry from the directory stack, and perform a `cd` to the new
|
|||
|
top directory. With no argument, the current top entry is removed. An
|
|||
|
argument of the form ‘`+``n`’ identifies a stack entry by counting from
|
|||
|
the left of the list shown by the `dirs` command, starting with zero. An
|
|||
|
argument of the form `-``n` counts from the right.
|
|||
|
<span id="index-PUSHD_005fMINUS_002c-use-of-1"></span> If the
|
|||
|
`PUSHD_MINUS` option is set, the meanings of ‘`+`’ and ‘`-`’ in this
|
|||
|
context are swapped.
|
|||
|
|
|||
|
If the `-q` (quiet) option is specified, the hook function `chpwd` and
|
|||
|
the functions in the array `$chpwd_functions` are not called, and the
|
|||
|
new directory stack is not printed. This is useful for calls to `popd`
|
|||
|
that do not change the environment seen by an interactive user.
|
|||
|
|
|||
|
<span id="index-print"></span>
|
|||
|
|
|||
|
` print `\[ `-abcDilmnNoOpPrsSz` \] \[ `-u` `n` \] \[ `-f` `format` \]
|
|||
|
\[ `-C` `cols` \]
|
|||
|
|
|||
|
` `\[ `-v` `name` \] \[ `-xX` `tabstop` \] \[ `-R` \[ `-en` \]\] \[
|
|||
|
`arg` ... \]
|
|||
|
|
|||
|
With the ‘`-f`’ option the arguments are printed as described by
|
|||
|
`printf`. With no flags or with the flag ‘`-`’, the arguments are
|
|||
|
printed on the standard output as described by `echo`, with the
|
|||
|
following differences: the escape sequence ‘`\M-``x`’ (or ‘`\M``x`’)
|
|||
|
metafies the character `x` (sets the highest bit), ‘`\C-``x`’ (or
|
|||
|
‘`\C``x`’) produces a control character (‘`\C-@`’ and ‘`\C-?`’ give
|
|||
|
the characters NULL and delete), a character code in octal is
|
|||
|
represented by ‘`\``NNN`’ (instead of ‘`\0``NNN`’), and ‘`\E`’ is a
|
|||
|
synonym for ‘`\e`’. Finally, if not in an escape sequence, ‘`\`’ escapes
|
|||
|
the following character and is not printed.
|
|||
|
|
|||
|
- `-a`
|
|||
|
Print arguments with the column incrementing first. Only useful with
|
|||
|
the `-c` and `-C` options.
|
|||
|
|
|||
|
- `-b`
|
|||
|
Recognize all the escape sequences defined for the `bindkey`
|
|||
|
command, see [Zle Builtins](Zsh-Line-Editor.html#Zle-Builtins).
|
|||
|
|
|||
|
- `-c`
|
|||
|
Print the arguments in columns. Unless `-a` is also given, arguments
|
|||
|
are printed with the row incrementing first.
|
|||
|
|
|||
|
- `-C` `cols`
|
|||
|
Print the arguments in `cols` columns. Unless `-a` is also given,
|
|||
|
arguments are printed with the row incrementing first.
|
|||
|
|
|||
|
- `-D`
|
|||
|
Treat the arguments as paths, replacing directory prefixes with `~`
|
|||
|
expressions corresponding to directory names, as appropriate.
|
|||
|
|
|||
|
- `-i`
|
|||
|
If given together with `-o` or `-O`, sorting is performed
|
|||
|
case-independently.
|
|||
|
|
|||
|
- `-l`
|
|||
|
Print the arguments separated by newlines instead of spaces. Note:
|
|||
|
if the list of arguments is empty, `print -l` will still output one
|
|||
|
empty line. To print a possibly-empty list of arguments one per
|
|||
|
line, use `print -C1`, as in ‘`print -rC1 – "$list[@]"`’.
|
|||
|
|
|||
|
- `-m`
|
|||
|
Take the first argument as a pattern (should be quoted), and remove
|
|||
|
it from the argument list together with subsequent arguments that do
|
|||
|
not match this pattern.
|
|||
|
|
|||
|
- `-n`
|
|||
|
Do not add a newline to the output.
|
|||
|
|
|||
|
- `-N`
|
|||
|
Print the arguments separated and terminated by nulls. Again, `print
|
|||
|
-rNC1 – "$list[@]"` is a canonical way to print an arbitrary list as
|
|||
|
null-delimited records.
|
|||
|
|
|||
|
- `-o`
|
|||
|
Print the arguments sorted in ascending order.
|
|||
|
|
|||
|
- `-O`
|
|||
|
Print the arguments sorted in descending order.
|
|||
|
|
|||
|
- `-p`
|
|||
|
Print the arguments to the input of the coprocess.
|
|||
|
|
|||
|
- `-P`
|
|||
|
Perform prompt expansion (see [Prompt
|
|||
|
Expansion](Prompt-Expansion.html#Prompt-Expansion)). In combination
|
|||
|
with ‘`-f`’, prompt escape sequences are parsed only within
|
|||
|
interpolated arguments, not within the format string.
|
|||
|
|
|||
|
- `-r`
|
|||
|
Ignore the escape conventions of `echo`.
|
|||
|
|
|||
|
- `-R`
|
|||
|
Emulate the BSD `echo` command, which does not process escape
|
|||
|
sequences unless the `-e` flag is given. The `-n` flag suppresses
|
|||
|
the trailing newline. Only the `-e` and `-n` flags are recognized
|
|||
|
after `-R`; all other arguments and options are printed.
|
|||
|
|
|||
|
- `-s`
|
|||
|
Place the results in the history list instead of on the standard
|
|||
|
output. Each argument to the `print` command is treated as a single
|
|||
|
word in the history, regardless of its content.
|
|||
|
|
|||
|
- `-S`
|
|||
|
Place the results in the history list instead of on the standard
|
|||
|
output. In this case only a single argument is allowed; it will be
|
|||
|
split into words as if it were a full shell command line. The effect
|
|||
|
is similar to reading the line from a history file with the
|
|||
|
`HIST_LEX_WORDS` option active.
|
|||
|
|
|||
|
- `-u` `n`
|
|||
|
Print the arguments to file descriptor `n`.
|
|||
|
|
|||
|
- `-v` `name`
|
|||
|
Store the printed arguments as the value of the parameter `name`.
|
|||
|
|
|||
|
- `-x` `tab-stop`
|
|||
|
Expand leading tabs on each line of output in the printed string
|
|||
|
assuming a tab stop every `tab-stop` characters. This is appropriate
|
|||
|
for formatting code that may be indented with tabs. Note that
|
|||
|
leading tabs of any argument to print, not just the first, are
|
|||
|
expanded, even if `print` is using spaces to separate arguments (the
|
|||
|
column count is maintained across arguments but may be incorrect on
|
|||
|
output owing to previous unexpanded tabs).
|
|||
|
|
|||
|
The start of the output of each print command is assumed to be
|
|||
|
aligned with a tab stop. Widths of multibyte characters are handled
|
|||
|
if the option `MULTIBYTE` is in effect. This option is ignored if
|
|||
|
other formatting options are in effect, namely column alignment or
|
|||
|
`printf` style, or if output is to a special location such as shell
|
|||
|
history or the command line editor.
|
|||
|
|
|||
|
- `-X` `tab-stop`
|
|||
|
This is similar to `-x`, except that all tabs in the printed string
|
|||
|
are expanded. This is appropriate if tabs in the arguments are
|
|||
|
|
|||
|
- `-z`
|
|||
|
Push the arguments onto the editing buffer stack, separated by
|
|||
|
spaces.
|
|||
|
|
|||
|
If any of ‘`-m`’, ‘`-o`’ or ‘`-O`’ are used in combination with ‘`-f`’
|
|||
|
and there are no arguments (after the removal process in the case of
|
|||
|
‘`-m`’) then nothing is printed.
|
|||
|
|
|||
|
<span id="index-printf"></span>
|
|||
|
|
|||
|
`printf` \[ `-v` `name` \] `format` \[ `arg` ... \]
|
|||
|
|
|||
|
Print the arguments according to the format specification. Formatting
|
|||
|
rules are the same as used in C. The same escape sequences as for `echo`
|
|||
|
are recognised in the format. All C conversion specifications ending in
|
|||
|
one of `csdiouxXeEfgGn` are handled. In addition to this, ‘`%b`’ can be
|
|||
|
used instead of ‘`%s`’ to cause escape sequences in the argument to be
|
|||
|
recognised and ‘`%q`’ can be used to quote the argument in such a way
|
|||
|
that allows it to be reused as shell input. With the numeric format
|
|||
|
specifiers, if the corresponding argument starts with a quote character,
|
|||
|
the numeric value of the following character is used as the number to
|
|||
|
print; otherwise the argument is evaluated as an arithmetic expression.
|
|||
|
See [Arithmetic
|
|||
|
Evaluation](Arithmetic-Evaluation.html#Arithmetic-Evaluation) for a
|
|||
|
description of arithmetic expressions. With ‘`%n`’, the corresponding
|
|||
|
argument is taken as an identifier which is created as an integer
|
|||
|
parameter.
|
|||
|
|
|||
|
Normally, conversion specifications are applied to each argument in
|
|||
|
order but they can explicitly specify the `n`th argument is to be used
|
|||
|
by replacing ‘`%`’ by ‘`%``n``$`’ and ‘`*`’ by ‘`*``n``$`’. It is
|
|||
|
recommended that you do not mix references of this explicit style with
|
|||
|
the normal style and the handling of such mixed styles may be subject to
|
|||
|
future change.
|
|||
|
|
|||
|
If arguments remain unused after formatting, the format string is reused
|
|||
|
until all arguments have been consumed. With the `print` builtin, this
|
|||
|
can be suppressed by using the `-r` option. If more arguments are
|
|||
|
required by the format than have been specified, the behaviour is as if
|
|||
|
zero or an empty string had been specified as the argument.
|
|||
|
|
|||
|
The `-v` option causes the output to be stored as the value of the
|
|||
|
parameter `name`, instead of printed. If `name` is an array and the
|
|||
|
format string is reused when consuming arguments then one array element
|
|||
|
will be used for each use of the format string.
|
|||
|
|
|||
|
<span id="index-pushd"></span>
|
|||
|
<span id="index-PUSHD_005fTO_005fHOME_002c-use-of"></span>
|
|||
|
<span id="index-PUSHD_005fMINUS_002c-use-of-2"></span>
|
|||
|
<span id="index-CDABLE_005fVARS_002c-use-of"></span>
|
|||
|
<span id="index-PUSHD_005fSILENT_002c-use-of"></span>
|
|||
|
|
|||
|
`pushd` \[ `-qsLP` \] \[ `arg` \]
|
|||
|
|
|||
|
`pushd` \[ `-qsLP` \] `old` `new`
|
|||
|
|
|||
|
`pushd` \[ `-qsLP` \] {`+`|`-`}`n`
|
|||
|
|
|||
|
Change the current directory, and push the old current directory onto
|
|||
|
the directory stack. In the first form, change the current directory to
|
|||
|
`arg`. If `arg` is not specified, change to the second directory on the
|
|||
|
stack (that is, exchange the top two entries), or change to `$HOME` if
|
|||
|
the `PUSHD_TO_HOME` option is set or if there is only one entry on the
|
|||
|
stack. Otherwise, `arg` is interpreted as it would be by `cd`. The
|
|||
|
meaning of `old` and `new` in the second form is also the same as for
|
|||
|
`cd`.
|
|||
|
|
|||
|
The third form of `pushd` changes directory by rotating the directory
|
|||
|
list. An argument of the form ‘`+``n`’ identifies a stack entry by
|
|||
|
counting from the left of the list shown by the `dirs` command, starting
|
|||
|
with zero. An argument of the form ‘`-``n`’ counts from the right. If
|
|||
|
the `PUSHD_MINUS` option is set, the meanings of ‘`+`’ and ‘`-`’ in this
|
|||
|
context are swapped.
|
|||
|
|
|||
|
If the `-q` (quiet) option is specified, the hook function `chpwd` and
|
|||
|
the functions in the array `$chpwd_functions` are not called, and the
|
|||
|
new directory stack is not printed. This is useful for calls to `pushd`
|
|||
|
that do not change the environment seen by an interactive user.
|
|||
|
|
|||
|
If the option `-q` is not specified and the shell option `PUSHD_SILENT`
|
|||
|
is not set, the directory stack will be printed after a `pushd` is
|
|||
|
performed.
|
|||
|
|
|||
|
The options `-s`, `-L` and `-P` have the same meanings as for the `cd`
|
|||
|
builtin.
|
|||
|
|
|||
|
<span id="index-pushln"></span>
|
|||
|
|
|||
|
`pushln` \[ `arg` ... \]
|
|||
|
|
|||
|
Equivalent to `print -nz`.
|
|||
|
|
|||
|
<span id="index-pwd"></span>
|
|||
|
<span id="index-CHASE_005fLINKS_002c-use-of"></span>
|
|||
|
|
|||
|
`pwd` \[ `-rLP` \]
|
|||
|
|
|||
|
Print the absolute pathname of the current working directory. If the
|
|||
|
`-r` or the `-P` flag is specified, or the `CHASE_LINKS` option is set
|
|||
|
and the `-L` flag is not given, the printed path will not contain
|
|||
|
symbolic links.
|
|||
|
|
|||
|
<span id="index-r"></span>
|
|||
|
|
|||
|
`r`
|
|||
|
|
|||
|
Same as `fc -e -`.
|
|||
|
|
|||
|
<span id="index-read"></span> <span id="index-IFS_002c-use-of-2"></span>
|
|||
|
|
|||
|
` read `\[ `-rszpqAclneE` \] \[ `-t` \[ `num` \] \] \[ `-k` \[ `num` \]
|
|||
|
\] \[ `-d` `delim` \]
|
|||
|
|
|||
|
` `\[ `-u` `n` \] \[ `name`\[`?``prompt`\] \] \[ `name` ... \]
|
|||
|
|
|||
|
<span id="index-REPLY_002c-use-of-2"></span>
|
|||
|
<span id="index-reply_002c-use-of-1"></span>
|
|||
|
|
|||
|
Read one line and break it into fields using the characters in `$IFS` as
|
|||
|
separators, except as noted below. The first field is assigned to the
|
|||
|
first `name`, the second field to the second `name`, etc., with leftover
|
|||
|
fields assigned to the last `name`. If `name` is omitted then `REPLY` is
|
|||
|
used for scalars and `reply` for arrays.
|
|||
|
|
|||
|
- `-r`
|
|||
|
Raw mode: a ‘`\`’ at the end of a line does not signify line
|
|||
|
continuation and backslashes in the line don’t quote the following
|
|||
|
character and are not removed.
|
|||
|
|
|||
|
- `-s`
|
|||
|
Don’t echo back characters if reading from the terminal.
|
|||
|
|
|||
|
- `-q`
|
|||
|
Read only one character from the terminal and set `name` to ‘`y`’ if
|
|||
|
this character was ‘`y`’ or ‘`Y`’ and to ‘`n`’ otherwise. With this
|
|||
|
flag set the return status is zero only if the character was ‘`y`’
|
|||
|
or ‘`Y`’. This option may be used with a timeout (see `-t`); if the
|
|||
|
read times out, or encounters end of file, status 2 is returned.
|
|||
|
Input is read from the terminal unless one of `-u` or `-p` is
|
|||
|
present. This option may also be used within zle widgets.
|
|||
|
|
|||
|
- `-k` \[ `num` \]
|
|||
|
Read only one (or `num`) characters. All are assigned to the first
|
|||
|
`name`, without word splitting. This flag is ignored when `-q` is
|
|||
|
present. Input is read from the terminal unless one of `-u` or `-p`
|
|||
|
is present. This option may also be used within zle widgets.
|
|||
|
|
|||
|
Note that despite the mnemonic ‘key’ this option does read full
|
|||
|
characters, which may consist of multiple bytes if the option
|
|||
|
`MULTIBYTE` is set.
|
|||
|
|
|||
|
- `-z`
|
|||
|
Read one entry from the editor buffer stack and assign it to the
|
|||
|
first `name`, without word splitting. Text is pushed onto the stack
|
|||
|
with ‘`print -z`’ or with `push-line` from the line editor (see [Zsh
|
|||
|
Line Editor](Zsh-Line-Editor.html#Zsh-Line-Editor)). This flag is
|
|||
|
ignored when the `-k` or `-q` flags are present.
|
|||
|
|
|||
|
- `-e`
|
|||
|
`-E`
|
|||
|
The input read is printed (echoed) to the standard output. If the
|
|||
|
`-e` flag is used, no input is assigned to the parameters.
|
|||
|
|
|||
|
- `-A`
|
|||
|
The first `name` is taken as the name of an array and all words are
|
|||
|
assigned to it.
|
|||
|
|
|||
|
- `-c`
|
|||
|
`-l`
|
|||
|
These flags are allowed only if called inside a function used for
|
|||
|
completion (specified with the `-K` flag to `compctl`). If the `-c`
|
|||
|
flag is given, the words of the current command are read. If the
|
|||
|
`-l` flag is given, the whole line is assigned as a scalar. If both
|
|||
|
flags are present, `-l` is used and `-c` is ignored.
|
|||
|
|
|||
|
- `-n`
|
|||
|
Together with `-c`, the number of the word the cursor is on is read.
|
|||
|
With `-l`, the index of the character the cursor is on is read. Note
|
|||
|
that the command name is word number 1, not word 0, and that when
|
|||
|
the cursor is at the end of the line, its character index is the
|
|||
|
length of the line plus one.
|
|||
|
|
|||
|
- `-u` `n`
|
|||
|
Input is read from file descriptor `n`.
|
|||
|
|
|||
|
- `-p`
|
|||
|
Input is read from the coprocess.
|
|||
|
|
|||
|
- `-d` `delim`
|
|||
|
Input is terminated by the first character of `delim` instead of by
|
|||
|
newline.
|
|||
|
|
|||
|
- `-t` \[ `num` \]
|
|||
|
Test if input is available before attempting to read. If `num` is
|
|||
|
present, it must begin with a digit and will be evaluated to give a
|
|||
|
number of seconds, which may be a floating point number; in this
|
|||
|
case the read times out if input is not available within this time.
|
|||
|
If `num` is not present, it is taken to be zero, so that `read`
|
|||
|
returns immediately if no input is available. If no input is
|
|||
|
available, return status 1 and do not set any variables.
|
|||
|
|
|||
|
This option is not available when reading from the editor buffer
|
|||
|
with `-z`, when called from within completion with `-c` or `-l`,
|
|||
|
with `-q` which clears the input queue before reading, or within zle
|
|||
|
where other mechanisms should be used to test for input.
|
|||
|
|
|||
|
Note that read does not attempt to alter the input processing mode.
|
|||
|
The default mode is canonical input, in which an entire line is read
|
|||
|
at a time, so usually ‘`read -t`’ will not read anything until an
|
|||
|
entire line has been typed. However, when reading from the terminal
|
|||
|
with `-k` input is processed one key at a time; in this case, only
|
|||
|
availability of the first character is tested, so that e.g. ‘`read
|
|||
|
-t -k 2`’ can still block on the second character. Use two instances
|
|||
|
of ‘`read -t -k`’ if this is not what is wanted.
|
|||
|
|
|||
|
If the first argument contains a ‘`?`’, the remainder of this word is
|
|||
|
used as a `prompt` on standard error when the shell is interactive.
|
|||
|
|
|||
|
The value (exit status) of `read` is 1 when an end-of-file is
|
|||
|
encountered, or when `-c` or `-l` is present and the command is not
|
|||
|
called from a `compctl` function, or as described for `-q`. Otherwise
|
|||
|
the value is 0.
|
|||
|
|
|||
|
The behavior of some combinations of the `-k`, `-p`, `-q`, `-u` and `-z`
|
|||
|
flags is undefined. Presently `-q` cancels all the others, `-p` cancels
|
|||
|
`-u`, `-k` cancels `-z`, and otherwise `-z` cancels both `-p` and `-u`.
|
|||
|
|
|||
|
The `-c` or `-l` flags cancel any and all of `-kpquz`.
|
|||
|
|
|||
|
<span id="index-parameters_002c-marking-readonly"></span>
|
|||
|
|
|||
|
`readonly`
|
|||
|
|
|||
|
Same as `typeset -r`. With the `POSIX_BUILTINS` option set, same as
|
|||
|
`typeset -gr`.
|
|||
|
|
|||
|
<span id="index-rehash"></span>
|
|||
|
|
|||
|
`rehash`
|
|||
|
|
|||
|
Same as `hash -r`.
|
|||
|
|
|||
|
<span id="index-return"></span>
|
|||
|
<span id="index-functions_002c-returning-from"></span>
|
|||
|
|
|||
|
`return` \[ `n` \]
|
|||
|
|
|||
|
Causes a shell function or ‘`.`’ script to return to the invoking script
|
|||
|
with the return status specified by an arithmetic expression `n`. If `n`
|
|||
|
is omitted, the return status is that of the last command executed.
|
|||
|
|
|||
|
If `return` was executed from a trap in a `TRAP``NAL` function, the
|
|||
|
effect is different for zero and non-zero return status. With zero
|
|||
|
status (or after an implicit return at the end of the trap), the shell
|
|||
|
will return to whatever it was previously processing; with a non-zero
|
|||
|
status, the shell will behave as interrupted except that the return
|
|||
|
status of the trap is retained. Note that the numeric value of the
|
|||
|
signal which caused the trap is passed as the first argument, so the
|
|||
|
statement ‘`return $((128+$1))`’ will return the same status as if the
|
|||
|
signal had not been trapped.
|
|||
|
|
|||
|
`sched`
|
|||
|
|
|||
|
See [The zsh/sched Module](Zsh-Modules.html#The-zsh_002fsched-Module).
|
|||
|
|
|||
|
<span id="index-set"></span>
|
|||
|
<span id="index-parameters_002c-listing"></span>
|
|||
|
<span id="index-parameters_002c-positional"></span>
|
|||
|
<span id="index-parameters_002c-setting-array"></span>
|
|||
|
<span id="index-array-parameters_002c-setting"></span>
|
|||
|
<span id="index-KSH_005fARRAYS_002c-use-of-1"></span>
|
|||
|
|
|||
|
` set `\[ {`+`|`-`}`options` | {`+`|`-`}`o` \[ `option_name` \] \] ...
|
|||
|
\[ {`+`|`-`}`A` \[ `name` \] \]
|
|||
|
|
|||
|
` `\[ `arg` ... \]
|
|||
|
|
|||
|
Set the options for the shell and/or set the positional parameters, or
|
|||
|
declare and set an array. If the `-s` option is given, it causes the
|
|||
|
specified arguments to be sorted before assigning them to the positional
|
|||
|
parameters (or to the array `name` if `-A` is used). With `+s` sort
|
|||
|
arguments in descending order. For the meaning of the other flags, see
|
|||
|
[Options](Options.html#Options). Flags may be specified by name using
|
|||
|
the `-o` option. If no option name is supplied with `-o`, the current
|
|||
|
option states are printed: see the description of `setopt` below for
|
|||
|
more information on the format. With `+o` they are printed in a form
|
|||
|
that can be used as input to the shell.
|
|||
|
|
|||
|
If the `-A` flag is specified, `name` is set to an array containing the
|
|||
|
given `arg`s; if no `name` is specified, all arrays are printed together
|
|||
|
with their values.
|
|||
|
|
|||
|
If `+A` is used and `name` is an array, the given arguments will replace
|
|||
|
the initial elements of that array; if no `name` is specified, all
|
|||
|
arrays are printed without their values.
|
|||
|
|
|||
|
The behaviour of arguments after `-A` `name` or `+A` `name` depends on
|
|||
|
whether the option `KSH_ARRAYS` is set. If it is not set, all arguments
|
|||
|
following `name` are treated as values for the array, regardless of
|
|||
|
their form. If the option is set, normal option processing continues at
|
|||
|
that point; only regular arguments are treated as values for the array.
|
|||
|
This means that
|
|||
|
|
|||
|
<div class="example">
|
|||
|
|
|||
|
``` example
|
|||
|
set -A array -x -- foo
|
|||
|
```
|
|||
|
|
|||
|
</div>
|
|||
|
|
|||
|
sets `array` to ‘`-x -``- foo`’ if `KSH_ARRAYS` is not set, but sets the
|
|||
|
array to `foo` and turns on the option ‘`-x`’ if it is set.
|
|||
|
|
|||
|
If the `-A` flag is not present, but there are arguments beyond the
|
|||
|
options, the positional parameters are set. If the option list (if any)
|
|||
|
is terminated by ‘`-``-`’, and there are no further arguments, the
|
|||
|
positional parameters will be unset.
|
|||
|
|
|||
|
If no arguments and no ‘`-``-`’ are given, then the names and values of
|
|||
|
all parameters are printed on the standard output. If the only argument
|
|||
|
is ‘`+`’, the names of all parameters are printed.
|
|||
|
|
|||
|
For historical reasons, ‘`set -`’ is treated as ‘`set +xv`’ and ‘`set -`
|
|||
|
`args`’ as ‘`set +xv –` `args`’ when in any other emulation mode than
|
|||
|
zsh’s native mode.
|
|||
|
|
|||
|
`setcap`
|
|||
|
|
|||
|
See [The zsh/cap Module](Zsh-Modules.html#The-zsh_002fcap-Module).
|
|||
|
|
|||
|
<span id="index-setopt"></span>
|
|||
|
<span id="index-options_002c-setting"></span>
|
|||
|
|
|||
|
`setopt` \[ {`+`|`-`}`options` | {`+`|`-`}`o` `option_name` \] \[ `-m`
|
|||
|
\] \[ `name` ... \]
|
|||
|
|
|||
|
Set the options for the shell. All options specified either with flags
|
|||
|
or by name are set.
|
|||
|
|
|||
|
If no arguments are supplied, the names of all options currently set are
|
|||
|
printed. The form is chosen so as to minimize the differences from the
|
|||
|
default options for the current emulation (the default emulation being
|
|||
|
native `zsh`, shown as `<Z>` in [Description of
|
|||
|
Options](Options.html#Description-of-Options)). Options that are on by
|
|||
|
default for the emulation are shown with the prefix `no` only if they
|
|||
|
are off, while other options are shown without the prefix `no` and only
|
|||
|
if they are on. In addition to options changed from the default state by
|
|||
|
the user, any options activated automatically by the shell (for example,
|
|||
|
`SHIN_STDIN` or `INTERACTIVE`) will be shown in the list. The format is
|
|||
|
further modified by the option `KSH_OPTION_PRINT`, however the rationale
|
|||
|
for choosing options with or without the `no` prefix remains the same in
|
|||
|
this case.
|
|||
|
|
|||
|
If the `-m` flag is given the arguments are taken as patterns (which
|
|||
|
should be quoted to protect them from filename expansion), and all
|
|||
|
options with names matching these patterns are set.
|
|||
|
|
|||
|
Note that a bad option name does not cause execution of subsequent shell
|
|||
|
code to be aborted; this is behaviour is different from that of ‘`set
|
|||
|
-o`’. This is because `set` is regarded as a special builtin by the
|
|||
|
POSIX standard, but `setopt` is not.
|
|||
|
|
|||
|
<span id="index-shift"></span>
|
|||
|
<span id="index-parameters_002c-positional-1"></span>
|
|||
|
|
|||
|
`shift` \[ `-p` \] \[ `n` \] \[ `name` ... \]
|
|||
|
|
|||
|
The positional parameters `${``n`+1`}` ... are renamed to `$1` ...,
|
|||
|
where `n` is an arithmetic expression that defaults to 1. If any `name`s
|
|||
|
are given then the arrays with these names are shifted instead of the
|
|||
|
positional parameters.
|
|||
|
|
|||
|
If the option `-p` is given arguments are instead removed (popped) from
|
|||
|
the end rather than the start of the array.
|
|||
|
|
|||
|
<span id="index-source"></span>
|
|||
|
|
|||
|
`source` `file` \[ `arg` ... \]
|
|||
|
|
|||
|
Same as ‘`.`’, except that the current directory is always searched and
|
|||
|
is always searched first, before directories in `$path`.
|
|||
|
|
|||
|
`stat`
|
|||
|
|
|||
|
See [The zsh/stat Module](Zsh-Modules.html#The-zsh_002fstat-Module).
|
|||
|
|
|||
|
<span id="index-suspend"></span>
|
|||
|
<span id="index-shell_002c-suspending"></span>
|
|||
|
<span id="index-suspending-the-shell"></span>
|
|||
|
|
|||
|
`suspend` \[ `-f` \]
|
|||
|
|
|||
|
Suspend the execution of the shell (send it a `SIGTSTP`) until it
|
|||
|
receives a `SIGCONT`. Unless the `-f` option is given, this will refuse
|
|||
|
to suspend a login shell.
|
|||
|
|
|||
|
<span id="index-test"></span>
|
|||
|
|
|||
|
`test` \[ `arg` ... \]
|
|||
|
|
|||
|
`[` \[ `arg` ... \] `]`
|
|||
|
|
|||
|
Like the system version of `test`. Added for compatibility; use
|
|||
|
conditional expressions instead (see [Conditional
|
|||
|
Expressions](Conditional-Expressions.html#Conditional-Expressions)). The
|
|||
|
main differences between the conditional expression syntax and the
|
|||
|
`test` and `[` builtins are: these commands are not handled
|
|||
|
syntactically, so for example an empty variable expansion may cause an
|
|||
|
argument to be omitted; syntax errors cause status 2 to be returned
|
|||
|
instead of a shell error; and arithmetic operators expect integer
|
|||
|
arguments rather than arithmetic expressions.
|
|||
|
|
|||
|
The command attempts to implement POSIX and its extensions where these
|
|||
|
are specified. Unfortunately there are intrinsic ambiguities in the
|
|||
|
syntax; in particular there is no distinction between test operators and
|
|||
|
strings that resemble them. The standard attempts to resolve these for
|
|||
|
small numbers of arguments (up to four); for five or more arguments
|
|||
|
compatibility cannot be relied on. Users are urged wherever possible to
|
|||
|
use the ‘`[[`’ test syntax which does not have these ambiguities.
|
|||
|
|
|||
|
<span id="index-times"></span>
|
|||
|
<span id="index-shell_002c-timing"></span>
|
|||
|
<span id="index-timing-the-shell"></span>
|
|||
|
|
|||
|
`times`
|
|||
|
|
|||
|
Print the accumulated user and system times for the shell and for
|
|||
|
processes run from the shell.
|
|||
|
|
|||
|
<span id="index-trap"></span>
|
|||
|
<span id="index-signals_002c-trapping-1"></span>
|
|||
|
<span id="index-trapping-signals-1"></span>
|
|||
|
|
|||
|
`trap` \[ `arg` \] \[ `sig` ... \]
|
|||
|
|
|||
|
`arg` is a series of commands (usually quoted to protect it from
|
|||
|
immediate evaluation by the shell) to be read and executed when the
|
|||
|
shell receives any of the signals specified by one or more `sig` args.
|
|||
|
Each `sig` can be given as a number, or as the name of a signal either
|
|||
|
with or without the string `SIG` in front (e.g. 1, HUP, and SIGHUP are
|
|||
|
all the same signal).
|
|||
|
|
|||
|
If `arg` is ‘`-`’, then the specified signals are reset to their
|
|||
|
defaults, or, if no `sig` args are present, all traps are reset.
|
|||
|
|
|||
|
If `arg` is an empty string, then the specified signals are ignored by
|
|||
|
the shell (and by the commands it invokes).
|
|||
|
|
|||
|
If `arg` is omitted but one or more `sig` args are provided (i.e. the
|
|||
|
first argument is a valid signal number or name), the effect is the same
|
|||
|
as if `arg` had been specified as ‘`-`’.
|
|||
|
|
|||
|
The `trap` command with no arguments prints a list of commands
|
|||
|
associated with each signal.
|
|||
|
|
|||
|
If `sig` is `ZERR` then `arg` will be executed after each command with a
|
|||
|
nonzero exit status. `ERR` is an alias for `ZERR` on systems that have
|
|||
|
no `SIGERR` signal (this is the usual case).
|
|||
|
|
|||
|
If `sig` is `DEBUG` then `arg` will be executed before each command if
|
|||
|
the option `DEBUG_BEFORE_CMD` is set (as it is by default), else after
|
|||
|
each command. Here, a ‘command’ is what is described as a ‘sublist’ in
|
|||
|
the shell grammar, see [Simple Commands &
|
|||
|
Pipelines](Shell-Grammar.html#Simple-Commands-_0026-Pipelines). If
|
|||
|
`DEBUG_BEFORE_CMD` is set various additional features are available.
|
|||
|
First, it is possible to skip the next command by setting the option
|
|||
|
`ERR_EXIT`; see the description of the `ERR_EXIT` option in [Description
|
|||
|
of Options](Options.html#Description-of-Options). Also, the shell
|
|||
|
parameter `ZSH_DEBUG_CMD` is set to the string corresponding to the
|
|||
|
command to be executed following the trap. Note that this string is
|
|||
|
reconstructed from the internal format and may not be formatted the same
|
|||
|
way as the original text. The parameter is unset after the trap is
|
|||
|
executed.
|
|||
|
|
|||
|
If `sig` is `0` or `EXIT` and the `trap` statement is executed inside
|
|||
|
the body of a function, then the command `arg` is executed after the
|
|||
|
function completes. The value of `$?` at the start of execution is the
|
|||
|
exit status of the shell or the return status of the function exiting.
|
|||
|
If `sig` is `0` or `EXIT` and the `trap` statement is not executed
|
|||
|
inside the body of a function, then the command `arg` is executed when
|
|||
|
the shell terminates; the trap runs before any `zshexit` hook functions.
|
|||
|
|
|||
|
`ZERR`, `DEBUG`, and `EXIT` traps are not executed inside other traps.
|
|||
|
`ZERR` and `DEBUG` traps are kept within subshells, while other traps
|
|||
|
are reset.
|
|||
|
|
|||
|
Note that traps defined with the `trap` builtin are slightly different
|
|||
|
from those defined as ‘`TRAP``NAL` () { ... }’, as the latter have their
|
|||
|
own function environment (line numbers, local variables, etc.) while the
|
|||
|
former use the environment of the command in which they were called. For
|
|||
|
example,
|
|||
|
|
|||
|
<div class="example">
|
|||
|
|
|||
|
``` example
|
|||
|
trap 'print $LINENO' DEBUG
|
|||
|
```
|
|||
|
|
|||
|
</div>
|
|||
|
|
|||
|
will print the line number of a command executed after it has run, while
|
|||
|
|
|||
|
<div class="example">
|
|||
|
|
|||
|
``` example
|
|||
|
TRAPDEBUG() { print $LINENO; }
|
|||
|
```
|
|||
|
|
|||
|
</div>
|
|||
|
|
|||
|
will always print the number zero.
|
|||
|
|
|||
|
Alternative signal names are allowed as described under `kill` above.
|
|||
|
Defining a trap under either name causes any trap under an alternative
|
|||
|
name to be removed. However, it is recommended that for consistency
|
|||
|
users stick exclusively to one name or another.
|
|||
|
|
|||
|
<span id="index-true"></span>
|
|||
|
<span id="index-doing-nothing_002c-successfully"></span>
|
|||
|
|
|||
|
`true` \[ `arg` ... \]
|
|||
|
|
|||
|
Do nothing and return an exit status of 0.
|
|||
|
|
|||
|
<span id="index-ttyctl"></span>
|
|||
|
<span id="index-tty_002c-freezing"></span>
|
|||
|
|
|||
|
`ttyctl` \[ `-fu` \]
|
|||
|
|
|||
|
The `-f` option freezes the tty (i.e. terminal or terminal emulator),
|
|||
|
and `-u` unfreezes it. When the tty is frozen, no changes made to the
|
|||
|
tty settings by external programs will be honored by the shell, except
|
|||
|
for changes in the size of the screen; the shell will simply reset the
|
|||
|
settings to their previous values as soon as each command exits or is
|
|||
|
suspended. Thus, `stty` and similar programs have no effect when the tty
|
|||
|
is frozen. Freezing the tty does not cause the current state to be
|
|||
|
remembered: instead, it causes future changes to the state to be
|
|||
|
blocked.
|
|||
|
|
|||
|
Without options it reports whether the terminal is frozen or not.
|
|||
|
|
|||
|
Note that, regardless of whether the tty is frozen or not, the shell
|
|||
|
needs to change the settings when the line editor starts, so unfreezing
|
|||
|
the tty does not guarantee settings made on the command line are
|
|||
|
preserved. Strings of commands run between editing the command line will
|
|||
|
see a consistent tty state. See also the shell variable `STTY` for a
|
|||
|
means of initialising the tty before running external commands.
|
|||
|
|
|||
|
<span id="index-type"></span>
|
|||
|
|
|||
|
`type` \[ `-wfpamsS` \] `name` ...
|
|||
|
|
|||
|
Equivalent to `whence -v`.
|
|||
|
|
|||
|
<span id="index-typeset"></span>
|
|||
|
<span id="index-parameters_002c-setting"></span>
|
|||
|
<span id="index-parameters_002c-declaring"></span>
|
|||
|
|
|||
|
` typeset `\[ {`+`|`-`}`AHUaghlmrtux` \] \[ {`+`|`-`}`EFLRZip` \[ `n`
|
|||
|
\] \]
|
|||
|
|
|||
|
` `\[ `+` \] \[ `name`\[`=``value`\] ... \]
|
|||
|
|
|||
|
` typeset ``-T` \[ {`+`|`-`}`Uglrux` \] \[ {`+`|`-`}`LRZp` \[ `n` \] \]
|
|||
|
|
|||
|
` `\[ `+` | `SCALAR`\[`=``value`\] `array`\[`=(``value` ...`)`\]
|
|||
|
\[ `sep` \] \]
|
|||
|
|
|||
|
`typeset` `-f` \[ {`+`|`-`}`TUkmtuz` \] \[ `+` \] \[ `name` ... \]
|
|||
|
|
|||
|
Set or display attributes and values for shell parameters.
|
|||
|
|
|||
|
Except as noted below for control flags that change the behavior, a
|
|||
|
parameter is created for each `name` that does not already refer to one.
|
|||
|
When inside a function, a new parameter is created for every `name`
|
|||
|
(even those that already exist), and is unset again when the function
|
|||
|
completes. See [Local Parameters](Parameters.html#Local-Parameters). The
|
|||
|
same rules apply to special shell parameters, which retain their special
|
|||
|
attributes when made local.
|
|||
|
|
|||
|
For each `name``=``value` assignment, the parameter `name` is set to
|
|||
|
`value`.
|
|||
|
|
|||
|
If the shell option `TYPESET_SILENT` is not set, for each remaining
|
|||
|
`name` that refers to a parameter that is already set, the name and
|
|||
|
value of the parameter are printed in the form of an assignment. Nothing
|
|||
|
is printed for newly-created parameters, or when any attribute flags
|
|||
|
listed below are given along with the `name`. Using ‘`+`’ instead of
|
|||
|
minus to introduce an attribute turns it off.
|
|||
|
|
|||
|
If no `name` is present, the names and values of all parameters are
|
|||
|
printed. In this case the attribute flags restrict the display to only
|
|||
|
those parameters that have the specified attributes, and using ‘`+`’
|
|||
|
rather than ‘`-`’ to introduce the flag suppresses printing of the
|
|||
|
values of parameters when there is no parameter name.
|
|||
|
|
|||
|
All forms of the command handle scalar assignment. Array assignment is
|
|||
|
possible if any of the reserved words `declare`, `export`, `float`,
|
|||
|
`integer`, `local`, `readonly` or `typeset` is matched when the line is
|
|||
|
parsed (N.B. not when it is executed). In this case the arguments are
|
|||
|
parsed as assignments, except that the ‘`+=`’ syntax and the
|
|||
|
`GLOB_ASSIGN` option are not supported, and scalar values after `=` are
|
|||
|
*not* split further into words, even if expanded (regardless of the
|
|||
|
setting of the `KSH_TYPESET` option; this option is obsolete).
|
|||
|
|
|||
|
Examples of the differences between command and reserved word parsing:
|
|||
|
|
|||
|
<div class="example">
|
|||
|
|
|||
|
``` example
|
|||
|
# Reserved word parsing
|
|||
|
typeset svar=$(echo one word) avar=(several words)
|
|||
|
```
|
|||
|
|
|||
|
</div>
|
|||
|
|
|||
|
The above creates a scalar parameter `svar` and an array parameter
|
|||
|
`avar` as if the assignments had been
|
|||
|
|
|||
|
<div class="example">
|
|||
|
|
|||
|
``` example
|
|||
|
svar="one word"
|
|||
|
avar=(several words)
|
|||
|
```
|
|||
|
|
|||
|
</div>
|
|||
|
|
|||
|
On the other hand:
|
|||
|
|
|||
|
<div class="example">
|
|||
|
|
|||
|
``` example
|
|||
|
# Normal builtin interface
|
|||
|
builtin typeset svar=$(echo two words)
|
|||
|
```
|
|||
|
|
|||
|
</div>
|
|||
|
|
|||
|
The `builtin` keyword causes the above to use the standard builtin
|
|||
|
interface to `typeset` in which argument parsing is performed in the
|
|||
|
same way as for other commands. This example creates a scalar `svar`
|
|||
|
containing the value `two` and another scalar parameter `words` with no
|
|||
|
value. An array value in this case would either cause an error or be
|
|||
|
treated as an obscure set of glob qualifiers.
|
|||
|
|
|||
|
Arbitrary arguments are allowed if they take the form of assignments
|
|||
|
after command line expansion; however, these only perform scalar
|
|||
|
assignment:
|
|||
|
|
|||
|
<div class="example">
|
|||
|
|
|||
|
``` example
|
|||
|
var='svar=val'
|
|||
|
typeset $var
|
|||
|
```
|
|||
|
|
|||
|
</div>
|
|||
|
|
|||
|
The above sets the scalar parameter `svar` to the value `val`.
|
|||
|
Parentheses around the value within `var` would not cause array
|
|||
|
assignment as they will be treated as ordinary characters when `$var` is
|
|||
|
substituted. Any non-trivial expansion in the name part of the
|
|||
|
assignment causes the argument to be treated in this fashion:
|
|||
|
|
|||
|
<div class="example">
|
|||
|
|
|||
|
``` example
|
|||
|
typeset {var1,var2,var3}=name
|
|||
|
```
|
|||
|
|
|||
|
</div>
|
|||
|
|
|||
|
The above syntax is valid, and has the expected effect of setting the
|
|||
|
three parameters to the same value, but the command line is parsed as a
|
|||
|
set of three normal command line arguments to `typeset` after expansion.
|
|||
|
Hence it is not possible to assign to multiple arrays by this means.
|
|||
|
|
|||
|
Note that each interface to any of the commands my be disabled
|
|||
|
separately. For example, ‘`disable -r typeset`’ disables the reserved
|
|||
|
word interface to `typeset`, exposing the builtin interface, while
|
|||
|
‘`disable typeset`’ disables the builtin. Note that disabling the
|
|||
|
reserved word interface for `typeset` may cause problems with the output
|
|||
|
of ‘`typeset -p`’, which assumes the reserved word interface is
|
|||
|
available in order to restore array and associative array values.
|
|||
|
|
|||
|
Unlike parameter assignment statements, `typeset`’s exit status on an
|
|||
|
assignment that involves a command substitution does not reflect the
|
|||
|
exit status of the command substitution. Therefore, to test for an error
|
|||
|
in a command substitution, separate the declaration of the parameter
|
|||
|
from its initialization:
|
|||
|
|
|||
|
<div class="example">
|
|||
|
|
|||
|
``` example
|
|||
|
# WRONG
|
|||
|
typeset var1=$(exit 1) || echo "Trouble with var1"
|
|||
|
|
|||
|
# RIGHT
|
|||
|
typeset var1 && var1=$(exit 1) || echo "Trouble with var1"
|
|||
|
```
|
|||
|
|
|||
|
</div>
|
|||
|
|
|||
|
To initialize a parameter `param` to a command output and mark it
|
|||
|
readonly, use ` typeset -r ``param` or ` readonly ``param` after the
|
|||
|
parameter assignment statement.
|
|||
|
|
|||
|
If no attribute flags are given, and either no `name` arguments are
|
|||
|
present or the flag `+m` is used, then each parameter name printed is
|
|||
|
preceded by a list of the attributes of that parameter (`array`,
|
|||
|
`association`, `exported`, `float`, `integer`, `readonly`, or
|
|||
|
`undefined` for autoloaded parameters not yet loaded). If `+m` is used
|
|||
|
with attribute flags, and all those flags are introduced with `+`, the
|
|||
|
matching parameter names are printed but their values are not.
|
|||
|
|
|||
|
The following control flags change the behavior of `typeset`:
|
|||
|
|
|||
|
- `+`
|
|||
|
If ‘`+`’ appears by itself in a separate word as the last option,
|
|||
|
then the names of all parameters (functions with `-f`) are printed,
|
|||
|
but the values (function bodies) are not. No `name` arguments may
|
|||
|
appear, and it is an error for any other options to follow ‘`+`’.
|
|||
|
The effect of ‘`+`’ is as if all attribute flags which precede it
|
|||
|
were given with a ‘`+`’ prefix. For example, ‘`typeset -U +`’ is
|
|||
|
equivalent to ‘`typeset +U`’ and displays the names of all arrays
|
|||
|
having the uniqueness attribute, whereas ‘`typeset -f -U +`’
|
|||
|
displays the names of all autoloadable functions. If `+` is the only
|
|||
|
option, then type information (array, readonly, etc.) is also
|
|||
|
printed for each parameter, in the same manner as ‘`typeset +m
|
|||
|
"*"`’.
|
|||
|
|
|||
|
- `-g`
|
|||
|
The `-g` (global) means that any resulting parameter will not be
|
|||
|
restricted to local scope. Note that this does not necessarily mean
|
|||
|
that the parameter will be global, as the flag will apply to any
|
|||
|
existing parameter (even if unset) from an enclosing function. This
|
|||
|
flag does not affect the parameter after creation, hence it has no
|
|||
|
effect when listing existing parameters, nor does the flag `+g` have
|
|||
|
any effect except in combination with `-m` (see below).
|
|||
|
|
|||
|
- `-m`
|
|||
|
If the `-m` flag is given the `name` arguments are taken as patterns
|
|||
|
(use quoting to prevent these from being interpreted as file
|
|||
|
patterns). With no attribute flags, all parameters (or functions
|
|||
|
with the `-f` flag) with matching names are printed (the shell
|
|||
|
option `TYPESET_SILENT` is not used in this case).
|
|||
|
|
|||
|
If the `+g` flag is combined with `-m`, a new local parameter is
|
|||
|
created for every matching parameter that is not already local.
|
|||
|
Otherwise `-m` applies all other flags or assignments to the
|
|||
|
existing parameters.
|
|||
|
|
|||
|
Except when assignments are made with `name``=``value`, using `+m`
|
|||
|
forces the matching parameters and their attributes to be printed,
|
|||
|
even inside a function. Note that `-m` is ignored if no patterns are
|
|||
|
given, so ‘`typeset -m`’ displays attributes but ‘`typeset -a +m`’
|
|||
|
does not.
|
|||
|
|
|||
|
- `-p` \[ `n` \]
|
|||
|
If the `-p` option is given, parameters and values are printed in
|
|||
|
the form of a typeset command with an assignment, regardless of
|
|||
|
other flags and options. Note that the `-H` flag on parameters is
|
|||
|
respected; no value will be shown for these parameters.
|
|||
|
|
|||
|
`-p` may be followed by an optional integer argument. Currently only
|
|||
|
the value `1` is supported. In this case arrays and associative
|
|||
|
arrays are printed with newlines between indented elements for
|
|||
|
readability.
|
|||
|
|
|||
|
- `-T` \[ `scalar`\[`=``value`\] `array`\[`=(``value` ...`)`\] \[
|
|||
|
`sep` \] \]
|
|||
|
This flag has a different meaning when used with `-f`; see below.
|
|||
|
Otherwise the `-T` option requires zero, two, or three arguments to
|
|||
|
be present. With no arguments, the list of parameters created in
|
|||
|
this fashion is shown. With two or three arguments, the first two
|
|||
|
are the name of a scalar and of an array parameter (in that order)
|
|||
|
that will be tied together in the manner of `$PATH` and `$path`. The
|
|||
|
optional third argument is a single-character separator which will
|
|||
|
be used to join the elements of the array to form the scalar; if
|
|||
|
absent, a colon is used, as with `$PATH`. Only the first character
|
|||
|
of the separator is significant; any remaining characters are
|
|||
|
ignored. Multibyte characters are not yet supported.
|
|||
|
|
|||
|
Only one of the scalar and array parameters may be assigned an
|
|||
|
initial value (the restrictions on assignment forms described above
|
|||
|
also apply).
|
|||
|
|
|||
|
Both the scalar and the array may be manipulated as normal. If one
|
|||
|
is unset, the other will automatically be unset too. There is no way
|
|||
|
of untying the variables without unsetting them, nor of converting
|
|||
|
the type of one of them with another `typeset` command; `+T` does
|
|||
|
not work, assigning an array to `scalar` is an error, and assigning
|
|||
|
a scalar to `array` sets it to be a single-element array.
|
|||
|
|
|||
|
Note that both ‘`typeset -xT ...`’ and ‘`export -T ...`’ work, but
|
|||
|
only the scalar will be marked for export. Setting the value using
|
|||
|
the scalar version causes a split on all separators (which cannot be
|
|||
|
quoted). It is possible to apply `-T` to two previously tied
|
|||
|
variables but with a different separator character, in which case
|
|||
|
the variables remain joined as before but the separator is changed.
|
|||
|
|
|||
|
When an existing scalar is tied to a new array, the value of the
|
|||
|
scalar is preserved but no attribute other than export will be
|
|||
|
preserved.
|
|||
|
|
|||
|
Attribute flags that transform the final value (`-L`, `-R`, `-Z`, `-l`,
|
|||
|
`-u`) are only applied to the expanded value at the point of a parameter
|
|||
|
expansion expression using ‘`$`’. They are not applied when a parameter
|
|||
|
is retrieved internally by the shell for any purpose.
|
|||
|
|
|||
|
The following attribute flags may be specified:
|
|||
|
|
|||
|
- `-A`
|
|||
|
The names refer to associative array parameters; see [Array
|
|||
|
Parameters](Parameters.html#Array-Parameters).
|
|||
|
|
|||
|
- `-L` \[ `n` \]
|
|||
|
Left justify and remove leading blanks from the value when the
|
|||
|
parameter is expanded. If `n` is nonzero, it defines the width of
|
|||
|
the field. If `n` is zero, the width is determined by the width of
|
|||
|
the value of the first assignment. In the case of numeric
|
|||
|
parameters, the length of the complete value assigned to the
|
|||
|
parameter is used to determine the width, not the value that would
|
|||
|
be output.
|
|||
|
|
|||
|
The width is the count of characters, which may be multibyte
|
|||
|
characters if the `MULTIBYTE` option is in effect. Note that the
|
|||
|
screen width of the character is not taken into account; if this is
|
|||
|
required, use padding with parameter expansion flags
|
|||
|
`${(ml``...``)``...``}` as described in ‘Parameter Expansion Flags’
|
|||
|
in [Parameter Expansion](Expansion.html#Parameter-Expansion).
|
|||
|
|
|||
|
When the parameter is expanded, it is filled on the right with
|
|||
|
blanks or truncated if necessary to fit the field. Note truncation
|
|||
|
can lead to unexpected results with numeric parameters. Leading
|
|||
|
zeros are removed if the `-Z` flag is also set.
|
|||
|
|
|||
|
- `-R` \[ `n` \]
|
|||
|
Similar to `-L`, except that right justification is used; when the
|
|||
|
parameter is expanded, the field is left filled with blanks or
|
|||
|
truncated from the end. May not be combined with the `-Z` flag.
|
|||
|
|
|||
|
- `-U`
|
|||
|
For arrays (but not for associative arrays), keep only the first
|
|||
|
occurrence of each duplicated value. This may also be set for tied
|
|||
|
parameters (see `-T`) or colon-separated special parameters like
|
|||
|
`PATH` or `FIGNORE`, etc. Note the flag takes effect on assignment,
|
|||
|
and the type of the variable being assigned to is determinative; for
|
|||
|
variables with shared values it is therefore recommended to set the
|
|||
|
flag for all interfaces, e.g. ‘`typeset -U PATH path`’.
|
|||
|
|
|||
|
This flag has a different meaning when used with `-f`; see below.
|
|||
|
|
|||
|
- `-Z` \[ `n` \]
|
|||
|
Specially handled if set along with the `-L` flag. Otherwise,
|
|||
|
similar to `-R`, except that leading zeros are used for padding
|
|||
|
instead of blanks if the first non-blank character is a digit.
|
|||
|
Numeric parameters are specially handled: they are always eligible
|
|||
|
for padding with zeroes, and the zeroes are inserted at an
|
|||
|
appropriate place in the output.
|
|||
|
|
|||
|
- `-a`
|
|||
|
The names refer to array parameters. An array parameter may be
|
|||
|
created this way, but it may be assigned to in the `typeset`
|
|||
|
statement only if the reserved word form of `typeset` is enabled (as
|
|||
|
it is by default). When displaying, both normal and associative
|
|||
|
arrays are shown.
|
|||
|
|
|||
|
- `-f`
|
|||
|
The names refer to functions rather than parameters. No assignments
|
|||
|
can be made, and the only other valid flags are `-t`, `-T`, `-k`,
|
|||
|
`-u`, `-U` and `-z`. The flag `-t` turns on execution tracing for
|
|||
|
this function; the flag `-T` does the same, but turns off tracing
|
|||
|
for any named (not anonymous) function called from the present one,
|
|||
|
unless that function also has the `-t` or `-T` flag. The `-u` and
|
|||
|
`-U` flags cause the function to be marked for autoloading; `-U`
|
|||
|
also causes alias expansion to be suppressed when the function is
|
|||
|
loaded. See the description of the ‘`autoload`’ builtin for details.
|
|||
|
|
|||
|
Note that the builtin `functions` provides the same basic
|
|||
|
capabilities as `typeset -f` but gives access to a few extra
|
|||
|
options; `autoload` gives further additional options for the case
|
|||
|
`typeset -fu` and `typeset -fU`.
|
|||
|
|
|||
|
- `-h`
|
|||
|
`-H`
|
|||
|
Hide value: specifies that `typeset` will not display the value of
|
|||
|
the parameter when listing parameters; the display for such
|
|||
|
parameters is always as if the ‘`+`’ flag had been given. Use of the
|
|||
|
parameter is in other respects normal, and the option does not apply
|
|||
|
if the parameter is specified by name, or by pattern with the `-m`
|
|||
|
option. This is on by default for the parameters in the
|
|||
|
`zsh/parameter` and `zsh/mapfile` modules. Note, however, that
|
|||
|
unlike the `-h` flag this is also useful for non-special parameters.
|
|||
|
|
|||
|
- `-i` \[ `n` \]
|
|||
|
Use an internal integer representation. If `n` is nonzero it defines
|
|||
|
the output arithmetic base, otherwise it is determined by the first
|
|||
|
assignment. Bases from 2 to 36 inclusive are allowed.
|
|||
|
|
|||
|
- `-E` \[ `n` \]
|
|||
|
Use an internal double-precision floating point representation. On
|
|||
|
output the variable will be converted to scientific notation. If `n`
|
|||
|
is nonzero it defines the number of significant figures to display;
|
|||
|
the default is ten.
|
|||
|
|
|||
|
- `-F` \[ `n` \]
|
|||
|
Use an internal double-precision floating point representation. On
|
|||
|
output the variable will be converted to fixed-point decimal
|
|||
|
notation. If `n` is nonzero it defines the number of digits to
|
|||
|
display after the decimal point; the default is ten.
|
|||
|
|
|||
|
- `-l`
|
|||
|
Convert the result to lower case whenever the parameter is expanded.
|
|||
|
The value is *not* converted when assigned.
|
|||
|
|
|||
|
- `-r`
|
|||
|
The given `name`s are marked readonly. Note that if `name` is a
|
|||
|
special parameter, the readonly attribute can be turned on, but
|
|||
|
cannot then be turned off.
|
|||
|
|
|||
|
If the `POSIX_BUILTINS` option is set, the readonly attribute is
|
|||
|
more restrictive: unset variables can be marked readonly and cannot
|
|||
|
then be set; furthermore, the readonly attribute cannot be removed
|
|||
|
from any variable.
|
|||
|
|
|||
|
It is still possible to change other attributes of the variable
|
|||
|
though, some of which like `-U` or `-Z` would affect the value. More
|
|||
|
generally, the readonly attribute should not be relied on as a
|
|||
|
security mechanism.
|
|||
|
|
|||
|
Note that in zsh (like in pdksh but unlike most other shells) it is
|
|||
|
still possible to create a local variable of the same name as this
|
|||
|
is considered a different variable (though this variable, too, can
|
|||
|
be marked readonly). Special variables that have been made readonly
|
|||
|
retain their value and readonly attribute when made local.
|
|||
|
|
|||
|
- `-t`
|
|||
|
Tags the named parameters. Tags have no special meaning to the
|
|||
|
shell. This flag has a different meaning when used with `-f`; see
|
|||
|
above.
|
|||
|
|
|||
|
- `-u`
|
|||
|
Convert the result to upper case whenever the parameter is expanded.
|
|||
|
The value is *not* converted when assigned. This flag has a
|
|||
|
different meaning when used with `-f`; see above.
|
|||
|
|
|||
|
- `-x`
|
|||
|
Mark for automatic export to the environment of subsequently
|
|||
|
executed commands. If the option `GLOBAL_EXPORT` is set, this
|
|||
|
implies the option `-g`, unless `+g` is also explicitly given; in
|
|||
|
other words the parameter is not made local to the enclosing
|
|||
|
function. This is for compatibility with previous versions of zsh.
|
|||
|
|
|||
|
<span id="index-ulimit"></span>
|
|||
|
<span id="index-resource-limits-1"></span>
|
|||
|
<span id="index-limits_002c-resource-1"></span>
|
|||
|
|
|||
|
`ulimit` \[ `-HSa` \] \[ { `-bcdfiklmnpqrsTtvwx` | `-N` `resource` } \[
|
|||
|
`limit` \] ... \]
|
|||
|
|
|||
|
Set or display resource limits of the shell and the processes started by
|
|||
|
the shell. The value of `limit` can be a number in the unit specified
|
|||
|
below or one of the values ‘`unlimited`’, which removes the limit on the
|
|||
|
resource, or ‘`hard`’, which uses the current value of the hard limit on
|
|||
|
the resource.
|
|||
|
|
|||
|
By default, only soft limits are manipulated. If the `-H` flag is given
|
|||
|
use hard limits instead of soft limits. If the `-S` flag is given
|
|||
|
together with the `-H` flag set both hard and soft limits.
|
|||
|
|
|||
|
If no options are used, the file size limit (`-f`) is assumed.
|
|||
|
|
|||
|
If `limit` is omitted the current value of the specified resources are
|
|||
|
printed. When more than one resource value is printed, the limit name
|
|||
|
and unit is printed before each value.
|
|||
|
|
|||
|
When looping over multiple resources, the shell will abort immediately
|
|||
|
if it detects a badly formed argument. However, if it fails to set a
|
|||
|
limit for some other reason it will continue trying to set the remaining
|
|||
|
limits.
|
|||
|
|
|||
|
Not all the following resources are supported on all systems. Running
|
|||
|
`ulimit -a` will show which are supported.
|
|||
|
|
|||
|
- `-a`
|
|||
|
Lists all of the current resource limits.
|
|||
|
|
|||
|
- `-b`
|
|||
|
Socket buffer size in bytes (N.B. not kilobytes)
|
|||
|
|
|||
|
- `-c`
|
|||
|
512-byte blocks on the size of core dumps.
|
|||
|
|
|||
|
- `-d`
|
|||
|
Kilobytes on the size of the data segment.
|
|||
|
|
|||
|
- `-f`
|
|||
|
512-byte blocks on the size of files written.
|
|||
|
|
|||
|
- `-i`
|
|||
|
The number of pending signals.
|
|||
|
|
|||
|
- `-k`
|
|||
|
The number of kqueues allocated.
|
|||
|
|
|||
|
- `-l`
|
|||
|
Kilobytes on the size of locked-in memory.
|
|||
|
|
|||
|
- `-m`
|
|||
|
Kilobytes on the size of physical memory.
|
|||
|
|
|||
|
- `-n`
|
|||
|
open file descriptors.
|
|||
|
|
|||
|
- `-p`
|
|||
|
The number of pseudo-terminals.
|
|||
|
|
|||
|
- `-q`
|
|||
|
Bytes in POSIX message queues.
|
|||
|
|
|||
|
- `-r`
|
|||
|
Maximum real time priority. On some systems where this is not
|
|||
|
available, such as NetBSD, this has the same effect as `-T` for
|
|||
|
compatibility with `sh`.
|
|||
|
|
|||
|
- `-s`
|
|||
|
Kilobytes on the size of the stack.
|
|||
|
|
|||
|
- `-T`
|
|||
|
The number of simultaneous threads available to the user.
|
|||
|
|
|||
|
- `-t`
|
|||
|
CPU seconds to be used.
|
|||
|
|
|||
|
- `-u`
|
|||
|
The number of processes available to the user.
|
|||
|
|
|||
|
- `-v`
|
|||
|
Kilobytes on the size of virtual memory. On some systems this refers
|
|||
|
to the limit called ‘address space’.
|
|||
|
|
|||
|
- `-w`
|
|||
|
Kilobytes on the size of swapped out memory.
|
|||
|
|
|||
|
- `-x`
|
|||
|
The number of locks on files.
|
|||
|
|
|||
|
A resource may also be specified by integer in the form ‘`-N`
|
|||
|
`resource`’, where `resource` corresponds to the integer defined for
|
|||
|
the resource by the operating system. This may be used to set the limits
|
|||
|
for resources known to the shell which do not correspond to option
|
|||
|
letters. Such limits will be shown by number in the output of ‘`ulimit
|
|||
|
-a`’.
|
|||
|
|
|||
|
The number may alternatively be out of the range of limits compiled into
|
|||
|
the shell. The shell will try to read or write the limit anyway, and
|
|||
|
will report an error if this fails.
|
|||
|
|
|||
|
<span id="index-umask"></span> <span id="index-umask-1"></span>
|
|||
|
|
|||
|
`umask` \[ `-S` \] \[ `mask` \]
|
|||
|
|
|||
|
The umask is set to `mask`. `mask` can be either an octal number or a
|
|||
|
symbolic value as described in man page chmod(1). If `mask` is omitted,
|
|||
|
the current value is printed. The `-S` option causes the mask to be
|
|||
|
printed as a symbolic value. Otherwise, the mask is printed as an octal
|
|||
|
number. Note that in the symbolic form the permissions you specify are
|
|||
|
those which are to be allowed (not denied) to the users specified.
|
|||
|
|
|||
|
<span id="index-aliases_002c-removing"></span>
|
|||
|
|
|||
|
`unalias` \[ `-ams` \] `name` ...
|
|||
|
|
|||
|
Removes aliases. This command works the same as `unhash -a`, except that
|
|||
|
the `-a` option removes all regular or global aliases, or with `-s` all
|
|||
|
suffix aliases: in this case no `name` arguments may appear. The options
|
|||
|
`-m` (remove by pattern) and `-s` without `-a` (remove listed suffix
|
|||
|
aliases) behave as for `unhash -a`. Note that the meaning of `-a` is
|
|||
|
different between `unalias` and `unhash`.
|
|||
|
|
|||
|
<span id="index-functions_002c-removing"></span>
|
|||
|
<span id="index-unfunction"></span>
|
|||
|
|
|||
|
`unfunction`
|
|||
|
|
|||
|
Same as `unhash -f`.
|
|||
|
|
|||
|
<span id="index-unhash"></span>
|
|||
|
|
|||
|
`unhash` \[ `-adfms` \] `name` ...
|
|||
|
|
|||
|
option causes `unhash` to remove regular or global aliases; note when
|
|||
|
removing a global aliases that the argument must be quoted to prevent it
|
|||
|
from being expanded before being passed to the command. The `-s` option
|
|||
|
causes `unhash` to remove suffix aliases. The `-f` option causes
|
|||
|
`unhash` to remove shell functions. The `-d` options causes `unhash` to
|
|||
|
remove named directories. If the `-m` flag is given the arguments are
|
|||
|
taken as patterns (should be quoted) and all elements
|
|||
|
|
|||
|
<span id="index-unlimit"></span>
|
|||
|
<span id="index-resource-limits-2"></span>
|
|||
|
<span id="index-limits_002c-resource-2"></span>
|
|||
|
|
|||
|
`unlimit` \[ `-hs` \] `resource` ...
|
|||
|
|
|||
|
The resource limit for each `resource` is set to the hard limit. If the
|
|||
|
`-h` flag is given and the shell has appropriate privileges, the hard
|
|||
|
resource limit for each `resource` is removed. The resources of the
|
|||
|
shell process are only changed if the `-s` flag is given.
|
|||
|
|
|||
|
The `unlimit` command is not made available by default when the shell
|
|||
|
starts in a mode emulating another shell. It can be made available with
|
|||
|
the command ‘`zmodload -F zsh/rlimits b:unlimit`’.
|
|||
|
|
|||
|
<span id="index-unset"></span>
|
|||
|
<span id="index-parameters_002c-unsetting"></span>
|
|||
|
|
|||
|
`unset` \[ `-fmv` \] `name` ...
|
|||
|
|
|||
|
Each named parameter is unset. Local parameters remain local even if
|
|||
|
unset; they appear unset within scope, but the previous value will still
|
|||
|
reappear when the scope ends.
|
|||
|
|
|||
|
Individual elements of associative array parameters may be unset by
|
|||
|
using subscript syntax on `name`, which should be quoted (or the entire
|
|||
|
command prefixed with `noglob`) to protect the subscript from filename
|
|||
|
generation.
|
|||
|
|
|||
|
If the `-m` flag is specified the arguments are taken as patterns
|
|||
|
(should be quoted) and all parameters with matching names are unset.
|
|||
|
Note that this cannot be used when unsetting associative array elements,
|
|||
|
as the subscript will be treated as part of the pattern.
|
|||
|
|
|||
|
The `-v` flag specifies that `name` refers to parameters. This is the
|
|||
|
default behaviour.
|
|||
|
|
|||
|
`unset -f` is equivalent to `unfunction`.
|
|||
|
|
|||
|
<span id="index-unsetopt"></span>
|
|||
|
<span id="index-options_002c-unsetting"></span>
|
|||
|
|
|||
|
`unsetopt` \[ {`+`|`-`}`options` | {`+`|`-`}`o` `option_name` \] \[
|
|||
|
`name` ... \]
|
|||
|
|
|||
|
Unset the options for the shell. All options specified either with flags
|
|||
|
or by name are unset. If no arguments are supplied, the names of all
|
|||
|
options currently unset are printed. If the `-m` flag is given the
|
|||
|
arguments are taken as patterns (which should be quoted to preserve them
|
|||
|
from being interpreted as glob patterns), and all options with names
|
|||
|
matching these patterns are unset.
|
|||
|
|
|||
|
`vared`
|
|||
|
|
|||
|
See [Zle Builtins](Zsh-Line-Editor.html#Zle-Builtins).
|
|||
|
|
|||
|
<span id="index-wait"></span> <span id="index-waiting-for-jobs"></span>
|
|||
|
<span id="index-jobs_002c-waiting-for"></span>
|
|||
|
|
|||
|
`wait` \[ `job` ... \]
|
|||
|
|
|||
|
Wait for the specified jobs or processes. If `job` is not given then all
|
|||
|
currently active child processes are waited for. Each `job` can be
|
|||
|
either a job specification or the process ID The exit status from this
|
|||
|
command is that of the job waited for. If `job` represents an unknown
|
|||
|
job or process ID, a warning is printed (unless the `POSIX_BUILTINS`
|
|||
|
option is set) and the exit status is 127.
|
|||
|
|
|||
|
It is possible to wait for recent processes (specified by process ID,
|
|||
|
not by job) that were running in the background even if the process has
|
|||
|
exited. Typically the process ID will be recorded by capturing the value
|
|||
|
of the variable `$!` immediately after the process has been started.
|
|||
|
There is a limit on the number of process IDs remembered by the shell;
|
|||
|
this is given by the value of the system configuration parameter
|
|||
|
`CHILD_MAX`. When this limit is reached, older process IDs are
|
|||
|
discarded, least recently started processes first.
|
|||
|
|
|||
|
Note there is no protection against the process ID wrapping, i.e. if the
|
|||
|
wait is not executed soon enough there is a chance the process waited
|
|||
|
for is the wrong one. A conflict implies both process IDs have been
|
|||
|
generated by the shell, as other processes are not recorded, and that
|
|||
|
the user is potentially interested in both, so this problem is intrinsic
|
|||
|
to process IDs.
|
|||
|
|
|||
|
<span id="index-whence"></span>
|
|||
|
|
|||
|
`whence` \[ `-vcwfpamsS` \] \[ `-x` `num` \] `name` ...
|
|||
|
|
|||
|
For each `name`, indicate how it would be interpreted if used as a
|
|||
|
command name.
|
|||
|
|
|||
|
If `name` is not an alias, built-in command, external command, shell
|
|||
|
function, hashed command, or a reserved word, the exit status shall be
|
|||
|
non-zero, and — if `-v`, `-c`, or `-w` was passed — a message will be
|
|||
|
written to standard output. (This is different from other shells that
|
|||
|
write that message to standard error.)
|
|||
|
|
|||
|
`whence` is most useful when `name` is only the last path component of a
|
|||
|
command, i.e. does not include a ‘`/`’; in particular, pattern matching
|
|||
|
only succeeds if just the non-directory component of the command is
|
|||
|
passed.
|
|||
|
|
|||
|
- `-v`
|
|||
|
Produce a more verbose report.
|
|||
|
|
|||
|
- `-c`
|
|||
|
Print the results in a csh-like format. This takes precedence over
|
|||
|
`-v`.
|
|||
|
|
|||
|
- `-w`
|
|||
|
For each `name`, print ‘`name``:` `word`’ where `word` is one of
|
|||
|
`alias`, `builtin`, `command`, `function`, `hashed`, `reserved` or
|
|||
|
`none`, according as `name` corresponds to an alias, a built-in
|
|||
|
command, an external command, a shell function, a command defined
|
|||
|
with the `hash` builtin, a reserved word, or is not recognised. This
|
|||
|
takes precedence over `-v` and `-c`.
|
|||
|
|
|||
|
- `-f`
|
|||
|
Causes the contents of a shell function to be displayed, which would
|
|||
|
otherwise not happen unless the `-c` flag were used.
|
|||
|
|
|||
|
- `-p`
|
|||
|
Do a path search for `name` even if it is an alias, reserved word,
|
|||
|
shell function or builtin.
|
|||
|
|
|||
|
- `-a`
|
|||
|
Do a search for all occurrences of `name` throughout the command
|
|||
|
path. Normally only the first occurrence is printed.
|
|||
|
|
|||
|
- `-m`
|
|||
|
The arguments are taken as patterns (pattern characters should be
|
|||
|
quoted), and the information is displayed for each command matching
|
|||
|
one of these patterns.
|
|||
|
|
|||
|
- `-s`
|
|||
|
If a pathname contains symlinks, print the symlink-free pathname as
|
|||
|
well.
|
|||
|
|
|||
|
- `-S`
|
|||
|
As `-s`, but if the pathname had to be resolved by following
|
|||
|
multiple symlinks, the intermediate steps are printed, too. The
|
|||
|
symlink resolved at each step might be anywhere in the path.
|
|||
|
|
|||
|
- `-x` `num`
|
|||
|
Expand tabs when outputting shell functions using the `-c` option.
|
|||
|
This has the same effect as the `-x` option to the `functions`
|
|||
|
builtin.
|
|||
|
|
|||
|
<span id="index-where"></span>
|
|||
|
|
|||
|
`where` \[ `-wpmsS` \] \[ `-x` `num` \] `name` ...
|
|||
|
|
|||
|
Equivalent to `whence -ca`.
|
|||
|
|
|||
|
<span id="index-which"></span>
|
|||
|
|
|||
|
`which` \[ `-wpamsS` \] \[ `-x` `num` \] `name` ...
|
|||
|
|
|||
|
Equivalent to `whence -c`.
|
|||
|
|
|||
|
<span id="index-zcompile"></span>
|
|||
|
<span id="index-_002ezwc-files_002c-creation"></span>
|
|||
|
<span id="index-compilation"></span>
|
|||
|
|
|||
|
`zcompile` \[ `-U` \] \[ `-z` | `-k` \] \[ `-R` | `-M` \] `file` \[
|
|||
|
`name` ... \]
|
|||
|
|
|||
|
`zcompile` `-ca` \[ `-m` \] \[ `-R` | `-M` \] `file` \[ `name` ... \]
|
|||
|
|
|||
|
`zcompile -t` `file` \[ `name` ... \]
|
|||
|
|
|||
|
This builtin command can be used to compile functions or scripts,
|
|||
|
storing the compiled form in a file, and to examine files containing the
|
|||
|
compiled form. This allows faster autoloading of functions and sourcing
|
|||
|
of scripts by avoiding parsing of the text when the files are read.
|
|||
|
|
|||
|
The first form (without the `-c`, `-a` or `-t` options) creates a
|
|||
|
compiled file. If only the `file` argument is given, the output file has
|
|||
|
the name ‘`file``.zwc`’ and will be placed in the same directory as the
|
|||
|
`file`. The shell will load the compiled file instead of the normal
|
|||
|
function file when the function is autoloaded; see
|
|||
|
[Functions](Functions.html#Functions) for a description of how
|
|||
|
autoloaded functions are searched. The extension `.zwc` stands for ‘zsh
|
|||
|
word code’.
|
|||
|
|
|||
|
<span id="index-fpath_002c-with-zcompile"></span>
|
|||
|
|
|||
|
If there is at least one `name` argument, all the named files are
|
|||
|
compiled into the output `file` given as the first argument. If `file`
|
|||
|
does not end in `.zwc`, this extension is automatically appended. Files
|
|||
|
containing multiple compiled functions are called ‘digest’ files, and
|
|||
|
are intended to be used as elements of the `FPATH`/`fpath` special
|
|||
|
array.
|
|||
|
|
|||
|
The second form, with the `-c` or `-a` options, writes the compiled
|
|||
|
definitions for all the named functions into `file`. For `-c`, the names
|
|||
|
must be functions currently defined in the shell, not those marked for
|
|||
|
autoloading. Undefined functions that are marked for autoloading may be
|
|||
|
written by using the `-a` option, in which case the `fpath` is searched
|
|||
|
and the contents of the definition files for those functions, if found,
|
|||
|
are compiled into `file`. If both `-c` and `-a` are given, names of both
|
|||
|
defined functions and functions marked for autoloading may be given. In
|
|||
|
either case, the functions in files written with the `-c` or `-a` option
|
|||
|
will be autoloaded as if the `KSH_AUTOLOAD` option were unset.
|
|||
|
|
|||
|
The reason for handling loaded and not-yet-loaded functions with
|
|||
|
different options is that some definition files for autoloading define
|
|||
|
multiple functions, including the function with the same name as the
|
|||
|
file, and, at the end, call that function. In such cases the output of
|
|||
|
‘`zcompile -c`’ does not include the additional functions defined in
|
|||
|
the file, and any other initialization code in the file is lost. Using
|
|||
|
‘`zcompile -a`’ captures all this extra information.
|
|||
|
|
|||
|
If the `-m` option is combined with `-c` or `-a`, the `name`s are used
|
|||
|
as patterns and all functions whose names match one of these patterns
|
|||
|
will be written. If no `name` is given, the definitions of all functions
|
|||
|
currently defined or marked as autoloaded will be written.
|
|||
|
|
|||
|
Note the second form cannot be used for compiling functions that include
|
|||
|
redirections as part of the definition rather than within the body of
|
|||
|
the function; for example
|
|||
|
|
|||
|
<div class="example">
|
|||
|
|
|||
|
``` example
|
|||
|
fn1() { { ... } >~/logfile }
|
|||
|
```
|
|||
|
|
|||
|
</div>
|
|||
|
|
|||
|
can be compiled but
|
|||
|
|
|||
|
<div class="example">
|
|||
|
|
|||
|
``` example
|
|||
|
fn1() { ... } >~/logfile
|
|||
|
```
|
|||
|
|
|||
|
</div>
|
|||
|
|
|||
|
cannot. It is possible to use the first form of `zcompile` to compile
|
|||
|
autoloadable functions that include the full function definition instead
|
|||
|
of just the body of the function.
|
|||
|
|
|||
|
The third form, with the `-t` option, examines an existing compiled
|
|||
|
file. Without further arguments, the names of the original files
|
|||
|
compiled into it are listed. The first line of output shows the version
|
|||
|
of the shell which compiled the file and how the file will be used (i.e.
|
|||
|
by reading it directly or by mapping it into memory). With arguments,
|
|||
|
nothing is output and the return status is set to zero if definitions
|
|||
|
for *all* `name`s were found in the compiled file, and non-zero if the
|
|||
|
definition for at least one `name` was not found.
|
|||
|
|
|||
|
Other options:
|
|||
|
|
|||
|
- `-U`
|
|||
|
Aliases are not expanded when compiling the `name`d files.
|
|||
|
|
|||
|
- `-R`
|
|||
|
When the compiled file is read, its contents are copied into the
|
|||
|
shell’s memory, rather than memory-mapped (see `-M`). This happens
|
|||
|
automatically on systems that do not support memory mapping.
|
|||
|
|
|||
|
When compiling scripts instead of autoloadable functions, it is
|
|||
|
often desirable to use this option; otherwise the whole file,
|
|||
|
including the code to define functions which have already been
|
|||
|
defined, will remain mapped, consequently wasting memory.
|
|||
|
|
|||
|
- `-M`
|
|||
|
The compiled file is mapped into the shell’s memory when read. This
|
|||
|
is done in such a way that multiple instances of the shell running
|
|||
|
on the same host will share this mapped file. If neither `-R` nor
|
|||
|
`-M` is given, the `zcompile` builtin decides what to do based on
|
|||
|
the size of the compiled file.
|
|||
|
|
|||
|
- `-k`
|
|||
|
`-z`
|
|||
|
These options are used when the compiled file contains functions
|
|||
|
which are to be autoloaded. If `-z` is given, the function will be
|
|||
|
autoloaded as if the `KSH_AUTOLOAD` option is *not* set, even if it
|
|||
|
is set at the time the compiled file is read, while if the `-k` is
|
|||
|
given, the function will be loaded as if `KSH_AUTOLOAD` *is* set.
|
|||
|
These options also take precedence over any `-k` or `-z` options
|
|||
|
specified to the `autoload` builtin. If neither of these options is
|
|||
|
given, the function will be loaded as determined by the setting of
|
|||
|
the `KSH_AUTOLOAD` option at the time the compiled file is read.
|
|||
|
|
|||
|
These options may also appear as many times as necessary between the
|
|||
|
listed `name`s to specify the loading style of all following
|
|||
|
functions, up to the next `-k` or `-z`.
|
|||
|
|
|||
|
The created file always contains two versions of the compiled format,
|
|||
|
one for big-endian machines and one for small-endian machines. The
|
|||
|
upshot of this is that the compiled file is machine independent and if
|
|||
|
it is read or mapped, only one half of the file is actually used (and
|
|||
|
mapped).
|
|||
|
|
|||
|
`zformat`
|
|||
|
|
|||
|
See [The zsh/zutil Module](Zsh-Modules.html#The-zsh_002fzutil-Module).
|
|||
|
|
|||
|
`zftp`
|
|||
|
|
|||
|
See [The zsh/zftp Module](Zsh-Modules.html#The-zsh_002fzftp-Module).
|
|||
|
|
|||
|
`zle`
|
|||
|
|
|||
|
See [Zle Builtins](Zsh-Line-Editor.html#Zle-Builtins).
|
|||
|
|
|||
|
<span id="index-zmodload"></span>
|
|||
|
<span id="index-modules_002c-loading"></span>
|
|||
|
<span id="index-loading-modules"></span>
|
|||
|
|
|||
|
`zmodload` \[ `-dL` \] \[ `-s` \] \[ ... \]
|
|||
|
|
|||
|
`zmodload -F` \[ `-alLme` `-P` `param` \] `module` \[ \[`+-`\]`feature`
|
|||
|
... \]
|
|||
|
|
|||
|
`zmodload -e` \[ `-A` \] \[ ... \]
|
|||
|
|
|||
|
`zmodload` \[ `-a` \[ `-bcpf` \[ `-I` \] \] \] \[ `-iL` \] ...
|
|||
|
|
|||
|
`zmodload` `-u` \[ `-abcdpf` \[ `-I` \] \] \[ `-iL` \] ...
|
|||
|
|
|||
|
`zmodload` `-A` \[ `-L` \] \[ `modalias`\[`=``module`\] ... \]
|
|||
|
|
|||
|
`zmodload` `-R` `modalias` ...
|
|||
|
|
|||
|
Performs operations relating to zsh’s loadable modules. Loading of
|
|||
|
modules while the shell is running (‘dynamical loading’) is not
|
|||
|
available on all operating systems, or on all installations on a
|
|||
|
particular operating system, although the `zmodload` command itself is
|
|||
|
always available and can be used to manipulate modules built into
|
|||
|
versions of the
|
|||
|
|
|||
|
Without arguments the names of all currently loaded binary modules are
|
|||
|
printed. The `-L` option causes this list to be in the form of a series
|
|||
|
of `zmodload` commands. Forms with arguments are:
|
|||
|
|
|||
|
- `zmodload` \[ `-is` \] `name` ...
|
|||
|
`zmodload` `-u` \[ `-i` \] `name` ...
|
|||
|
In the simplest case, `zmodload` loads a binary module. The module
|
|||
|
must be in a file with a name consisting of the specified `name`
|
|||
|
followed by a standard suffix, usually ‘`.so`’ (‘`.sl`’ on HPUX). If
|
|||
|
the module to be loaded is already loaded the duplicate module is
|
|||
|
ignored. If `zmodload` detects an inconsistency, such as an invalid
|
|||
|
module name or circular dependency list, the current code block is
|
|||
|
aborted. If it is available, the module is loaded if necessary,
|
|||
|
while if it is not available, non-zero status is silently returned.
|
|||
|
The option `-i` is accepted for compatibility but has no effect.
|
|||
|
|
|||
|
The `name`d module is searched for in the same way a command is,
|
|||
|
using `$module_path` instead of `$path`. However, the path search is
|
|||
|
performed even when the module name contains a ‘`/`’, which it
|
|||
|
usually does. There is no way to prevent the path search.
|
|||
|
|
|||
|
If the module supports features (see below), `zmodload` tries to
|
|||
|
enable all features when loading a module. If the module was
|
|||
|
successfully loaded but not all features could be enabled,
|
|||
|
`zmodload` returns status 2.
|
|||
|
|
|||
|
If the option `-s` is given, no error is printed if the module was
|
|||
|
not available (though other errors indicating a problem with the
|
|||
|
module are printed). The return status indicates if the module was
|
|||
|
loaded. This is appropriate if the caller considers the module
|
|||
|
optional.
|
|||
|
|
|||
|
With `-u`, `zmodload` unloads modules. The same `name` must be given
|
|||
|
that was given when the module was loaded, but it is not necessary
|
|||
|
for the module to exist in the file system. The `-i` option
|
|||
|
suppresses the error if the module is already unloaded (or was never
|
|||
|
loaded).
|
|||
|
|
|||
|
Each module has a boot and a cleanup function. The module will not
|
|||
|
be loaded if its boot function fails. Similarly a module can only be
|
|||
|
unloaded if its cleanup function runs successfully.
|
|||
|
|
|||
|
- `zmodload -F` \[ `-almLe` `-P` `param` \] `module` \[
|
|||
|
\[`+-`\]`feature` ... \]
|
|||
|
`zmodload -F` allows more selective control over the features
|
|||
|
provided by modules. With no options apart from `-F`, the module
|
|||
|
named `module` is loaded, if it was not already loaded, and the list
|
|||
|
of `feature`s is set to the required state. If no `feature`s are
|
|||
|
specified, the module is loaded, if it was not already loaded, but
|
|||
|
the state of features is unchanged. Each feature may be preceded by
|
|||
|
a `+` to turn the feature on, or `-` to turn it off; the `+` is
|
|||
|
assumed if neither character is present. Any feature not explicitly
|
|||
|
mentioned is left in its current state; if the module was not
|
|||
|
previously loaded this means any such features will remain disabled.
|
|||
|
The return status is zero if all features were set, 1 if the module
|
|||
|
failed to load, and 2 if some features could not be set (for
|
|||
|
example, a parameter couldn’t be added because there was a different
|
|||
|
parameter of the same name) but the module was loaded.
|
|||
|
|
|||
|
The standard features are builtins, conditions, parameters and math
|
|||
|
functions; these are indicated by the prefix ‘`b:`’, ‘`c:`’ (‘`C:`’
|
|||
|
for an infix condition), ‘`p:`’ and ‘`f:`’, respectively, followed
|
|||
|
by the name that the corresponding feature would have in the shell.
|
|||
|
For example, ‘`b:strftime`’ indicates a builtin named `strftime` and
|
|||
|
`p:EPOCHSECONDS` indicates a parameter named `EPOCHSECONDS`. The
|
|||
|
module may provide other (‘abstract’) features of its own as
|
|||
|
indicated by its documentation; these have no prefix.
|
|||
|
|
|||
|
With `-l` or `-L`, features provided by the module are listed. With
|
|||
|
`-l` alone, a list of features together with their states is shown,
|
|||
|
one feature per line. With `-L` alone, a `zmodload -F` command that
|
|||
|
would cause enabled features of the module to be turned on is shown.
|
|||
|
With `-lL`, a `zmodload -F` command that would cause all the
|
|||
|
features to be set to their current state is shown. If one of these
|
|||
|
combinations is given with the option `-P` `param` then the
|
|||
|
parameter `param` is set to an array of features, either features
|
|||
|
together with their state or (if `-L` alone is given) enabled
|
|||
|
features.
|
|||
|
|
|||
|
With the option `-L` the module name may be omitted; then a list of
|
|||
|
all enabled features for all modules providing features is printed
|
|||
|
in the form of `zmodload -F` commands. If `-l` is also given, the
|
|||
|
state of both enabled and disabled features is output in that form.
|
|||
|
|
|||
|
A set of features may be provided together with `-l` or `-L` and a
|
|||
|
module name; in that case only the state of those features is
|
|||
|
considered. Each feature may be preceded by `+` or `-` but the
|
|||
|
character has no effect. If no set of features is provided, all
|
|||
|
features are considered.
|
|||
|
|
|||
|
With `-e`, the command first tests that the module is loaded; if it
|
|||
|
is not, status 1 is returned. If the module is loaded, the list of
|
|||
|
features given as an argument is examined. Any feature given with no
|
|||
|
prefix is simply tested to see if the module provides it; any
|
|||
|
feature given with a prefix `+` or `-` is tested to see if is
|
|||
|
provided and in the given state. If the tests on all features in the
|
|||
|
list succeed, status 0 is returned, else status 1.
|
|||
|
|
|||
|
With `-m`, each entry in the given list of features is taken as a
|
|||
|
pattern to be matched against the list of features provided by the
|
|||
|
module. An initial `+` or `-` must be given explicitly. This may not
|
|||
|
be combined with the `-a` option as autoloads must be specified
|
|||
|
explicitly.
|
|||
|
|
|||
|
With `-a`, the given list of features is marked for autoload from
|
|||
|
the specified module, which may not yet be loaded. An optional `+`
|
|||
|
may appear before the feature name. If the feature is prefixed with
|
|||
|
`-`, any existing autoload is removed. The options `-l` and `-L` may
|
|||
|
be used to list autoloads. Autoloading is specific to individual
|
|||
|
features; when the module is loaded only the requested feature is
|
|||
|
enabled. Autoload requests are preserved if the module is
|
|||
|
subsequently unloaded until an explicit ‘`zmodload -Fa` `module`
|
|||
|
`-``feature`’ is issued. It is not an error to request an autoload
|
|||
|
for a feature of a module that is already loaded.
|
|||
|
|
|||
|
When the module is loaded each autoload is checked against the
|
|||
|
features actually provided by the module; if the feature is not
|
|||
|
provided the autoload request is deleted. A warning message is
|
|||
|
output; if the module is being loaded to provide a different
|
|||
|
feature, and that autoload is successful, there is no effect on the
|
|||
|
status of the current command. If the module is already loaded at
|
|||
|
the time when `zmodload -Fa` is run, an error message is printed and
|
|||
|
status 1 returned.
|
|||
|
|
|||
|
`zmodload -Fa` can be used with the `-l`, `-L`, `-e` and `-P`
|
|||
|
options for listing and testing the existence of autoloadable
|
|||
|
features. In this case `-l` is ignored if `-L` is specified.
|
|||
|
`zmodload -FaL` with no module name lists autoloads for all modules.
|
|||
|
|
|||
|
Note that only standard features as described above can be
|
|||
|
autoloaded; other features require the module to be loaded before
|
|||
|
enabling.
|
|||
|
|
|||
|
- `zmodload` `-d` \[ `-L` \] \[ `name` \]
|
|||
|
`zmodload` `-d` `name` `dep` ...
|
|||
|
`zmodload` `-ud` `name` \[ `dep` ... \]
|
|||
|
The `-d` option can be used to specify module dependencies. The
|
|||
|
modules named in the second and subsequent arguments will be loaded
|
|||
|
before the module named in the first argument.
|
|||
|
|
|||
|
With `-d` and one argument, all dependencies for that module are
|
|||
|
listed. With `-d` and no arguments, all module dependencies are
|
|||
|
listed. This listing is by default in a Makefile-like format. The
|
|||
|
`-L` option changes this format to a list of `zmodload -d` commands.
|
|||
|
|
|||
|
If `-d` and `-u` are both used, dependencies are removed. If only
|
|||
|
one argument is given, all dependencies for that module are removed.
|
|||
|
|
|||
|
- `zmodload` `-ab` \[ `-L` \]
|
|||
|
`zmodload` `-ab` \[ `-i` \] `name` \[ `builtin` ... \]
|
|||
|
`zmodload` `-ub` \[ `-i` \] `builtin` ...
|
|||
|
The `-ab` option defines autoloaded builtins. It defines the
|
|||
|
specified `builtin`s. When any of those builtins is called, the
|
|||
|
module specified in the first argument is loaded and all its
|
|||
|
features are enabled (for selective control of features use
|
|||
|
‘`zmodload -F -a`’ as described above). If only the `name` is
|
|||
|
given, one builtin is defined, with the same name as the module.
|
|||
|
`-i` suppresses the error if the builtin is already defined or
|
|||
|
autoloaded, but not if another builtin of the same name is already
|
|||
|
defined.
|
|||
|
|
|||
|
With `-ab` and no arguments, all autoloaded builtins are listed,
|
|||
|
with the module name (if different) shown in parentheses after the
|
|||
|
builtin name. The `-L` option changes this format to a list of
|
|||
|
`zmodload -a` commands.
|
|||
|
|
|||
|
If `-b` is used together with the `-u` option, it removes builtins
|
|||
|
previously defined with `-ab`. This is only possible if the builtin
|
|||
|
is not yet loaded. `-i` suppresses the error if the builtin is
|
|||
|
already removed (or never existed).
|
|||
|
|
|||
|
Autoload requests are retained if the module is subsequently
|
|||
|
unloaded until an explicit ‘`zmodload -ub` `builtin`’ is issued.
|
|||
|
|
|||
|
- `zmodload` `-ac` \[ `-IL` \]
|
|||
|
`zmodload` `-ac` \[ `-iI` \] `name` \[ `cond` ... \]
|
|||
|
`zmodload` `-uc` \[ `-iI` \] `cond` ...
|
|||
|
The `-ac` option is used to define autoloaded condition codes. The
|
|||
|
`cond` strings give the names of the conditions defined by the
|
|||
|
module. The optional `-I` option is used to define infix condition
|
|||
|
names. Without this option prefix condition names are defined.
|
|||
|
|
|||
|
If given no condition names, all defined names are listed (as a
|
|||
|
series of `zmodload` commands if the `-L` option is given).
|
|||
|
|
|||
|
The `-uc` option removes definitions for autoloaded conditions.
|
|||
|
|
|||
|
- `zmodload` `-ap` \[ `-L` \]
|
|||
|
`zmodload` `-ap` \[ `-i` \] `name` \[ `parameter` ... \]
|
|||
|
`zmodload` `-up` \[ `-i` \] `parameter` ...
|
|||
|
The `-p` option is like the `-b` and `-c` options, but makes
|
|||
|
`zmodload` work on autoloaded parameters instead.
|
|||
|
|
|||
|
- `zmodload` `-af` \[ `-L` \]
|
|||
|
`zmodload` `-af` \[ `-i` \] `name` \[ `function` ... \]
|
|||
|
`zmodload` `-uf` \[ `-i` \] `function` ...
|
|||
|
The `-f` option is like the `-b`, `-p`, and `-c` options, but makes
|
|||
|
`zmodload` work on autoloaded math functions instead.
|
|||
|
|
|||
|
- `zmodload` `-a` \[ `-L` \]
|
|||
|
`zmodload` `-a` \[ `-i` \] `name` \[ `builtin` ... \]
|
|||
|
`zmodload` `-ua` \[ `-i` \] `builtin` ...
|
|||
|
Equivalent to `-ab` and `-ub`.
|
|||
|
|
|||
|
- `zmodload -e` \[ `-A` \] \[ `string` ... \]
|
|||
|
The `-e` option without arguments lists all loaded modules; if the
|
|||
|
`-A` option is also given, module aliases corresponding to loaded
|
|||
|
modules are also shown. If arguments are provided, nothing is
|
|||
|
printed; the return status is set to zero if all `string`s given as
|
|||
|
arguments are names of loaded modules and to one if at least on
|
|||
|
`string` is not the name of a loaded module. This can be used to
|
|||
|
test for the availability of things implemented by modules. In this
|
|||
|
case, any aliases are automatically resolved and the `-A` flag is
|
|||
|
not used.
|
|||
|
|
|||
|
- `zmodload` `-A` \[ `-L` \] \[ `modalias`\[`=``module`\] ... \]
|
|||
|
For each argument, if both `modalias` and `module` are given, define
|
|||
|
`modalias` to be an alias for the module `module`. If the module
|
|||
|
`modalias` is ever subsequently requested, either via a call to
|
|||
|
`zmodload` or implicitly, the shell will attempt to load `module`
|
|||
|
instead. If `module` is not given, show the definition of
|
|||
|
`modalias`. If no arguments are given, list all defined module
|
|||
|
aliases. When listing, if the `-L` flag was also given, list the
|
|||
|
definition as a `zmodload` command to recreate the alias.
|
|||
|
|
|||
|
The existence of aliases for modules is completely independent of
|
|||
|
whether the name resolved is actually loaded as a module: while the
|
|||
|
alias exists, loading and unloading the module under any alias has
|
|||
|
exactly the same effect as using the resolved name, and does not
|
|||
|
affect the connection between the alias and the resolved name which
|
|||
|
can be removed either by `zmodload -R` or by redefining the alias.
|
|||
|
Chains of aliases (i.e. where the first resolved name is itself an
|
|||
|
alias) are valid so long as these are not circular. As the aliases
|
|||
|
take the same format as module names, they may include path
|
|||
|
separators: in this case, there is no requirement for any part of
|
|||
|
the path named to exist as the alias will be resolved first. For
|
|||
|
example, ‘`any/old/alias`’ is always a valid alias.
|
|||
|
|
|||
|
Dependencies added to aliased modules are actually added to the
|
|||
|
resolved module; these remain if the alias is removed. It is valid
|
|||
|
to create an alias whose name is one of the standard shell modules
|
|||
|
and which resolves to a different module. However, if a module has
|
|||
|
dependencies, it will not be possible to use the module name as an
|
|||
|
alias as the module will already be marked as a loadable module in
|
|||
|
its own right.
|
|||
|
|
|||
|
Apart from the above, aliases can be used in the `zmodload` command
|
|||
|
anywhere module names are required. However, aliases will not be
|
|||
|
shown in lists of loaded modules with a bare ‘`zmodload`’.
|
|||
|
|
|||
|
- `zmodload` `-R` `modalias` ...
|
|||
|
For each `modalias` argument that was previously defined as a module
|
|||
|
alias via `zmodload -A`, delete the alias. If any was not defined,
|
|||
|
an error is caused and the remainder of the line is ignored.
|
|||
|
|
|||
|
Note that `zsh` makes no distinction between modules that were linked
|
|||
|
into the shell and modules that are loaded dynamically. In both cases
|
|||
|
this builtin command has to be used to make available the builtins and
|
|||
|
other things defined by modules (unless the module is autoloaded on
|
|||
|
these definitions). This is true even for systems that don’t support
|
|||
|
dynamic loading of modules.
|
|||
|
|
|||
|
`zparseopts`
|
|||
|
|
|||
|
See [The zsh/zutil Module](Zsh-Modules.html#The-zsh_002fzutil-Module).
|
|||
|
|
|||
|
`zprof`
|
|||
|
|
|||
|
See [The zsh/zprof Module](Zsh-Modules.html#The-zsh_002fzprof-Module).
|
|||
|
|
|||
|
`zpty`
|
|||
|
|
|||
|
See [The zsh/zpty Module](Zsh-Modules.html#The-zsh_002fzpty-Module).
|
|||
|
|
|||
|
`zregexparse`
|
|||
|
|
|||
|
See [The zsh/zutil Module](Zsh-Modules.html#The-zsh_002fzutil-Module).
|
|||
|
|
|||
|
`zsocket`
|
|||
|
|
|||
|
See [The zsh/net/socket
|
|||
|
Module](Zsh-Modules.html#The-zsh_002fnet_002fsocket-Module).
|
|||
|
|
|||
|
`zstyle`
|
|||
|
|
|||
|
See [The zsh/zutil Module](Zsh-Modules.html#The-zsh_002fzutil-Module).
|
|||
|
|
|||
|
`ztcp`
|
|||
|
|
|||
|
See [The zsh/net/tcp
|
|||
|
Module](Zsh-Modules.html#The-zsh_002fnet_002ftcp-Module).
|
|||
|
|
|||
|
-----
|
|||
|
|
|||
|
This document was generated on *February 15, 2020* using
|
|||
|
[*texi2html 5.0*](http://www.nongnu.org/texi2html/).
|
|||
|
Zsh version 5.8, released on February 14, 2020.
|