|
|
| |
wcd - Wherever Change Directory
chdir for DOS and Unix
wcd [options] [directory]
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.
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).
Wcd supports following wildcards:
* 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
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 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
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.
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.
Wcd has three different interfaces to choose from a list of matches. The
interface can be chosen at compile time.
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.
- -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.
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 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 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
- 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 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 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
- 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).
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:
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
"*".
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.
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.
Add the following alias to the shell startup file
"$HOME/.cshrc" or
"$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.
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.
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.
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.
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" script. Then
"wcd.cmd" executes the
"wcdgo.cmd" script.
- 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.
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.
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
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.
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
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 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.
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.
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
- 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 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
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:
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.
- 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.
sh(1), bash(1), csh(1), ksh(1), zsh(1),
locale(1), ncurses(1),
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>
Visit the GSP FreeBSD Man Page Interface. Output converted with ManDoc. |