Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
ZSHROADMAP(1)		     General Commands Manual		   ZSHROADMAP(1)

NAME
     zshroadmap  -  informal introduction to the zsh manual The Zsh Manual, like
     the shell itself, is large and often complicated.	This section of the man-
     ual 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.

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 the section Startup/Shutdown
     Files in zsh(1).

     If  no personal initialization files exist for the current user, a function
     is run to help you change some of the most common settings.  It  won't  ap-
     pear  if your administrator has disabled the zsh/newuser module.  The func-
     tion is designed to be self-explanatory.  You can run it by hand with  `au-
     toload -Uz zsh-newuser-install; zsh-newuser-install -f'.  See also the sec-
     tion `User Configuration Functions' in zshcontrib(1).

INTERACTIVE USE
     Interaction  with the shell uses the builtin Zsh Line Editor, ZLE.  This is
     described in detail in zshzle(1).

     The first decision a user must make is whether to use the Emacs or Vi edit-
     ing mode as the keys for editing are substantially different.  Emacs  edit-
     ing mode is probably more natural for beginners and can be selected explic-
     itly with the command 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 appropri-
     ate 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) HISTFILE, HISTSIZE and SAVEHIST in zsh-
     param(1).	 Note  that it's currently only possible to read and write files
     saving history when the shell is interactive, i.e. it does  not  work  from
     scripts.

     The  shell  now  supports	the UTF-8 character set (and also others if sup-
     ported by the operating system).  This is (mostly) handled transparently by
     the shell, but the degree of support in  terminal	emulators  is  variable.
     There    is    some    discussion	  of	this	in    the   shell   FAQ,
     https://www.zsh.org/FAQ/.	Note in particular that for combining characters
     to be handled the option COMBINING_CHARS needs  to  be  set.   Because  the
     shell  is	now  more sensitive to the definition of the character set, note
     that if you are upgrading from an older version of the shell you should en-
     sure that the appropriate variable, either LANG (to affect all  aspects  of
     the  shell's operation) or LC_CTYPE (to affect only the handling of charac-
     ter sets) is set to an appropriate value.	This is true even if you are us-
     ing a single-byte character set  including  extensions  of  ASCII	such  as
     ISO-8859-1 or ISO-8859-15.  See the description of LC_CTYPE in zshparam(1).

   Completion
     Completion  is a feature present in many shells. It allows the user to type
     only a part (usually the prefix) of a word and have the shell fill  in  the
     rest.   The  completion  system  in  zsh is programmable.	For example, the
     shell can be set to complete email addresses in arguments to the mail  com-
     mand  from your ~/.abook/addressbook; usernames, hostnames, and even remote
     paths in arguments to scp, and so on.  Anything that can be written  in  or
     glued together with zsh can be the source of what the line editor offers as
     possible completions.

     Zsh has two completion systems, an old, so called compctl completion (named
     after  the builtin command that serves as its complete and only user inter-
     face), and a new one, referred to	as  compsys,  organized  as  library  of
     builtin and user-defined functions.  The two systems differ in their inter-
     face  for	specifying the completion behavior.  The new system is more cus-
     tomizable and is supplied with completions for many commonly used commands;
     it is therefore to be preferred.

     The completion system must be enabled explicitly  when  the  shell  starts.
     For more information see zshcompsys(1).

   Extending the line editor
     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:

     insert-composed-char
	    composing characters not found on the keyboard

     match-words-by-style
	    configuring  what  the  line  editor considers a word when moving or
	    deleting by word

     history-beginning-search-backward-end, etc.
	    alternative ways of searching the shell history

     replace-string, replace-pattern
	    functions for replacing strings or patterns globally in the  command
	    line

     edit-command-line
	    edit the command line with an external editor.

     See the section `ZLE Functions' in zshcontrib(1) for descriptions of these.

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  zshop-
     tions(1).

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 the section `Filename Generation' in zshexpn(1).

     Of  particular  interest  are  the following patterns that are not commonly
     supported by other systems of pattern matching:

     **     for matching over multiple directories

     |	    for matching either of two alternatives

     ~, ^   the ability to exclude patterns from matching when the EXTENDED_GLOB
	    option is set

     (...)  glob qualifiers, included in parentheses at the end of the	pattern,
	    which  select files by type (such as directories) or attribute (such
	    as size).

GENERAL COMMENTS ON SYNTAX
     Although the syntax of zsh is in ways similar to the Korn shell, and there-
     fore more remotely to the original UNIX shell, the Bourne	shell,	its  de-
     fault  behaviour  does  not  entirely  correspond to those shells.  General
     shell syntax is introduced in the section `Shell Grammar' in zshmisc(1).

     One commonly encountered difference is that variables substituted onto  the
     command  line  are  not split into words.	See the description of the shell
     option SH_WORD_SPLIT in the section `Parameter  Expansion'  in  zshexpn(1).
     In  zsh,  you can either explicitly request the splitting (e.g. ${=foo}) or
     use an array when you want a variable to expand to more than one word.  See
     the section `Array Parameters' in zshparam(1).

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  the  section `Functions' in zshmisc(1).  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  re-
     placement.

     A	few  general  functions,  other than those for the line editor described
     above, are provided with the shell  and  are  described  in  zshcontrib(1).
     Features include:

     promptinit
	    a  prompt  theme system for changing prompts easily, see the section
	    `Prompt Themes'

     zsh-mime-setup
	    a MIME-handling system which dispatches commands  according  to  the
	    suffix of a file as done by graphical file managers

     zcalc  a calculator

     zargs  a version of xargs that makes the find command redundant

     zmv    a command for renaming files by means of shell patterns.

zsh 5.9.1			  May 31, 2026			   ZSHROADMAP(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=zshroadmap&sektion=1&manpath=FreeBSD+Ports+15.1.quarterly>

home | help