wcd 3.1.4 (Jun 29 2004) - Wherever Change Directory usage: wcd [drive:][dir] [-A ] [-a[a]] [-b] [-c] [-d ] [-E ] [-e[e]] [-f ] [-G ] [-GN] [-g[d]] [-h] [-i] [-j] [-k] [-l] [-[m|M|r|rmtree] ] [-N] [-n ] [-o] [-Q] [-S ] [-s] [-t] [-u ] [-V] [-v] [-w] [-x ] [-xf ] [-z #] [-[#]] [+[#]] [=] dir (partial) name of directory to change to. Wildcards *, ? and [SET] are supported! -A Add tree from -a Add current path to treedata -aa Add current and all parent paths to treedata -b Ban current path -c direct CD mode -d set for stack & go files (DOS only) -E add tree from to Extra treedata -e add current path to Extra treedata -ee add current and all parent paths to Extra treedata -f add extra treeFile, skip default treedata file +f add extra treeFile -G Set directory for go-script. -GN Don't create go-script -g graphical tree mode -gd dump graphical tree to stdout -h show this Help -i Ignore case +i Regard case -j Just Go mode -k Keep paths in treedata when wcd cannot change to them -L print software license -l aLias current dir -M Make directory and add to extra treedata file -m Make directory and add to treedata file -N Use numbers instead of letters to choose from a list -n add relative treefile , skip default treedata file +n add relative treefile -o Use stdout based interface -Q Quieter operation -r Remove directory and remove from treedata file -rmtree Remove directory Recursive and remove from treedata file -S Scan disk from +S Scan disk from , make relative treefile -s (re)Scan disk from $HOME -t Do not strip tmp mount dir /tmp_mnt/ (Unix only) -u add treefile of other User, skip default treedata file (Unix only) +u add treefile of other User (Unix only) -V Verbose operation -w Wild matching only -v print Version info -x eXclude path during disk scan -xf eXclude paths from File during disk scan -z set max stack siZe - Push dir (# times) + Pop dir (# times) = Show stack Examples: wcd -s wcd src/wcd wcd -S / wcd doe*/vhdl -u doe wcd w*[1-3] wcd src -V -f /home/doe/.extra.wcd wcd d:games wcd -a wcd -3 wcd -z 0 -i howto wcd + wcd -E . wcd -d H doc wcd -n /mnt/network src wcd - + wcd -S c: -A d: -A e: wcd -xf /home/waterlan/.ban.wcd -s wcd //servername/sharename wcd -A //servername/sharename wcd -A //servername wcd sharename ====================================================================== = 0 Contents = ====================================================================== 1 Manual 2 DOS/Windows installation - dos 16 bit - dos 32 bit - dos Bourne Again Shell (bash) - Z shell (zsh) - Long directory name support - Using default options - Use of environment variable HOME / WCDHOME - PDCurses interface 3 Win32 console (Windows NT) installation - Z shell (zsh) - UNC support 4 Cygwin (Windows 9x / NT) installation 5 Unix installation - Bourne-like shells (ksh, bash, zsh) - C Shell (csh) - Hints 6 Bugs 7 Source code 8 Modification history 9 Copyright 10 Acknowledgements 11 Contact / Download new versions ====================================================================== = 1 Manual = ====================================================================== WCD(1) WCD(1) NAME wcd - Wherever Change Directory chdir for DOS and Unix SYNOPSIS wcd [drive:][dir] [-A ] [-a[a]] [-b] [-c] [-d ] [-E ] [-e[e]] [-f ] [-G ] [-GN] [-g[d]] [-h] [-i] [-j] [-k] [-l] [-[m|M|r|rmtree] ] [-N] [-n ] [-o] [-Q] [-S ] [-s] [-t] [-u ] [-V] [-v] [-w] [-x ] [-xf ] [-z #] [-[#]] [+[#]] [=] DESCRIPTION Wcd. Directory changer for DOS and Unix. Another Norton Change Direc- tory (NCD) clone with more features. Wcd is a 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 browser with speed search. By default (if no wildcards are used) wcd searches for a directory with a name that begins with the typed name. For instance: wcd Desk will change to directory /home/waterlan/Desktop 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 fully supports wildcards, i.e. *, ? and [SET]. `*' 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 ``charac- ter hyphen character'' (as in 0-9 or A-Z). [0-9a-zA-Z_] is the minimal set of characters allowed in the [..] pattern construct. Other charac- ters are allowed (i.e. 8 bit characters) if your system will support them. To suppress the special syntactic significance of any of ``[]*?!^-\'', in- side or outside a [..] construct and match the char- acter exactly, precede it with a ``\'' (backslash). Using wildcards makes powerful searching possible. For instance: wcd *top match any directory name that ends with "top". wcd *top* match any directory that has "top" in the name. wcd [a-c]* match any directory name that begins with "a", "b" or "c". It is also possible to give a part of a directory path. E.g.: wcd me/Desk wcd searches for directory that begins with "Desk" and which path matches *me/Desk* It is allowed to type any kind of expression with slashes and wild- cards. 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. On DOS and Windows systems it does not matter if you use a slash (/) or a backslash (\) as directory-separator. It is also 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 console version supports Windows LAN UNC paths such as \\servername\sharename. The interactive directory browser can be started by using option -g. wcd -g See option -g for more information. Wcd generates a treedata file were it searches the directory. On Unix systems wcd does add links to the treedata files 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. On Unix systems a very handy option -u can be used to change to direc- tories of other users. See option -u. Wcd can also change to directories that are not in the treedata file. E.g.: wcd .. If wcd found a match but cannot 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 =. FILES wcd.exe The binary. Do not rename it to 'wcd' on Unix systems. In a Bourne- like or C shell the binary is always called by a function or alias, because the current working directory of a Bourne-like or C shell can only be changed by the builtin cd command. See also section INSTALLATION. default treedata file DOS: \treedata.wcd or %HOME%\treedata.wcd UNIX: $HOME/.treedata.wcd This is the default treedata file where wcd searches for matches. If it is not readable wcd will create a new one. extra treedata file DOS: \extra.wcd or %HOME%\extra.wcd UNIX: $HOME/.extra.wcd An optional extra treedata file. If it exists and is readable wcd will try to find matches in this file also. ban file DOS: \ban.wcd or %HOME%\ban.wcd UNIX: $HOME/.ban.wcd In this optional file wcd places banned paths. See option -b. Wildcards are supported. alias file DOS: \alias.wcd or %HOME%\alias.wcd UNIX: $HOME/.alias.wcd Optional file with wcd aliases. See option -l. stack file DOS: c:\stack.wcd or %HOME%\stack.wcd UNIX: $HOME/.stack.wcd In this file wcd stores it's stack. The drive-letter can be changed with the -d option. go-script DOS BASH: c:\wcd.go or %HOME%\wcd.go WIN32 CONSOLE: c:\wcdgo.bat or %HOME%\wcdgo.bat WIN32 ZSH: %HOME%\wcd.go UNIX: $HOME/bin/wcd.go 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 ~/bin on Unix systems. The directory of this file can be changed with the option -G. relative treedata file DOS: \rtdata.wcd UNIX: /.rtdata.wcd Text file with relative paths from . See options +S, -n and +n. The win32 console version of wcd behaves as the DOS version. The Cyg- win version of wcd behaves as the UNIX version. All .wcd files are ASCII text files. They can be edited with a text- editor. If the environment variable WCDHOME is set wcd will use WCDHOME instead of HOME. OPTIONS -A Add directory tree from to default treedata. The directory tree starting from is appended to the default treedata file. Example: wcd -A . With the Windows console version one can scan all shared direc- tories of a Windows LAN server by typing something like: wcd -A \\servername. -a Add current path to 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 default treedata. -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 are supported and it is matched against absolute path. Banned paths are not excluded from scanning the disk. To do that use option -xf. -c 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 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 directory tree from to Extra treedata file. The directory tree starting from is appended to the Extra treedata file -e Add current path to 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. -f Add another treedata file to be scanned, do not scan the default treedata file. +f Add another treedata file to be scanned. -G Set directory path of go-script. -GN Don't create go-script. This option can be used in combination with the option -j if one doesn't want wcd to create a go-script. -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 direc- tory browser. It has a Vi(m) 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 graphical tree. -gd Dump the treedata files as a tree to stdout. -i Ignore case. Dos and Windows versions of wcd ignore case by default. Unix versions regard case by default. +i Regard case. See also option -i. -j just go mode In this mode wcd will not present a list when there is more than 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 bash or ksh: function 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 in treedata when wcd cannot change to them. The default behaviour of wcd is that it tries to remove paths from the treedata when wcd cannot change to them. With this option this behaviour is turned off. -l aLias current path. Wcd places the current path and the alias in the alias file. Aliases are case sensitive. -M Make directory and add to extra treedata file. -m Make directory and add to treedata file. -N Use numbers instead of letters. Wcd with a conio or curses based interface (see section INTER- FACE) presents a match list 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. -n Add relative treedata file (Unix: /.rtdata.wcd, DOS: \rtdata.wcd), do not scan the default treedata file. If is a file, wcd will add instead of /.rtdata.wcd or \rtdata.wcd. See also option +S. Example: suppose another system has been NFS mounted to mount point /mnt/network wcd -n /mnt/network src Wcd now opens file /mnt/network/.rtdata.wcd The file contains the paths relative from that point. The relative treedata file should already have been created using the wcd +S option. +n Add another relative treedata file. See option -n. -o Use stdin/stdout interface. When for some kind of reason the conio or curses interface of wcd doesn't work one can fall back to the stdin/stdout interface of wcd by using the -o option. -Q Quieter operation. Printing of the final match is suppressed. -r Remove directory and remove from treedata file. If the directory is empty, wcd will remove it, and try to remove it from the treedata file. -rmtree Recursively remove directory and remove from treedata file. Wcd will remove the directory and all it's sub directories and files, and remove the directories from the treedata file. -S Scan disk from a certain path. If you have a small Unix system like a PC with a few users you can for instance scan the disk from /. With the Windows console version one can scan all shared directories of a Windows LAN server by typing something like: wcd -S \\servername. The existing default treedata file is overwritten. +S Scan disk from a certain path. Make relative treedata file. Scan disk from path and place relative paths in a rela- tive treedata file. This file is used by the -n and +n options of wcd. E.g. wcd -n src -s (re)Scan disk from your $HOME directory. This is recommended if you are on a large Unix server network with very much users. This is the default scanning mode. Wcd for DOS scans the current disk from root \ or from %HOME% if HOME is set. The existing default treedata file is overwritten. -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 automounter. This behaviour can be turned off with the -t option. -u Add default treedata file of other user, do not scan your own default treedata file (Unix only). Wcd now scans the ~/.treedata.wcd of another user It is assumed to be /home//.treedata.wcd The default treedata file is not scanned. +u Add default treedata file of other user (Unix only). -V verbose operation. With this option wcd prints all filters, bans and excludes. -v Print version info. -w Wild matching only. Treat all matches as wild matches. -x Exclude from scanning. When this option is used wcd will exclude and all its subdirectories when wcd is scanning a disk. Wildcards are sup- ported and matched against absolute paths. Option -x can be used multiple times. wcd -x -x -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 depend- ing on if enviroment variable HOME or WCDHOME is set. If HOME or WCDHOME is set one needs to specify the drive letter. Exam- ple: wcd -x c:/temp -S c: Otherwise don't specify drive letter. wcd -x /temp -s -xf Exclude all paths listed in from scanning. When this option is used wcd will exclude all paths listed in 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 exlude 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 CVS directories with cvs administrative files add a line with: */CVS Option -xf must be used in front of any scan option (-s, -S, +S, -A, -E). -z # Set maximum stack size. 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 option (-,+,=). Otherwise the size of the stack will be set back to the default 10. A correct com- mand 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. '-z 50' is ignored. Add this option as the first option to your wcd alias or func- tion. E.g. for the bash this would be: function wcd { wcd.exe -z 50 $* . $HOME/bin/wcd.go } -[#] Push dir [ # times ]. Go back a directory. 'wcd -' goes one directory back. To go more directories back add a number to it. E.g. wcd -3 The stack is cyclic. +[#] Pop dir [ # times ]. Go forward a directory. 'wcd +' goes one directory forward. To go more directories forward add a number to it. E.g. wcd +2 The stack is cyclic. = Show stack. Use this option if don't know anymore how many times to push or pop. The stack is printed and you can choose a number. The cur- rent place in the stack is marked with an asterisk '*'. INTERFACE 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 . 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 possi- ble the screen will be restored after exiting. One who prefers to type numbers can use the -N option. This interface is meant for DOS sys- tems. The third interface is built with the curses library. It is similar to the conio interface with additional sideways scrolling. The curses version of wcd has also an additional `graphical' interface. It lets the user select a directory via a full-screen interactive directory browser. It has a Vi(m) like navigation and search method. It can be activated with option -g. This interface is portable to DOS, Windows and Unix. By using the -o option one can always fall back to the stdin/stdout interface. ENVIRONMENT HOME and WCDHOME Wcd uses environment variable HOME to determine where to store its files. See also section FILES. Environment variable WCDHOME over- rides HOME. If both HOME and WCDHOME are set, WCDHOME will be used instead of HOME. For the Unix and Cygwin version it is required that HOME or WCDHOME is set. For the other versions of wcd the use of these variables is optional. 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/ter- minfo 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. One can set this variable e.g. in AUTOEXEC.BAT. Example: set PDC_RESTORE_SCREEN=1 For Cygwin this would be 'export PDC_RESTORE_SCREEN=1'. WCDFILTER Specify filters with environment variable WCDFILTER. All directo- ries that don't match the filter(s) are ignored. A list can be specified by separating filters with colons (:) on Unix/Cygwin and semicolons (;) on DOS/Windows systems (Similar as specifying the PATH variable). Filters are case sensitive on Unix and case insen- sitive on DOS/Windows. Example Unix: export WCDFILTER=projects:doc Example DOS/Windows: set 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 colons on Unix/Cygwin and semicolons on DOS/Windows. 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 colons on Unix/Cygwin and semicolons on DOS/Windows. Example Unix: export WCDEXCLUDE=/dev:/tmp:*CVS Example DOS/Windows: set WCDEXCLUDE=*/windows;*/temp;*CVS In verbose mode wcd will print all filters, bans and excludes. See option -V. ====================================================================== = 2 DOS/Windows installation = ====================================================================== - dos 16 bit version: Make sure that wcd.exe is in your path. ...................................................................... - dos 32 bit version: Make sure that wcd.exe and cwsdpmi.exe are in your path. (requires 80386 CPU or higher) ...................................................................... - dos Bourne Again Shell (bash): (32 bit) 1) copy wcd.exe to your c:/bin directory. 2) Add the following function to your ~/_bashrc file. Notice that under Windows 95/NT the ~/.bashrc file overrides the ~/_bashrc file. In that case place the function in ~/.bashrc function wcd { c:/bin/wcd.exe $* . c:/wcd.go } Start a new bash Attention! wcd 2.1 and later writes the wcd.go file now always on drive C: unless other specified with the -d option. If you use environment variable HOME make a function like this: function wcd { c:/bin/wcd.exe $* . $HOME/wcd.go } ...................................................................... - Z shell (zsh) The dos bash version of wcd can also be used for the win32 port of zsh if it is used under Windows 95 or 98. It is required that environment variable HOME or WCDHOME is set. A function like the following must be defined. This can be done in $HOME/.zshenv function wcd { c:/bin/wcd.exe $* . $HOME/wcd.go } ...................................................................... - Long directory name support The 32 bit DOS versions for DOS supports long directory names in a Windows 95/98 Dos-box. Wcd makes use of DJGPP's LFN (long filename) API, which works under Windows 95 and 98. LFN support does not work if you started your PC in MS-DOS mode. LFN support can be controlled with the environment variable LFN. set LFN=y enables LFN support. set LFN=n disables LFN support. If variable LFN is not set, LFN is by default enabled. Notice that you need to have set LFN=y in your DJGPP.ENV file if you have the DJGPP compiler installed. ... Current DOS version of Wcd does not support LFN under Windows NT. An alpha version of an LFN driver for NT which enables long file name support for DJGPP programs, written by Andrew Crabtree, can be downloaded from Andrew's site (http://www.goof.com/pcg/data/djgpp/lfn0106.zip). If you need LFN support under Windows NT use the win32 console version of wcd. ...................................................................... - Using default options If you want to use some options by default use an alias or macro to do that. Smarter shells like 4DOS and NDOS are able to set aliases like this: alias wcd=wcd.exe -Q In DOS BASH add the options in your function. In the MS-DOS COMMAND.COM shell you can use the 'doskey' command to define a macro. You could add the following line to you AUTOEXEC.BAT file: doskey wcd=wcd.exe -Q $* ...................................................................... - Use of environment variable HOME / WCDHOME The DOS versions of wcd can make use of environment variable HOME. (UNIX version always uses HOME.) set HOME=c:/home/waterlan If HOME is set, wcd will place all it's 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 automaticly 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. ... If HOME is set, DJGPP bash will read '_bashrc' from %HOME%. Your wcd function could now look like: function wcd { c:/bin/wcd.exe $* . $HOME/wcd.go } If the environment variable WCDHOME is set wcd will use WCDHOME instead of HOME. ...................................................................... - PDCurses interface The versions of wcd with pdcurses interface do by default not restore the screen after exiting. This can be controlled with the environment variable PDC_RESTORE_SCREEN. See the ENVIRONMENT section in the manual. ...................................................................... Adding extra directories: You can add an extra directory-list in the file \extra.wcd or %HOME%\extra.wcd Example: d:/games d:/games/invaders e:/project_a See also options -e and -E ====================================================================== = 3 Win32 console (Windows NT) installation = ====================================================================== Notice that under Windows NT console (MS-DOS prompt) a win32-program cannot change the current work directory (although a DOS-program can on NT4). That is why wcd generates a batch script (c:\wcdgo.bat or %HOME%\wcdgo.bat) which must be executed in the current shell. 1) Copy wcd.bat and wcdwin32.exe somewhere in PATH. 2) Edit wcd.bat depending if you use environment variable HOME or not. Suppose you installed wcd in c:\bin If you don't use environment variable HOME wcd.bat looks like: @echo off c:\bin\wcdwin32.exe %* c:\wcdgo.bat If you do use environment variable HOME wcd.bat looks like: @echo off c:\bin\wcdwin32.exe %* %HOME%\wcdgo.bat 3) To be sure that you execute the correct 'wcd.bat' you could optionally create a macro for wcd: doskey wcd=c:\bin\wcd.bat $* Notice that environment variable WCDHOME overrides HOME. ...................................................................... - Z shell (zsh) A win32 port of zsh has been made by Amol Deshpande (ftp://ftp.blarg.net/users/amol/zsh). It is required that environment variable HOME or WCDHOME is set. A function must be defined (e.g. in $HOME/.zshenv) like this: function wcd { c:/bin/wcdwin32.exe $* . $HOME/wcd.go } ...................................................................... - UNC support UNC stands for Universal Naming Convention. It is a Windows 9x/NT way of accessing network drives without using a drive letter. It's from Windows SMB LAN manager networking. A UNC path looks like: \\servername\sharename In Windows networking, you can map a drive letter to a UNC: net use G: \\gui_fileserv\apps The win32 console version of wcd supports UNC paths since version 3.1.0. To change to the UNC path wcd makes use of the 'pushd' command in the wcdgo.bat script. Quote from John Savill's Windows NT/2000 FAQ (http://www.windows2000faq.com): ``The 'pushd' command automatically maps a drive and navigates to it. If you run the 'net use' command after you run pushd, you'll see a new drive mapping. After you're done working in the UNC location, use the 'popd' command to navigate back to your original network location before you ran 'pushd'.'' Options -S, -A and -E can also work on servernames. For instance: wcd -S \\servername will search for shared directories on the server and scan them all. ====================================================================== = 4 Cygwin (Windows 9x / NT) installation = ====================================================================== 1) Make sure that environment variable HOME is set. Create a directory $HOME/bin 2) copy wcd.exe to your $HOME/bin directory. 3) Add the following function to your ~/.bashrc file. function wcd { $HOME/bin/wcd.exe $* . $HOME/bin/wcd.go } Start a new bash ...................................................................... The Cygwin version behaves exactly as the Unix version of wcd. o) regards case by default. - Use option -i to ignore case. o) does not use drive letters. - Use Cygwin's 'mount' command to access other drives than C: o) Uses the same filenames for treedata files etc. Use Cygwin's 'mount' command to access UNC named drives. ====================================================================== = 5 UNIX installation = ====================================================================== Note that the current working directory of a Bourne-like or C shell can only be changed by the builtin cd command. Therefore the binary is always called by a function or alias. The function or alias sources a shell script (go-script) which is generated by the binary wcd.exe. Wcd can only work after the function or alias is defined. The following examples show the installation on a system where you don't have root privileges. Read the manpage of the shell you are using on how to define a function or an alias. If the environment variable WCDHOME is set wcd will use WCDHOME instead of HOME. ...................................................................... Bourne-like shells: Korn Shell (ksh, pdksh), Bourne Again Shell (bash), Z shell (zsh), ash, ... : 1) copy wcd.exe to your $HOME/bin directory. 2) Add the following function to a startup file of your shell, e.g. in $HOME/.kshrc (ksh), $HOME/.bashrc (bash) or in $HOME/.zshenv (zsh). function wcd { $HOME/bin/wcd.exe $* . $HOME/bin/wcd.go } Start a new shell ...................................................................... C Shell (csh): 1) copy wcd.exe to your $HOME/bin directory. 2) Add the following alias to your $HOME/.cshrc file. alias wcd "$HOME/bin/wcd.exe \!* ; source $HOME/bin/wcd.go" Start a new C Shell ...................................................................... The executable can be shared among all users. The wcd.go file is personal: function wcd { /usr/local/bin/wcd.exe $* . $HOME/bin/wcd.go } ...................................................................... The first time wcd is used the program will scan your disk and build a .treedata.wcd file in your HOME-directory. The .treedata.wcd file can be updated by feeding the -s option. wcd.exe will generate each time a script wcd.go in your $HOME/bin directory which must be executed via the function. ...................................................................... Adding extra directories not on your own account: You can add an extra directory-list in the file $HOME/.extra.wcd Example: /home/piet/vhdl /home/piet/project_a/c/src /home/jan/perl See also options -e and -E ...................................................................... It is possible to turn off the automatic pathname expansion of the unix shell. In the C shell (csh) you can use 'set noglob' to turn it off, and 'unset noglob' to turn it on again. One could make the following wcd alias: alias wcd "set noglob; $HOME/bin/wcd.exe \!* ; unset noglob; source $HOME/bin/wcd.go" In the Korn Shell and the Bash the pathname expansion can be turned off and on with 'set -o noglob' and 'set +o noglob' (or 'set -f' and 'set +f'). But the function function wcd { set -o noglob /home/waterlan/bin/wcd.exe $* set +o noglob . $HOME/bin/wcd.go } does not have the desired effect. Can somebody help? ====================================================================== = 6 BUGS = ====================================================================== 1. Unix and DOS 32 bit version: - Strange behaviour when the argument has a wildcard and matches a file or directory in the current directory. This is the result of the pathname expansion of the shell. The work-around is to "double quote" the argument (in some shells). See also the section Unix installation. ...................................................................... If you think you found a bug do the following. First check that you have the latest version of WCD. The bug may already have been solved. If it has not been solved than send me an e-mail. Describe the bug and tell me what version of WCD you use and under what operating system. Addresses are at the end of this file. Also ideas to improve wcd are welcome. ====================================================================== = 7 Source code = ====================================================================== The 16 bit DOS version has been compiled with Borland C/C++ 4.02, but will also compile with Borland 3. The 32 bit dos versions are compiled with DJGPP and do not use DOSDIR. DJGPP is a mix of DOS/Unix (both 'MSDOS' and 'unix' are defined). DOSDIR's dd_findfirst/dd_findnext implementation for Unix is build with opendir/readdir. Using DJGPP's implementation of opendir/readdir to scan a disk is about a factor 100 slower than using findfirst/findnext (with DJGPP 2.01, gcc 2.7.2). Also using DOSDIR's dd_findfirst/dd_findnext for DOS is very slow when it is compiled with DJGPP. It is about a factor 35 slower than using DJGPP's findfirst/findnext. Probably due to a slow stat() function in dd_initstruct(). Using DOSDIR in combination with DJGPP would make scanning the disk very slow. The win32 console version is by default compiled with MinGW. Win32 versions can also be compiled with Borland, Cygwin and LCC. Although Borland 4 can compile wcd with conio interface for windows console, it doesn't work well. The screen gets garbled after exit. Wcd for Unix compiles with gcc and with the native system C compilers such as HP-UX cc or SunOS cc. Wcd can optionally have a curse-based interface. Wcd compiles with curses, ncurses and pdcurses. Ncurses is preferred, because of portability and it restores the screen automatically after exit (if possible) and has better support for resizing of the terminal. The ncurses (new curses) library is a free software emulation of curses in System V Release 4.0, and more. It uses terminfo format, supports pads and color and multiple highlights and forms characters and function-key mapping, and has all the other SYSV-curses enhancements over BSD curses. The ncurses distribution is available via anonymous FTP at the GNU distribution site ftp://ftp.gnu.org/pub/gnu/ncurses. It is also available at ftp://ftp.clark.net/pub/dickey/ncurses. PDCurses is a port of System VR4 curses for multiple platforms. PDCurses has been ported to DOS, OS/2, X11, WIN32 and Flexos. A directory containing the port-specific source files exists for each of these platforms. Get it at http://pdcurses.sourceforge.net/ DJGPP is a project to port the GNU C/C++ compiler to DOS. It includes a shell (bash) and many ported unix utilities. For more information about DJGPP take a look at this internet homepage: http://www.delorie.com/djgpp/ Cygwin is a project to port the GNU C/C++ compiler to Windows. It includes a shell (bash) and many ported unix utilities. For more information about Cygwin take a look at this internet homepage: http://cygwin.com/ MinGW is a project to port GNU C/C++ compiler to Windows. internet homepage: http://www.mingw.org/ LCC is a free C compiler for windows. internet homepage: http://www.cs.virginia.edu/~lcc-win32/ ====================================================================== = 8 Modification history = ====================================================================== V1.0 beta Oct-1996 Original version. V1.0 Nov 14 1996. Always let the user choose in case of multiple match. V1.2c Feb 11 1997. Many bugs have been solved. V1.3a May 2 1997 The Unix version can now also deal with directory names with spaces, dollars, backslashes, single quotes and double quotes. V1.4 Jun 18 1997 Search with subdirectory definition (E.g. wcd adir1/adir2). V1.4 Aug 18 1997 Added 32 bit DOS version. Changed source code for DJGPP compiler. This version is faster but needs a 80386 CPU or higher. V1.4b Sep 12 1997 Small bug fix perfect match list. Quiet option added. V1.5 Oct 28 1997 More options: -Q -f -u Dos versions can work on read-only drives if TEMP environment variable is set. C shell support. V1.5a Nov 10 1997 Bug fix dos32 bit version long dir names support in Windows 95 dos-box V1.6 Nov 11 1997 Added Unix bash support Added a DOS bash version V1.7e Dec 9 1997 - Add directories without scanning. - Improved choosing from a list. - quiet option default ON in DOS versions. - changed MAX_LIST and MAX_WILD_LIST to 22 - no drive in treedata (DOS) - direct CD mode V1.8.0 Feb 9 1998 - Change drive and dir in one go (Dos). - Ban paths - Alias directories V1.8.3 Feb 26 1998 - Bug fix. Dos version crashed on read-only drive if TEMP environment variable was not set. V2.0.0 Mar 9 1998 - Changed distribution conditions to GNU General Public License. V2.0.4 Mar 12 1998 - More scanning options: -S , -A , -E - check for double matches - source Ansi C compliant - ending '/' allowed in database 2.0.5 - Bug solved. Endless loop on 64 bit Unix system (SGI IRIX64) V2.1.0 Jun 18 1998 - Directory stack - Data structures with dynamic memory allocation - ignore case option (unix) - go $HOME when no directory is given - man page Jun 29 1998 2.1.1 - Bug fix: alias, ban and stack could not deal with paths with spaces. 2.1.2 - Bug fix: backspace in long match list (DOS) 2.1.3 - Bug fix: command line parsing (DOS 32 bit) 2.1.4 - quiet option default ON (Unix) Jul 15 1998 2.1.5 - Sort match lists 2.1.6 Jul 22 1998 - removed "dangerous" gets() function. (In the way gets() was used in wcd it was not dangerous. gets() has been removed to avoid warnings some compilers or systems give (e.g. gcc or FreeBSD).) 2.1.7 Sep 2 1998 - bug fix: give warning if cannot change to directory that is in database. 2.2.0 Jan 29 1999 - changed name to Wherever Change Directory - automaticly remove directories from treedata to which cannot be changed. - links support (unix only) - restore text screen after list (dos only) new options: -m make directory and add to treedata file -M make directory and add to extra treedata file -r remove directory and remove from treedata -rmtree remove directory recursive and remove from treedata -n +n use relative treefile +S make relative treefile -t don't skip mount string before /home (unix only) changed options: -u, +u, -f, +f - some minor changes. 2.2.1 Jan 29 1999 bug fix +S,-n,+n options on directory / 2.2.2 Feb 24 1999 bug fix on automounted directories (Unix). 2.2.3 Mar 21 1999 -All versions can read DOS and UNIX text files. -INSTALLATION section in manpage 2.2.4 Apr 14 1999 -DOS versions can use environment variable HOME -path fixing -options -S, +S, -A, -E, -m, -M, -r, and -rmtree can be repeated. 2.2.5 Apr 15 1999 - bug fix path fixing 2.2.6 May 12 1999 new options: -aa Add current and all parent paths to treedata -ee add current and all parent paths to Extra treedata 2.2.7 Sep 30 1999 - environment variable WCDHOME overrides HOME. - improved choosing from list (DOS versions). - improved manpage - mode bits for new directory created with -m option are now only defined by umask. 2.2.8 Nov 19 1999 - option -i now also for dos versions - new option: +i regard case - minor update interface dos versions - win32 console port 2.2.9 Jan 16 2000 - new option -w: Wild matching only. - made wcd compile with MINGW32 compiler. - win32 version for Amol Deshpande's Win32 port of zsh (ftp://ftp.blarg.net/users/amol/zsh). - bug fix: read long paths from stack file (dos 32 bit) 2.3.0 Apr 27 2000 - Optional ncurses based interface for unix versions. 2.3.1 May 28 2000 - bug fix in ncurses interface (array bounds read/write) - update manpage - minor changes 2.3.2 Jun 10 2000 - update for curses and PDCurses 2.3.3 Oct 15 2000 - fall back from curses to stdout - new option: -N use numbers instead of letters - new option: -o use stdout instead of curses or conio - scroll back stack for conio version 3.0.0 Apr 12 2001 -g Curses version only: Full screen interactive directory browser. `Graphical' match list. Vi(m) like tree navigation and search, with wildcard and subdir support -gd Curses verion only: dump tree to stdout -j justgo mode -G set path for go-script -GN Don't create go-script 3.0.1 Jul 6 2001 - update to compile 16 bit dos version with PDCurses. - minor update manpage - makefile for SunOS curses - rpm .spec file update for Redhat 7.1 3.0.2 Oct 17 2001 - bugfix: path quoting in go-script: win32: paths with ampersand (&) or percent (%) unix, dos bash, win zsh: paths with grave accent (`) unix: path with backslash (\) - update manpage section DESCRIPTION 3.0.3 Nov 25 2001 - Zoom, fold and condense in graphical tree mode. 3.0.4 Jul 6 2002 - Graphical tree mode: Terminal resize (on systems that support it). - Update manpage. - wildcards support in banfile - Exclude paths from scanning: options -x and -xf - Compiles now with LCC windows C compiler. - Improved sideways scrolling of matchlist (curses). - Arrow keys work in matchlist in win32 version (curses). - Option -k : Keep paths in treedata when wcd cannot change to them. 3.0.5 Jul 8 2002 - bugfix: compile errors 3.0.6 Sep 4 2002 - bugfix option -x when used multiple times. - minor updates manpage - support longer paths on unix (1024 chars) 3.0.7 Oct 17 2002 - minor updates in documentation: manpage, wcd.txt and INSTALL - fixed a memory leak which could cause unix versions of wcd to generate incorrect treedata files during disk scan with paths excluded. 3.1.0 Nov 13 2002 - Windows console version supports Windows LAN UNC paths. - Option -gd will dump all treefiles that are read. 3.1.1 May 20 2003 - patch for compile problems w.r.t. gcc and (thanks Kevin M. Rosenberg) See INSTALL. - fix compile problems on Mac OS X/Darwin (thanks Zoltan Varady). - default makefile for DOS 16 bit (compact memory model) works again (thanks to Eric Auer). - smaller 16 bit DOS binaries (stripped). 3.1.2 Oct 19 2003 - Specify filters with environment variable WCDFILTER. All directories that don't match the filter(s) are ignored. - Add bans with environment variable WCDBAN - Add excludes with environment variable WCDEXCLUDE - New option: -V Verbose operation. - Removed option -q - Removed duplicate wcd.c file for DJGPP. 3.1.3 Oct 23 2003 - bugfix: fixed bufferoverflow, introduced in wcd 3.1.2 when environment variable WCDBAN or WCDEXCLUDE was used. 3.1.4 - Don't print "-> " when can't change to directory. - Update man page. ====================================================================== = 9 Copyright = ====================================================================== Copyright (C) 1997-2002 Erwin Waterlander This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ....................................................................... Data structures with dynamic memory allocation were created with Ondrej Popp's C3PO ( Compiler Compiler Compiler Popp Ondrej ). http://www.creativefun.org/ e-mail: ondrej@creativefun.org ondrej.popp@philips.com ....................................................................... For the DOS-16-bit and the Unix version I use DOSDIR. Only the parts of DOSDIR that are distributed under GNU General Public License are used in WCD. DOSDIR: A Portable DOS/UNIX/VMS Directory Interface DOSDIR minimizes the OS-specific directory access code for applications allowing programmers to concentrate on the application itself and not on the low-level directory and file structure. DOSDIR applications will run on their native operating systems with the appropriate file syntax and handling, which is expected for that platform. Copyright (C) 1994 Jason Mathews. Jason Mathews The MITRE Corporation 202 Burlington Road Bedford, MA 01730-1420 Email: mathews@mitre.org, mathews@computer.org ....................................................................... wcd_fixpath() is a modified version of _fixpath() Copyright (C) 1995-1996 DJ Delorie, see COPYING.DJ for details _fixpath() is a library function of libc for DJGPP. See also http://www.delorie.com/djgpp/ ....................................................................... I used the regular matching algorithm, recmatch(), of Info-Zip's unzip program. recmatch() was written by Mark Adler. Copyright (C) 1990-1992 Mark Adler, Richard B. Wales, Jean-loup Gailly, Kai Uwe Rommel and Igor Mandrichenko. Mark Adler (original Zip author; UnZip decompression; writer of recmatch() ) and Greg Roelofs (former UnZip maintainer/co-author) have given permission to me to distribute recmatch() (match.c,match.h) under the GNU General Public License conditions as long as there's some sort of comment included that indicates it came from Info-ZIP's UnZip/Zip and was written by Mark Adler. Info-ZIP's home WWW site is at: http://www.info-zip.org/pub/infozip/ ...................................................................... Both DOSDIR and UNZIP are among others distributed by the Simtel.Net(sm) world-wide network. DOSDIR can also be download from my own homepage http://www.xs4all.nl/~waterlan/ ...................................................................... Ideas and source code of NCD (Ninux Czo Directory) have been used in the WCD graphical interface. Ninux Change Directory Copyright (C) 1995 Borja Etxebarria or http://www.ibiblio.org/pub/Linux/utils/shell/ncd-0.9.8.tgz Additions on NCD were made by Olivier Sirol (Czo) Ninux Czo Directory Copyright (C) 1995 Borja Etxebarria Copyright (C) 1996 Olivier Sirol Olivier Sirol http://www.ibiblio.org/pub/Linux/utils/file/managers/ncd1_205.tgz ====================================================================== = 10 Acknowledgements = ====================================================================== Thanks to the following people for giving ideas and/or reporting/solving bugs: Leo Sevat (? I forgot. ew) Paul Lippens (? I forgot. ew) Ondrej Popp (relative treefiles) Ad Vaassen (subdirectories) Michael Magan (interface) Christopher Drexler (bugfix on SGI IRIX64) Richard Tietjen (HOME on DOS/Windows) Howard Schwartz (interface: use letters, WCDHOME) Ajit J. Thakkar (zsh on windows) Christian Mondrup (man page) Gary R. Johnson (graphical tree mode) Peter Gutmann (just go mode) Etienne (SunOS makefile) Edwin Rijpkema (zoom in graphical tree mode) Juhapekka Tolvanen (man page) Andre vd Avoird (Keep paths, -k) Lou (UNC paths support) Kevin M. Rosenberg (patch for compile problems w.r.t. gcc and , man page) Zoltan Varady (fix compile problems on Mac OS X/Darwin) Eric Auer (default makefile for DOS 16 bit (compact memory model) works again) Val Vakar (WCDFILTER) Jari Aalto (man page) Thanks to the following people for using their Free software: Ondrej Popp, C3PO Jason Mathews, dosdir Mark Adler, recmatch() DJ Delorie _fixpath() Borja Etxebarria & Olivier Sirol Ninux Czo Directory Felix Kasza (MVPS.ORG http://www.mvps.org/win32/) WIN32 API sample WNetOpenEnum()/WNetEnumResource() ====================================================================== = 11 Contact / Download new versions = ====================================================================== I can be contacted via E-mail: waterlan@xs4all.nl Address : Neercanne 1 5655 AC Eindhoven The Netherlands -- The latest version of WCD, executables and sources, can be downloaded from this internet-page: http://www.xs4all.nl/~waterlan/ -- For each release of wcd there are two main packages (the question marks indicate the version number): wcd-?.?.?-src.tar.gz : package for Unix systems. Includes source code in unix text. wcd???bs.zip : package for DOS and Windows. Includes source code in DOS text and DOS and Windows ready-to-run binaries. Often you can also find wcd???s.zip which lacks the ready-to-run binaries. -- Wcd is also distributed by: Simtel.Net: http://www.simtel.net/pub/simtelnet/msdos/dirutl/ ftp://ftp.simtel.net/pub/simtelnet/msdos/dirutl/ Garbo: http://garbo.uwasa.fi/pc/dirutil/ ftp://garbo.uwasa.fi/pc/dirutil/ Ibiblio (was Metalab (was SunSite)): http://www.ibiblio.org/pub/Linux/utils/shell/ SourceForge: http://sourceforge.net/projects/wcd/ -- Erwin Waterlander