mirror of
git://git.code.sf.net/p/zsh/code
synced 2024-11-19 05:24:23 +01:00
405fd07656
22058: tweak docs for release
166 lines
6.2 KiB
Plaintext
166 lines
6.2 KiB
Plaintext
texinode(Roadmap)(Invocation)(Introduction)(Top)
|
|
chapter(Roadmap)
|
|
cindex(roadmap)
|
|
|
|
The Zsh Manual, like the shell itself, is large and often complicated.
|
|
This section of the manual provides some pointers to areas of the shell
|
|
that are likely to be of particular interest to new users, and indicates
|
|
where in the rest of the manual the documentation is to be found.
|
|
|
|
sect(When the shell starts)
|
|
|
|
When it starts, the shell reads commands from various files. These can
|
|
be created or edited to customize the shell. See ifzman(the section
|
|
Startup/Shutdown Files in zmanref(zsh))\
|
|
ifnzman(noderef(Files)).
|
|
|
|
If no personal intialization files exist for the current user, a function
|
|
is run to help you change some of the most common settings. It won't
|
|
appear if your administrator has disabled the tt(zsh/newuser) module.
|
|
The function is designed to be self-explanatory. You can run it by hand
|
|
with `tt(autoload -Uz zsh-newuser-install; zsh-newuser-install -f)'.
|
|
|
|
sect(Interactive Use)
|
|
|
|
Interaction with the shell uses the builtin Zsh Line Editor, ZLE. This is
|
|
described in detail in ifzman(zmanref(zshzle))\
|
|
ifnzman(noderef(Zsh Line Editor)).
|
|
|
|
The first decision a user must make is whether to use the Emacs or Vi
|
|
editing mode as the keys for editing are substantially different. Emacs
|
|
editing mode is probably more natural for beginners and can be selected
|
|
explicitly with the command tt(bindkey -e).
|
|
|
|
A history mechanism for retrieving previously typed lines (most simply
|
|
with the Up or Down arrow keys) is available; note that, unlike other
|
|
shells, zsh will not save these lines when the shell exits unless you
|
|
set appropriate variables, and the number of history lines retained by
|
|
default is quite small (30 lines). See the description of the shell
|
|
variables (referred to in the documentation as parameters) tt(HISTFILE),
|
|
tt(HISTSIZE) and tt(SAVEHIST) in ifzman(zmanref(zshparams))\
|
|
ifnzman(noderef(Parameters Used By The Shell)).
|
|
|
|
The line editor provides an extensive completion system and the shell
|
|
is supplied with completions for many commonly used commands. Note
|
|
that the new completion system referred to as tt(compsys) is preferred
|
|
over the older tt(compctl) system. The completion system must be enabled
|
|
explicitly when the shell starts. For more information see
|
|
ifzman(zmanref(zshcompsys))\
|
|
ifnzman(noderef(Completion System)).
|
|
|
|
Apart from completion, the line editor is highly extensible by means of
|
|
shell functions. Some useful functions are provided with the shell; they
|
|
provide facilities such as:
|
|
|
|
startitem()
|
|
item(tt(insert-composed-char))(
|
|
composing characters not found on the keyboard
|
|
)
|
|
item(tt(match-words-by-style))(
|
|
configuring what the line editor considers a word when moving or
|
|
deleting by word
|
|
)
|
|
item(tt(history-beginning-search-backward-end), etc.)(
|
|
alternative ways of searching the shell history
|
|
)
|
|
item(tt(replace-string), tt(replace-pattern))(
|
|
functions for replacing strings or patterns globally in the command line
|
|
)
|
|
item(tt(edit-command-line))(
|
|
edit the command line with an external editor.
|
|
)
|
|
enditem()
|
|
|
|
See ifzman(the section `ZLE Functions' in zmanref(zshcontrib))\
|
|
ifnzman(noderef(ZLE Functions)) for descriptions of these.
|
|
|
|
sect(Options)
|
|
|
|
The shell has a large number of options for changing its behaviour.
|
|
These cover all aspects of the shell; browsing the full documentation is
|
|
the only good way to become acquainted with the many possibilities. See
|
|
ifzman(zmanref(zshoptions))\
|
|
ifnzman(noderef(Options)).
|
|
|
|
sect(Pattern Matching)
|
|
|
|
The shell has a rich set of patterns which are available for file matching
|
|
(described in the documentation as `filename generation' and also known for
|
|
historical reasons as `globbing') and for use when programming. These are
|
|
described in ifzman(the section `Filename Generation' in zmanref(zshexpn))\
|
|
ifnzman(noderef(Filename Generation)).
|
|
|
|
Of particular interest are the following patterns that are not commonly
|
|
supported by other systems of pattern matching:
|
|
|
|
startitem()
|
|
item(tt(**))(
|
|
for matching over multiple directories
|
|
)
|
|
item(tt(~), tt(^))(
|
|
the ability to exclude patterns from matching when the tt(EXTENDED_GLOB)
|
|
option is set
|
|
)
|
|
item(tt(LPAR())var(...)tt(RPAR()))(
|
|
glob qualifiers, included in parentheses at the end of the pattern,
|
|
which select files by type (such as directories) or attribute (such as
|
|
size).
|
|
)
|
|
enditem()
|
|
|
|
sect(General Comments on Syntax)
|
|
|
|
Although the syntax of zsh is in ways similar to the Korn shell, and
|
|
therefore more remotely to the original UNIX shell, the Bourne shell,
|
|
its default behaviour does not entirely correspond to those shells.
|
|
General shell syntax is introduced in ifzman(the section `Shell Grammar' in
|
|
zmanref(zshmisc))\
|
|
ifnzman(noderef(Shell Grammar)).
|
|
|
|
One commonly encountered difference is that variables substituted onto the
|
|
command line are not split into words. See the description of the shell option
|
|
tt(SH_WORD_SPLIT) in
|
|
ifzman(the section `Parameter Expansion' in zmanref(zshexpn))\
|
|
ifnzman(noderef(Parameter Expansion)).
|
|
In zsh, you should use arrays when you want variables to expand to more
|
|
than one word. See
|
|
ifzman(the section `Array Parameters' in zmanref(zshparam))\
|
|
ifnzman(noderef(Array Parameters)).
|
|
|
|
sect(Programming)
|
|
|
|
The most convenient way of adding enhancements to the shell is typically
|
|
by writing a shell function and arranging for it to be autoloaded.
|
|
Functions are described in ifzman(the section `Functions' in
|
|
zmanref(zshmisc))\
|
|
ifnzman(noderef(Functions)). Users changing from the C shell and its
|
|
relatives should notice that aliases are less used in zsh as they don't
|
|
perform argument substitution, only simple text replacement.
|
|
|
|
A few general functions, other than those for the line editor described
|
|
above, are provided with the shell and are described in
|
|
ifzman(zmanref(zshcontrib))\
|
|
ifnzman(noderef(User Contributions)). Features include:
|
|
|
|
startitem()
|
|
item(tt(promptinit))(
|
|
a prompt theme system for changing prompts easily, see ifzman(the section
|
|
`Prompt Themes'
|
|
)\
|
|
ifnzman(noderef(Prompt Themes))
|
|
)
|
|
item(tt(zsh-mime-setup))(
|
|
a MIME-handling system which dispatches commands according to the suffix of
|
|
a file as done by graphical file managers
|
|
)
|
|
item(tt(zcalc))(
|
|
a calculator
|
|
)
|
|
item(tt(zargs))(
|
|
a version of tt(xargs) that makes the tt(find) command redundant
|
|
)
|
|
item(tt(zmv))(
|
|
a command for renaming files by means of shell patterns.
|
|
)
|
|
enditem()
|