     wcd(1)                              wcd                              wcd(1)
     2019-08-14                                                       2019-08-14

                                     2019-08-14

     NAME
          wcd - Wherever Change Directory

          chdir for DOS and Unix

     SYNOPSIS
              wcd [options] [directory]

     DESCRIPTION
        Overview
          Wcd is a command-line program to change directory fast. It saves time
          typing at the keyboard. One needs to type only a part of a directory
          name and wcd will jump to it. Wcd has a fast selection method in case
          of multiple matches and allows aliasing and banning of directories.
          Wcd also includes a full screen interactive directory tree browser
          with speed search.

          Wcd was modeled after Norton Change Directory (NCD). NCD appeared
          first in The Norton Utilities, Release 4, for DOS in 1987, published
          by Peter Norton.

          Wcd has been ported to different command-line shells: DOS command.com,
          Windows cmd.exe and PowerShell, OS/2 cmd.exe, and Unix shells such as
          Bourne (sh), Bourne Again (bash), Korn (ksh), Z (zsh), and C (csh)
          shell and others running on any operating system.

          Wcd supports 8 bit character sets on all systems, and has optional
          support for Unicode. See section LOCALIZATION.

          See section INSTALLATION how to setup wcd for personal use.

        Basic use
          By default (if no wildcards are used) wcd searches for a directory
          with a name that begins with the typed name.

          For instance this command will change to directory to the current
          user's "/home/user/Desktop":

              wcd Desk

          When there are multiple matches, wcd will present the user a list of
          all matches. The user can then make a selection with a few keystrokes
          (most of the times only one).

        Wildcards
          Wcd supports following wildcards:

                                        - 1 -       Formatted:  October 18, 2019

     wcd(1)                              wcd                              wcd(1)
     2019-08-14                                                       2019-08-14

                                     2019-08-14

              *       matches any sequence of characters (zero or more)
              ?       matches any character
              [SET]   matches any character in the specified set,
              [!SET]  or [^SET] matches any character not in the specified set.

          A set is composed of characters or ranges; a range looks like
          character hyphen character as in "0-9" or "A-Z". The "[0-9a-zA-Z_]" is
          the minimal set of characters allowed in the "[..]" pattern construct.
          International characters (i.e. 8 bit characters) are allowed if the
          system supports them. To suppress the special syntactic significance
          of any of "[]*?!^-\" inside or outside a "[..]" construct and match
          the character exactly, precede the character with a backslash ("\")
          marker.

          Using wildcards makes powerful searching possible. For instance this
          matches any directory name that ends with "top":

              wcd *top

          Match directories that have "top" anywhere in the name:

              wcd *top*

          Match any directory name that begins with "a", "b" or "c":

              wcd [a-c]*

          It is also possible to give a part of a directory path. Here Wcd
          searches for directory that begins with "Desk" and which path matches
          *me/Desk*.

              wcd me/Desk

          It is allowed to type any kind of expression with slashes and
          wildcards.  E.g.:

              wcd src*/*1?/a*2

        Other uses
          If no wildcards are used and wcd finds a perfect match, wcd will
          ignore all wild matches by default. This behaviour can be changed with
          the -w option.

          The interactive directory tree browser can be started by using option
          -g.

              wcd -g

          Wcd generates a treedata file where it searches the directory. On Unix

                                        - 2 -       Formatted:  October 18, 2019

     wcd(1)                              wcd                              wcd(1)
     2019-08-14                                                       2019-08-14

                                     2019-08-14

          and Windows systems wcd does add symbolic links to the treedata file
          while scanning the disk, but does not follow them. While following
          links wcd could end up scanning infinite loops, or scan very large
          portions of a network.

          Wcd can also change to directories that are not in the treedata file.
          E.g.:

              wcd ..

          If wcd found a match but can't change to the directory it tries to
          remove it from the default treedata file. Not from the extra treedata
          file. See also option -k.

          Wcd keeps a directory stack which is stored on disk. The stack has a
          default size of 10 and is cyclic. See options -z, -, + and =.

          In multi-user environments option -u can be used to change to
          directories of other users.

          On DOS and Windows systems it does not matter if you use a slash "/"
          or a backslash "\" as a directory separator.

          It is possible on DOS and Windows systems to change drive and
          directory in one go by preceding the directory name with the drive
          name.

              wcd d:games

        Windows UNC paths
          The Windows versions (Command Prompt, PowerShell, MSYS, zsh, cygwin)
          support Windows SMB LAN UNC paths without drive letter such as
          "\\servername\sharename". Wcd for Windows Command Prompt makes use of
          the "pushd" command to automatically map a UNC path to a drive letter.
          In Windows PowerShell, MSYS, zsh and Cygwin UNC paths are fully
          supported. The current working directory can be a UNC path.

        Console resizing on Windows
          Wcd supports console resizing in Windows 10 console and ConEmu (see
          <https://conemu.github.io/>) since version 6.0.3. The Windows 10
          console must not be in legacy mode (check the console's properties).
          The screen may not refresh when the console Layout property "Wrap text
          output on resize" is disabled. The screen can be refreshed manually by
          pressing the F5 key.

        Interfaces
          Wcd has three different interfaces to choose from a list of matches.
          The interface can be chosen at compile time.

                                        - 3 -       Formatted:  October 18, 2019

     wcd(1)                              wcd                              wcd(1)
     2019-08-14                                                       2019-08-14

                                     2019-08-14

          The first interface uses plain stdin/stdout. A numbered list is
          printed in the terminal. The user has to choose from the list by
          typing a number followed by <Enter>. This interface does not provide
          scroll back functionality in case of a long list. The scroll back
          capability of the terminal/console has to be used. It is very small
          and portable.

          The second interface is built with the conio library. It provides a
          builtin scroll back capability. The user is presented a list numbered
          with letters.  Choosing from a list can be done by pressing just one
          letter. This interface is fast because it saves keystrokes. If
          possible the screen will be restored after exiting. One who prefers to
          type numbers can use the -N option.

          The third interface is built with the curses library. It is similar to
          the conio interface. The curses version of wcd has also an additional
          'graphical' interface. It lets the user select a directory via a full
          screen interactive directory tree browser. It has a vim(1) like
          navigation and search method. It can be activated with option -g.

          By using the -o option one can always fall back to the stdin/stdout
          interface.

     OPTIONS
          -a  Add current path to the default treedata file.

              Use this option to quickly add the current path to the default
              treedata file. Re-scanning the complete disk can take a long time
              in some cases.

          -aa Add current and all parent paths to the default treedata file.

          -A PATH
              Scan directory tree from PATH and append to the default treedata
              file. Examples:

                  wcd -A .
                  wcd -A /home -A /etc
                  wcd -A d: -A e: -A \\server\share

              On Windows one can scan all shared directories of a Windows LAN
              server by typing something like: "wcd -A \\servername".

              See also option -S and -s and -E.

          -b  Ban current path.

              Wcd places the current path in the ban file. This means that wcd
              ignores all matches of this directory and its sub directories.

                                        - 4 -       Formatted:  October 18, 2019

     wcd(1)                              wcd                              wcd(1)
     2019-08-14                                                       2019-08-14

                                     2019-08-14

              The ban file can be edited with a text editor. Use of wildcards is
              supported and names are matched against the absolute path.

              Banned paths are not excluded from scanning the disk. To do that
              use option -xf.

          -c, --direct-cd
              Direct CD mode. By default wcd works as follows:

                  1. Try to find a match in the treedata file(s)
                  2. If no match, try to open the directory you typed.

              In direct CD mode wcd works in reversed order.

                  1. Try to open the directory you typed.
                  2. If not, try to find a match in the treedata file(s).

          -d DRIVE
              Set drive for stack and go file (DOS only).

              The stack file and the go-script are by default stored on drive C:
              if environment variable HOME is not set. Use this option if drive
              C: is a read-only drive. This option must be used in front of the
              stack options -, + and =.

          -e  Add current path to the extra treedata file.

              Use this option to quickly add the current path to the extra
              treedata file.

          -ee Add current and all parent paths to extra treedata file.

          -E PATH
              Scan directory tree from PATH and append to Extra treedata file.
              See also options -A and -S.

          -f FILE
              Read treedata file FILE. Do not read the default treedata file.

          +f FILE
              Read treedata file FILE in addition to the default treedata file.

          -g  Graphical interface (only in version with curses interface).

              Wcd starts a textual curses based 'graphical' interface. The user
              can select a directory via a full-screen interactive directory
              tree browser. It has a vim(1) like navigation and search method.

              If no search string is given wcd presents the whole tree which is

                                        - 5 -       Formatted:  October 18, 2019

     wcd(1)                              wcd                              wcd(1)
     2019-08-14                                                       2019-08-14

                                     2019-08-14

              in the default treedata file and the extra treedata files.

              If a search string is given the match list is presented as a
              directory tree.

              The default tree layout is similar to the tree layout of the
              original NCD on DOS. The difference in layout is that in NCD all
              directories of a same depth level were vertically aligned over the
              whole tree. This was possible in NCD, because the maximum width of
              a directory name in DOS was 12 (8.3) characters. On modern
              operating systems directory names can be very long, so also the
              differences in length can be large. Therefore folders with a same
              depth are not vertically aligned over the whole tree in wcd, but
              only in sub-branches.  So there is some sideways movement when
              moving straight up and down from one sub-branch to another sub-
              branch.

              The navigation behaviour in Wcd is exactly the same as in the
              original NCD. For instance if you push the Down key you go down to
              the next directory with the same depth level, jumping over
              branches. This enables fast navigation through the tree.

              See options -Ta, -TC, and -Tc to change the navigation behaviour.

          -gd Dump the treedata files as a tree to stdout.

          -G PATH
              Write go-script in directory PATH. For instance on Unix, "wcd -G
              PATH" will write a go-script PATH/wcd.go.

          -GN, --no-go-script
              Do not create go-script. This option can be used in combination
              with the option -j if one does not want wcd to create a go-script.

          -h, --help
              Show help and exit.

          -i, --ignore-case
              Ignore case.  Dos and Windows versions of wcd ignore case default.
              Unix/Cygwin versions regard case by default.

          +i, --no-ignore-case
              Regard case. See also option -i.

          -I, --ignore-diacritics
              Ignore diacritics for Latin-based scripts.  Letters with
              diacritical marks match their base letter without diacritical
              mark. The following Latin encodings are supported: CP437, CP850,
              CP852, CP1250, CP1252, ISO-8859-1, ISO-8859-2, and Unicode

                                        - 6 -       Formatted:  October 18, 2019

     wcd(1)                              wcd                              wcd(1)
     2019-08-14                                                       2019-08-14

                                     2019-08-14

              Latin-1, Latin Extended-A, and Latin Extended-B.  See also
              <http://en.wikipedia.org/wiki/Diacritic>

          +I, --no-ignore-diacritics
              Regard diacritics (default). See also option -I.

          -j, --just-go
              Just go mode.

              In this mode wcd will not present a list when there is more than
              one directory that matches the given directory. Wcd will just
              change to the first option. When wcd is invoked again with the
              same arguments it will change to the next option, and so on.

              Wcd will print the directory to go to to stdout. So a different
              installation method can be used. One could make the following
              function for a POSIX compatible shell:

                  wcd ()
                  {
                      cd "$($HOME/bin/wcd.exe -j $@)"
                  }

              When you are using an old shell that doesn't support "$()" command
              substitution you have to use old style command substitution with
              back-quotes.

                  wcd ()
                  {
                      cd "`$HOME/bin/wcd.exe -j $@`"
                  }

              On Windows systems, if one is running 4NT shell, one could make
              the following alias:

                  alias wcd `cd %@execstr[wcdwin32.exe -z 0 -j %1]`

              This method eliminates the need of the go-script, so one can use
              option -GN in combination with -j.

          -k, --keep-paths
              Keep paths.

              Keep paths in the treedata file when wcd can't change to them. The
              default behaviour of wcd is that it tries to remove paths from the
              treedata when wcd can't change to them. With this option this
              behavior is turned off.

          -K, --color

                                        - 7 -       Formatted:  October 18, 2019

     wcd(1)                              wcd                              wcd(1)
     2019-08-14                                                       2019-08-14

                                     2019-08-14

              Use colors in graphical mode.

          -l ALIAS
              Name the current path with ALIAS. Wcd places the current path with
              alias ALIAS in the alias file. Aliases are case sensitive.

          -ls Show the name of the alias file, and list all the aliases.

          -m DIR
              Make directory and add to treedata file.

          -L, --license
              Print the distribution license.

          -M DIR
              Make directory and add to extra treedata file.

          -n PATH
              Read relative treedata file from PATH.

              Do not read the default treedata file. The relative treedata file
              should already have been created using the wcd +S option.  PATH
              may also point to a file directly.

              An example. Suppose another system has been mounted to mount point
              "/mnt/network":

                  wcd -n /mnt/network src

              Wcd opens the relative treedata file in "/mnt/network/". The file
              contains the paths relative from that point.

          +n PATH
              Read relative treedata file in addition to the default treedata
              file. See option -n.

          -N, --numbers
              Use numbers instead of letters.

              Wcd with a conio or curses based interface (see section
              Interfaces) presents a match list by default numbered with
              letters. When the -N option is used the match list is numbered
              with numbers. Regardless of the -N option one can type a letter or
              numbers to make a selection from the list of matches.

          -o  Use stdin/stdout interface.

              When for some kind of reason the conio or curses interface of wcd
              does not work one can fall back to the stdin/stdout interface of

                                        - 8 -       Formatted:  October 18, 2019

     wcd(1)                              wcd                              wcd(1)
     2019-08-14                                                       2019-08-14

                                     2019-08-14

              wcd by using the -o option.

          -od, --to-stdout
              Dump all matches to stdout.

          -q, --quiet
              Quieter operation. Printing of the final match is suppressed.

          -r DIR
              Remove directory and remove from the treedata file.

              If the directory is empty, wcd will remove it, and try to remove
              it from the treedata file.

          -rmtree DIR
              Recursively remove directory and remove from the treedata file.

              Wcd will remove the directory and all its sub directories and
              files, and remove the directories from the treedata file.

          -s  (re)Scan disk from $HOME directory. If HOME is not defined the
              disk is scanned from root directory /.

              The existing default treedata file is overwritten.

              The default scan directory can be overruled with environment
              variable "WCDSCAN". See section ENVIRONMENT VARIABLES.

          -S PATH
              Scan directory tree from PATH and overwrite the default treedata
              file.  See also options -A, -s and -E. E.g. with option -A you can
              create a default treedata file of your choice. Examples:

              Unix:

                  wcd -S /
                  wcd -S /home -A /etc -A /usr

              DOS/Windows:

                  wcd -S c:/
                  wcd -S c: -A d: -A \\server\share

              With the Windows versions one can scan all shared directories of a
              Windows LAN server by typing something like: "wcd -S
              \\servername".

          +S PATH
              Scan disk from PATH and place relative paths in a relative

                                        - 9 -       Formatted:  October 18, 2019

     wcd(1)                              wcd                              wcd(1)
     2019-08-14                                                       2019-08-14

                                     2019-08-14

              treedata file.  This file is used by the -n and +n options of wcd.
              E.g. "wcd -n PATH src".

          -t  Do not strip tmp mount dir "/tmp_mnt" (Unix only)

              Wcd strips by default "/tmp_mnt/" from the match. Directory
              "/tmp_mnt" is used by the auto-mounter. This behaviour can be
              turned off with the -t option.

          -T, --ascii-tree
              Draw tree with ASCII characters. Use this option if line drawing
              characters are not displayed properly in your terminal.

          -Ta, --alt-tree-nav
              Alternative way of navigation in the graphical tree.

              In the default NCD style tree layout the -Ta option disables
              jumping to unrelated directories.

              In compact tree mode the alternative mode makes navigation similar
              to navigation in GUI file managers such as Windows Explorer or
              Linux KDE Konqueror. Pressing Up and Down moves the selected
              folder one line up or down. Pressing Left first folds the sub-
              folders and the next move left moves really left.

              You can switch on-the-fly between default and alternative
              navigation by pressing <Shift-A>.

              When alternative navigation mode is on, you will see an "A" in the
              lower right corner.

          -TC, --center-tree
              Centered view in the graphical tree. The selected directory stays
              in the middle of the screen. The centered mode can also be
              switched on and off with key <t> in the graphical tree.

              The standard non-centered behaviour, which minimises tree
              movement, is the same as in the original NCD.

          -Tc, --compact-tree
              By default the 'graphical' tree is drawn the same way as the
              original NCD on DOS did it. On DOS a directory path could only be
              66 characters in total. With the deep directory structures of
              today the tree can become very wide. To overcome this wcd can draw
              the tree in a compact way, similar to most GUI file managers, with
              only one folder per line. Use option -Tc or switch on-the-fly with
              the <m> key.

          -Td, --cjk-width

                                       - 10 -       Formatted:  October 18, 2019

     wcd(1)                              wcd                              wcd(1)
     2019-08-14                                                       2019-08-14

                                     2019-08-14

              Legacy East-Asian CJK (Chinese, Japanese, and Korean) fonts have
              certain characters and line drawing symbols with a column width of
              2, while the normal Unicode width for these characters is 1
              column. For instance the Chinese CP936 raster font on Windows and
              the Simsun font. Use this option for a correct outlining of the
              graphical tree when a legacy CJK font is used.

              When CJK mode is on, you will see a "C" in the lower right corner.

          -u USER
              Scan treedata file of another user based on USER, do not scan your
              own default treedata file. See also section ENVIRONMENT VARIABLES
              for WCDUSERSHOME.

              On Unix/Cygwin the base directory for user home directories is
              assumed to be "/home". Wcd will look for
              "/home/USER/.treedata.wcd" and "/home/USER/.wcd/.treedata.wcd", in
              that order, and read the first one that exists and is readable.
              On DOS/Windows the base directory for user home directories is
              assumed to be "\\users", so wcd tries to read
              "\\users\USER\treedata.wcd" and "\\users\USER\.wcd\treedata.wcd".

          +u USER
              Read default treedata file of USER in addition to your own
              treedata file.

          -v, --verbose
              Display verbose messages. With this option wcd prints all filters,
              bans and excludes.

          -V, --version
              Print version information and exit.

          -w, --wild-match-only
              Wild matching only. Treat all matches as wild matches.

          -x PATH
              Exclude PATH from scanning.

              When this option is used wcd will exclude PATH and all its
              subdirectories when wcd is scanning a disk. Wildcards are
              supported and matched against absolute paths. Option -x can be
              used multiple times.

                  wcd -x <path1> -x <path2> -s

              Option -x must be used in front of any scan option (-s, -S, +S,
              -A, -E).

                                       - 11 -       Formatted:  October 18, 2019

     wcd(1)                              wcd                              wcd(1)
     2019-08-14                                                       2019-08-14

                                     2019-08-14

              On DOS/Windows systems one must specify the drive letter depending
              on if environment variable HOME or WCDHOME is set. If HOME or
              WCDHOME is set one needs to specify the drive letter. An example:

                  wcd -x c:/temp -S c:

              Otherwise do not specify drive letter.

                  wcd -x /temp -s

          -xf FILE
              Exclude all paths listed in FILE from scanning.

              When this option is used wcd will exclude all paths listed in FILE
              and all their subdirectories when wcd is scanning a disk.
              Wildcards are supported and they are matched against absolute
              paths; one path per line. Be aware that wcd will not ignore
              leading or trailing blanks on a line, because they are legal
              characters in a directory name. Option -xf can be used multiple
              times. When one wants to exclude all banned paths from scanning
              one can do the following (example for wcd on unix):

                  wcd -xf ~/.ban.wcd -s

              Wildcards are supported. For instance to exclude all your
              Subversion directories with administrative files add a line with
              "*/.svn".

              Option -xf must be used in front of any scan option (-s, -S, +S,
              -A, -E).

          -y, --assume-yes
              Assume Yes on all queries.

              Wcd will not prompt the user with yes/no questions, but assumes
              the user answers yes on all questions. This can be used in
              combination with option -rmtree. This option must be used in front
              of options that can lead to yes/no questions.

          -z NUMBER
              Set maximum stack size to NUMBER.

              The default size of the stack is 10. Stack operation can be turned
              off by setting the size to 0. This option must be used in front of
              any other stack operations (-,+,=). Otherwise the size of the
              stack will be set back to the default 10.

              A correct command is:

                                       - 12 -       Formatted:  October 18, 2019

     wcd(1)                              wcd                              wcd(1)
     2019-08-14                                                       2019-08-14

                                     2019-08-14

                  wcd -z 50 -

              The new stack size will be 50, wcd will go one directory back. A
              wrong command is:

                  wcd - -z 50

              Wcd goes one directory back, the stack gets the default size 10.
              The -z 50 is ignored.

              Add this option as the first option to your wcd alias or function.
              E.g.  for the a POSIX compatible shell this would be:

                  wcd ()
                  {
                      wcd.exe -z 50 "$@"
                      . ${WCDHOME:-${HOME}}/bin/wcd.go
                  }

          -[NUMBER]
              Push dir NUMBER of times. Default is one.

              Go back a directory. Command "wcd -" goes one directory back. To
              go more directories back add a number to it. E.g. command "wcd
              -3". The stack is cyclic.

          +[NUMBER]
              Pop dir NUMBER of times. Default is one.

              Go forward a directory. Command "wcd +" goes one directory
              forward. To go more directories forward add a number to it. E.g.
              command "wcd +2". The stack is cyclic.

          =   Show stack.

              Use this option if you do not know anymore how many times to push
              or pop.  The stack is printed and you can choose a number. The
              current place in the stack is marked with an asterisk "*".

     INSTALLATION
          The current working directory of a Unix shell can only be changed by
          the builtin cd(1) command. Therefore the program is always called by a
          function or an alias. The function or alias sources a shell script
          (go-script) which is generated by the wcd program. Wcd can only work
          after the function or alias is defined.

          Another important influence on your installation is the definition of
          environment variables HOME and WCDHOME. See section ENVIRONMENT
          VARIABLES.

                                       - 13 -       Formatted:  October 18, 2019

     wcd(1)                              wcd                              wcd(1)
     2019-08-14                                                       2019-08-14

                                     2019-08-14

        Install for POSIX type shells
          For a POSIX shell (ksh, bash, zsh, etc.) on Unix, Linux, Cygwin, or
          native MSYS add the following function to the shell startup file (e.g.
          Bash uses "$HOME/.bashrc"):

              wcd ()
              {
                  PATH/wcd.exe "$@"
                  . ${WCDHOME:-${HOME}}/bin/wcd.go
              }

          Replace PATH with the location where the wcd executable has been
          installed. Reload the shell initialization files or start new shell.

          The location of the go-script "wcd.go" differs per shell.

          Wcd for DJGPP DOS bash and OS/2 bash require a different function. The
          go script is not written in a directory "bin", and if WCDHOME and HOME
          are both not defined the go-script is written on c:/.

          DOS bash:

              wcd ()
              {
                  PATH/wcdbash.exe "$@"
                  . ${WCDHOME:-${HOME:-"c:"}}/wcd.go
              }

          OS/2 bash:

              wcd ()
              {
                  PATH/wcdos2bash.exe "$@"
                  . ${WCDHOME:-${HOME:-"c:"}}/wcd.go
              }

          The WinZsh version of wcd requires a bit different function. The go-
          script will never be written in c:/.

              wcd ()
              {
                  PATH/wcdwin32zsh.exe "$@"
                  . ${WCDHOME:-${HOME}}/wcd.go
              }

          See section FILES for more information.

        Install for C-alike shells (csh, tcsh)
          Add the following alias to the shell startup file "$HOME/.cshrc" or

                                       - 14 -       Formatted:  October 18, 2019

     wcd(1)                              wcd                              wcd(1)
     2019-08-14                                                       2019-08-14

                                     2019-08-14

          "$HOME/.tcshrc" :

              if ( ${?WCDHOME} ) then
                  alias wcd "PATH/wcd.exe \!* ; source $WCDHOME/bin/wcd.go"
              else
                  alias wcd "PATH/wcd.exe \!* ; source $HOME/bin/wcd.go"
              endif

          Replace PATH with the location where the wcd executable has been
          installed.  Reload the shell initialization files or start a new
          shell.

        Windows Command Prompt version
          Unpack the zip file and add directory "bin" to your environment
          variable PATH.

          In Windows Command Prompt a Windows program cannot change the current
          work directory, but a .bat file can. The batch script "wcd.bat" runs
          the wcd program which generates a new batch script "wcdgo.bat". Then
          "wcd.bat" runs "wcdgo.bat" which actually changes the directory.

        Windows VISTA and higher
          In a Windows VISTA and higher Command Prompt you may have limited
          access to directories. To get access to more directories you need
          administrator rights. You can get a Command Prompt with administrator
          rights if you right click on the Command Prompt icon and select Run as
          administrator.

        Windows PowerShell version
          Add the following function to your PowerShell user profile. The
          location of this profile is stored in the $profile variable. It is
          required that one of the environment variables HOME or WCDHOME is
          defined.

              function wcd
              {
                  PATH\wcdwin32psh.exe $args
                  & $env:HOME\wcdgo.ps1
              }

          Replace PATH with the location where the wcd executable has been
          installed.  Start a new PowerShell. Wcd for PowerShell supports only
          the file system provider. No other providers.

        OS/2 Command Prompt version
          In an OS/2 Command Prompt (cmd.exe) an OS/2-program can't change the
          current work directory. That is why wcd generates a command script
          "wcdgo.cmd" which must be executed in the current shell. The script
          "wcd.cmd" first executes "wcdos2.exe", which creates the "wcdgo.cmd"

                                       - 15 -       Formatted:  October 18, 2019

     wcd(1)                              wcd                              wcd(1)
     2019-08-14                                                       2019-08-14

                                     2019-08-14

          script. Then "wcd.cmd" executes the "wcdgo.cmd" script.

     LOCALIZATION
          LANG
              The primary language is selected with the environment variable
              LANG. The LANG variable consists out of several parts. The first
              part is in small letters the language code. The second one is
              optional and is the country code in capital letters, preceded with
              an underscore. There is also an optional third part: character
              encoding, preceded with a dot. A few examples for POSIX standard
              type shells:

                  export LANG=nl               Dutch
                  export LANG=nl_NL            Dutch, The Netherlands
                  export LANG=nl_BE            Dutch, Belgium
                  export LANG=es_ES            Spanish, Spain
                  export LANG=es_MX            Spanish, Mexico
                  export LANG=en_US.iso88591   English, USA, Latin-1 encoding

              For a complete list of language and country codes see the
              gettext(1) manual:
              <http://www.gnu.org/software/gettext/manual/gettext.html#Language-Codes>
              On Unix systems you can use to command locale(1) to get locale
              specific information.

          LANGUAGE
              With the LANGUAGE environment variable you can specify a priority
              list of languages, separated by colons. Wcd gives preference to
              LANGUAGE over LANG. For instance, first Dutch and then German:
              "LANGUAGE=nl:de". You have to first enable localization, by
              setting LANG or LC_ALL to a value other than C, before you can use
              a language priority list through the LANGUAGE variable. See also
              the gettext(1) manual:
              <http://www.gnu.org/software/gettext/manual/gettext.html#The-LANGUAGE-variable>

              If you select a language which is not available you will get the
              standard English messages.

          WCDLOCALEDIR
              With the environment variable WCDLOCALEDIR the LOCALEDIR used
              during compilation and installation of wcd can be overruled.
              LOCALEDIR is used by wcd with native language support to find the
              language files. The GNU default value is
              "/usr/local/share/locale". By typing "wcd -V" wcd will print the
              LOCALEDIR that is used.

              If you have installed wcd in a different directory than the
              default directory you may need to set the environment variable
              WCDLOCALEDIR to point to the locale directory.

                                       - 16 -       Formatted:  October 18, 2019

     wcd(1)                              wcd                              wcd(1)
     2019-08-14                                                       2019-08-14

                                     2019-08-14

              An example for Windows cmd:

                  set WCDLOCALEDIR=c:/my_prefix/share/locale

              An example for a POSIX shell:

                  export WCDLOCALEDIR=$HOME/share/locale

          LC_COLLATE
              When there are multiple directory matches wcd presents a sorted
              list. The sorting depends on the locale settings. If the
              environment LANG has been set the matches are sorted like
              dictionaries or phone books are sorted in that language. For
              instance dots and dashes are ignored, or letters e with and
              without accent are equal, or upper and lower case is ignored.

              The sorting gives preference to environment variable LC_COLLATE
              over LANG. If you make LC_COLLATE equal to "C" or "POSIX", locale
              sorting is turned off. For instance if you want Dutch language,
              but not Dutch sorting, you can do something like this:

                  export LANG=nl_NL
                  export LC_COLLATE=C

          LC_CTYPE
              With regard to character encoding Wcd will give preference to
              variable LC_CTYPE over LANG. For instance to set character
              encoding to UTF-8 the following environment setting can be done.

                  export LC_CTYPE=en_US.UTF-8

          LC_ALL
              All locale environment variables that start with LC_ are overruled
              by the environment variable LC_ALL if it is defined. Wcd gives
              preference to LC_ALL over LC_COLLATE and LC_CTYPE.

        WINDOWS CODE PAGES
          There are two groups of code pages: DOS code pages (OEM) and Windows
          code pages (ANSI). The default encoding for Windows, when configured
          with Western regional settings, is ANSI CP1252. Windows programs, for
          instance notepad, use this default system ANSI code page. The Windows
          console uses by default an OEM code page (CP437 or CP850) for
          compatibility with DOS programs. If you use a DOS version of wcd in a
          Windows console it will work, because of the DOS code page.  But the
          DOS version of wcd lacks support for long directory names and network
          drives on Windows.

          The Windows version of wcd is a native Windows program and will use
          the Windows system ANSI code page. So on a Western regional Windows it

                                       - 17 -       Formatted:  October 18, 2019

     wcd(1)                              wcd                              wcd(1)
     2019-08-14                                                       2019-08-14

                                     2019-08-14

          will use code page CP1252 for directory names and messages. In order
          to get consistent output, independent of the active code page, all
          Windows versions of Wcd translate ANSI output to Unicode output in the
          Command Prompt and PowerShell.

          The console raster font only supports the original OEM code page
          installed with Windows, so you have to change the console's font to
          true type Lucida Console to make Unicode (and ANSI) letters appear
          correctly.

          Non-Unicode versions of Wcd prior to version 5.2.0 use plain ANSI
          output.  For these older versions the code page of the console has to
          be made equal to the system code page (changed to 1252) to make wcd
          for Windows work properly with special characters such as accented
          characters or the Euro symbol.

          The Windows system code page can be changed via the Control Panel
          regional options. The Windows console code page is changed with the
          "chcp" command.

          When you type "wcd -V", the actual character encoding used by wcd is
          shown. Type the command "chcp" to display the active code page of the
          Windows console.

        UNICODE
          Wcd has optional support for Unicode. To see if wcd was built with
          Unicode support type "wcd -V". If your terminal/console and font
          supports it, you should see the Euro symbol and Chinese characters
          (meaning: "Chinese").

          Wcd has been soft converted to Unicode. In its core wcd handles all
          data as a stream of bytes. Only the lines printed to screen are on the
          fly converted to Unicode wide characters. Wcd fully relies on libc
          functions and has no UTF-8 specific code. See also
          <http://www.cl.cam.ac.uk/~mgk25/unicode.html>

          Wcd has optional support for Unicode matching with normalisation. To
          find out whether Wcd has normalisation support type "wcd -V".  Wcd
          with Unicode normalization support will match Unicode names based on
          compatible equivalence. Without Unicode normalization support, names
          are matched when they are binary equivalent.  See also
          <http://en.wikipedia.org/wiki/Unicode_normalization>

          UTF-8 on Unix/Linux

          In order to view UTF-8 characters your console/terminal also needs to
          support UTF-8. The xterm version that comes with XFree86 4.0 or higher
          includes UTF-8 support. To activate it, start xterm(1) in a UTF-8
          locale and use a font with iso10646-1 encoding, for instance with

                                       - 18 -       Formatted:  October 18, 2019

     wcd(1)                              wcd                              wcd(1)
     2019-08-14                                                       2019-08-14

                                     2019-08-14

              LC_CTYPE=en_GB.UTF-8 xterm -u8 -fn '-Misc-Fixed-Medium-R-SemiCondensed--13-120-75-75-C-60-ISO10646-1'

          Modern distributions of GNU/Linux support UTF-8 by default. Other
          multi-byte character encodings should also work, but that has not been
          tested.

          Wcd assumes that the treedata files are encoded in the locale
          character encoding. There are no Byte Order Marks written to treedata
          files.

          UTF-16 on Windows

          On Windows Unicode is supported in all versions of PowerShell, and in
          Windows Command Prompt on Windows 7 (or higher). Unicode also works in
          Take Command or TCC/LE made by JP Software, which can be used on older
          Windows versions (XP/Vista).

          On Windows all the directory names on disk are encoded in UTF-16
          Unicode.  For non-Unicode Windows programs the Unicode characters are
          translated to the default ANSI code page. For characters that are not
          part of the regional setting this translation is not possible and
          non-Unicode programs print a question mark or a wrong character
          instead.

          Wcd with Unicode support will read the UTF-16 encoded directory names
          and converts them internally to UTF-8. All treedata files are encoded
          in UTF-8 and not compatible with the non-Unicode version of Wcd. Wcd
          will create a go-script encoded in UTF-8.

          All versions of Windows PowerShell are able to run scripts encoded in
          UTF-8, provided there is an UTF-8 BOM in the script.

          Since Windows 7 it is possible in Windows Command Prompt to change
          directory with a batch script to a directory with Unicode letters in
          the name. The directory name needs to be encoded in UTF-8, and the
          batch script must not have a BOM. The active code page of the Command
          Prompt needs to be set to 65001 (UTF-8) prior to the cd command. Wcd
          for Command Prompt will create such a go script "wcdgo.bat". It first
          changes the code page to 65001, then changes directory, and finally
          sets the code page back to the original code page.

          You need to set the font to True Type Lucida Console (not raster font)
          when letters don't appear correctly.

          The non-Unicode Windows version of Wcd can read Unicode treedata files
          since version 5.2.0, provided there is a Byte Order Mark (BOM) in the
          file (see <http://en.wikipedia.org/wiki/Byte_order_mark>), but it
          can't change to directories with Unicode letters in the name that are
          not part of the default system ANSI code page. The Unicode Windows

                                       - 19 -       Formatted:  October 18, 2019

     wcd(1)                              wcd                              wcd(1)
     2019-08-14                                                       2019-08-14

                                     2019-08-14

          version of wcd writes a BOM in the UTF-8 encoded treedata files since
          version 5.2.0, which makes them also readable by notepad.

          UTF-8 on Cygwin

          Cygwin supports Unicode since version 1.7. The Cygwin layer takes care
          that the Windows UTF-16 Unicode names are converted to UTF-8. So
          programs, like wcd, do not need to be aware of this and can operate
          using UTF-8 encoding as on Unix/Linux. Set character encoding to UTF-8
          with the LANG or LC_CTYPE environment variable. You may need to rescan
          your drives. You need to set the font to True Type Lucida Console (not
          raster font) if you use the default Cygwin console.

          The Cygwin version behaves exactly as the Unix version of wcd.  There
          is no BOM written in the treedata files, and it is assumed they are
          encoded in the Cygwin locale character encoding.

     FILES
          If the environment variable WCDHOME is set wcd will use WCDHOME
          instead of HOME. All "*.wcd" files are text files. They can be edited
          with a text editor.  The Windows Command Prompt version of wcd behaves
          as the DOS version. The Cygwin version of wcd behaves as the Unix
          version.

          wcd.exe
              The program. In Unix shells the program is always called by a
              function or alias, because the current working directory of a Unix
              shell can only be changed by the builtin cd command. See also
              section INSTALLATION.

          default treedata file
              This is the default treedata file where wcd searches for matches.
              If it is not readable wcd will create a new one.

                  DOS: \treedata.wcd or %HOME%\treedata.wcd
                  Unix: $HOME/.treedata.wcd

          extra treedata file
              An optional extra treedata file. If it exists and is readable wcd
              will try to find matches in this file also.

                  DOS: \extra.wcd or %HOME%\extra.wcd
                  Unix: $HOME/.extra.wcd

          ban file
              In this optional file wcd places banned paths. See option -b.
              Wildcards are supported.

                                       - 20 -       Formatted:  October 18, 2019

     wcd(1)                              wcd                              wcd(1)
     2019-08-14                                                       2019-08-14

                                     2019-08-14

                  DOS: \ban.wcd or %HOME%\ban.wcd
                  Unix: $HOME/.ban.wcd

          alias file
              Optional file with wcd aliases. See option -l.

                  DOS: \alias.wcd or %HOME%\alias.wcd
                  Unix: $HOME/.alias.wcd

          stack file
              In this file wcd stores its stack. The drive letter can be changed
              with the -d option.

                  DOS: c:\stack.wcd or %HOME%\stack.wcd
                  Unix: $HOME/.stack.wcd

              The name of the stack file can be changed with environment
              variable WCDSTACKFILE.  See section ENVIRONMENT VARIABLES.

          go-script
              This is the shell script which wcd.exe creates each time. It is
              sourced via a function or an alias. The drive letter can be
              changed with the -d option.  For history reasons it is placed by
              default in "$HOME/bin" on Unix systems. The directory of this file
              can be changed with the option -G.

                  DOS bash: c:/wcd.go or $HOME/wcd.go
                  Windows Command Prompt: c:\wcdgo.bat or %HOME%\wcdgo.bat
                  Windows PowerShell: $env:HOME\wcdgo.ps1
                  WinZsh: $HOME/wcd.go
                  Cygwin/MSYS: $HOME/bin/wcd.go
                  OS/2 Command Prompt: c:\wcdgo.cmd or %HOME%\wcdgo.cmd
                  OS/2 bash: c:/wcd.go or $HOME/wcd.go
                  Unix: $HOME/bin/wcd.go

          relative treedata file
              Text file with relative paths from DIR. See options +S, -n and +n.

                  DOS: PATH\rtdata.wcd
                  Unix: PATH/.rtdata.wcd

     ENVIRONMENT VARIABLES
          HOME
              Wcd uses by default environment variable HOME to determine where
              to store its files. See also section FILES. This can be overruled
              with environment variable WCDHOME.

              HOME also defines where to start scanning the disk when option -s
              is used. This can be overruled with the environment variable

                                       - 21 -       Formatted:  October 18, 2019

     wcd(1)                              wcd                              wcd(1)
     2019-08-14                                                       2019-08-14

                                     2019-08-14

              WCDSCAN.

              For the Unix, Cygwin, Windows PowerShell, WinZsh and MSYS version
              it is required that HOME or WCDHOME is set. For the other versions
              of wcd the use of these variables is optional.

              If HOME is set on DOS/Windows, wcd will place all its files
              (treedata.wcd, extra.wcd, alias.wcd, ban.wcd, wcd.go) in directory
              HOME. The behaviour of wcd is then equal to the Unix version of
              wcd. Wcd will scan the disk default from HOME. Drives will not be
              automatically scanned by changing to them. You need to tell wcd
              explicitly. E.g.:

                  wcd -S c: -A d: -A e:

              Matching of directories is now global over all scanned drives.

          WCDHOME
              Environment variable WCDHOME can be used to change the location of
              wcd's files. If both HOME and WCDHOME are set, WCDHOME will be
              used instead of HOME.

              In wcd versions prior to 5.1.5 WCDHOME also changed the default
              scan directory.  This has changed. Since version 5.1.5 WCDHOME
              does not change the default scan directory. See option -s. From
              version 5.1.5, use environment WCDSCAN to overrule the default
              scan directory.

              Example for DOS, Windows, OS/2 Command Prompt:

                  set WCDHOME=C:\Users\erwin\wcd

              An example for POSIX type shells:

                  export WCDHOME="$HOME/.wcd"

              An example for Csh type shells:

                  setenv WCDHOME "$HOME/.wcd"

          WCDSCAN
              Use environment variable WCDSCAN to overrule the default scan
              directory HOME. Define a colon separated list (Unix) to define
              more than one directory.  On DOS/Windows make the list semi-colon
              separated.

              Examples for DOS, Windows, OS/2 Command Prompt:

                  set WCDSCAN=C:\Users\erwin;D:\data

                                       - 22 -       Formatted:  October 18, 2019

     wcd(1)                              wcd                              wcd(1)
     2019-08-14                                                       2019-08-14

                                     2019-08-14

                  set WCDSCAN=%HOMEDRIVE%%HOMEPATH%;\\projectdrive\projectX

              An example for POSIX type shells:

                  export WCDSCAN="$HOME:/projectdisk/projectX"

              An example for Csh type shells:

                  setenv WCDSCAN "$HOME:/projectdisk/projectX"

          WCDFILTER
              Specify filters with environment variable WCDFILTER. All
              directories that do not match the filter(s) are ignored. A list
              can be specified by separating filters by the shell path
              separator. Similar as specifying the PATH variable.  The case
              sensitivity is mandated by the Operating system.

              An example for DOS, Windows, OS/2 Command Prompt:

                  set WCDFILTER=projects;doc

              An example for POSIX type shells:

                  export WCDFILTER="projects:doc"

              An example for Csh type shells:

                  setenv WCDFILTER "projects:doc"

          WCDBAN
              The paths specified with environment WCDBAN will be banned by wcd.
              See also option -b. Specify a list of paths separated by shell
              PATH separator.

          WCDEXCLUDE
              The paths specified with environment WCDEXCLUDE will be excluded
              by wcd. See also options -x and -xf. Specify a list of paths
              separated by shell PATH separator.

              An example for DOS, Windows, OS/2 Command Prompt:

                  set WCDEXCLUDE=*/windows;*/temp;*CVS

              An example for POSIX type shells:

                  export WCDEXCLUDE="/dev:/tmp:*CVS"

              An example for Csh type shells:

                                       - 23 -       Formatted:  October 18, 2019

     wcd(1)                              wcd                              wcd(1)
     2019-08-14                                                       2019-08-14

                                     2019-08-14

                  setenv WCDEXCLUDE "/dev:/tmp:*CVS"

          WCDUSERSHOME
              Set the base of user's home directories.  On DOS/Windows the
              default value is "\\users".  On Unix/Cygwin the default value is
              "/home".  This variable is used to scan treedata files of other
              users. See also options -u and +u. In verbose mode wcd will print
              all filters, bans and excludes. See option -v.

          WCDSTACKFILE
              Wcd gives preference to WCDSTACKFILE over the default stack file
              name (see section FILES). With this variable each shell (or used
              terminal emulator) can have its private stack of used directories.

              To use a unique time based YYYYMMDD-HHMMSS file for each opened
              interactive shell.

                  export WCDSTACKFILE=$HOME/.wcd/stack.$(date +%Y%m%d-%H%M%S)

              For a stack per xterm(1), use the xterm WINDOWID environment
              variable:

                  export WCDSTACKFILE=$HOME/.wcd/stack.$WINDOWID

              For GNU screen(1), to use stack per screen:

                  export WCDSTACKFILE=$HOME/.wcd/stack.$WINDOW

          TERMINFO
              If the environment variable TERMINFO is defined, wcd with ncurses
              interface checks for a local terminal definition before checking
              in the standard place. This is useful if terminal definitions are
              not on a standard place. Often used standard places are
              "/usr/lib/terminfo" and "/usr/share/terminfo".

          PDC_RESTORE_SCREEN
              Wcd with PDCurses interface recognizes the environment variable
              PDC_RESTORE_SCREEN. If this environment variable is set, PDCurses
              will take a copy of the contents of the screen at the time that
              wcd is started; when wcd exits, the screen will be restored.  An
              example for Windows Command Prompt:

                  set PDC_RESTORE_SCREEN=1

              Windows allows only a small buffer to be saved. So it is not
              always possible to restore everything. Some garbage data may be
              printed in the console after wcd exits if you have set a large
              buffer width.

                                       - 24 -       Formatted:  October 18, 2019

     wcd(1)                              wcd                              wcd(1)
     2019-08-14                                                       2019-08-14

                                     2019-08-14

          SHELL
              Printing of "#!$SHELL" on the first line of the go-script for
              POSIX type shell or C shell is needed for 8 bit characters. Some
              shells otherwise think that the go-script is a binary file and
              will not source it. In Cygwin Bash the variable SHELL must be set
              in environment using the "export" command, otherwise wcd can't
              read the variable.

          BASH
              Wcd for DOS bash uses $BASH instead of $SHELL, because $SHELL
              points to the DOS command shell. One may need to define $BASH with
              an "export" command, otherwise wcd can't read the variable.

     SEE ALSO
          sh(1), bash(1), csh(1), ksh(1), zsh(1), locale(1), ncurses(1),

     AUTHORS
          Wcd was written by Erwin Waterlander <waterlan@xs4all.nl>

          Project homepage: <http://waterlan.home.xs4all.nl/>

          SourceForge: <http://sourceforge.net/projects/wcd/>

          The manual page formatting was provided by Jari Aalto
          <jari.aalto@cante.net>.

          NCD was originally written by Brad Kingsbury for Peter Norton's
          "Norton Utilities" around 1987. See also
          <http://www.softpanorama.org/OFM/norton_change_directory_clones.shtml>

                                       - 25 -       Formatted:  October 18, 2019