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

FreeBSD Manual Pages


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

       zshroadmap  -  informal	introduction to	the zsh	manual 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.

       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 func-
       tion is run to help you change some of the most	common	settings.   It
       won't appear if your administrator has disabled the zsh/newuser module.
       The function is designed	to be self-explanatory.	 You  can  run	it  by
       hand  with  `autoload -Uz zsh-newuser-install; zsh-newuser-install -f'.
       See also	the section `User Configuration	Functions' in zshcontrib(1).

       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
       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 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) HISTFILE,
       HISTSIZE	and SAVEHIST in	zshparam(1).  Note that	 it's  currently  only
       possible	 to  read and write files saving history when the shell	is in-
       teractive, 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 transpar-
       ently by	the shell, but the degree of support in	terminal emulators  is
       variable.   There  is  some  discussion	of  this  in  the  shell  FAQ,  Note in particular that for combining	 char-
       acters  to  be handled the option COMBINING_CHARS needs to be set.  Be-
       cause the shell is now more sensitive to	the definition of the  charac-
       ter  set,  note	that if	you are	upgrading from an older	version	of the
       shell you should	ensure that the	appropriate variable, either LANG  (to
       affect  all  aspects  of	 the shell's operation)	or LC_CTYPE (to	affect
       only the	handling of character sets) is set to  an  appropriate	value.
       This  is	true even if you are using a single-byte character set includ-
       ing extensions of ASCII such as ISO-8859-1 or ISO-8859-15.  See the de-
       scription of LC_CTYPE in	zshparam(1).

       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 exam-
       ple, the	shell can be set to complete email addresses in	 arguments  to
       the  mail command 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 interface),	and a new one, referred	to as  compsys,	 organized  as
       library	of builtin and user-defined functions.	The two	systems	differ
       in their	interface for specifying the  completion  behavior.   The  new
       system  is  more	customizable 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:

	      composing	characters not found on	the keyboard

	      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 com-
	      mand line

	      edit the command line with an external editor.

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

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

       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 pro-
       gramming.  These	are described in the section `Filename Generation'  in

       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  EX-
	      TENDED_GLOB option is set

       (...)  glob  qualifiers,	included in parentheses	at the end of the pat-
	      tern, which select files by type (such as	directories) or	attri-
	      bute (such as size).

       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 the section  `Shell  Grammar'  in

       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 zsh-
       expn(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).

       The most	convenient way of adding enhancements to the  shell  is	 typi-
       cally  by  writing  a  shell  function  and  arranging for it to	be au-
       toloaded.  Functions are	described in the section `Functions'  in  zsh-
       misc(1).	  Users	changing from the C shell and its relatives should no-
       tice 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	zshcontrib(1).
       Features	include:

	      a	 prompt	theme system for changing prompts easily, see the sec-
	      tion `Prompt Themes'

	      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				 May 14, 2022			 ZSHROADMAP(1)


Want to link to this manual page? Use this URL:

home | help