[comp.binaries.ibm.pc] v01i245: mycd, a unix-like change directory program

marty@io.ATT.COM (j.m.borden) (03/18/89)

Checksum: 3581954367  (Verify with "brik", report brik bugs to me -- R.D.)
Posting-number: Volume 01, Issue 245
Originally-from: marty@io.ATT.COM (j.m.borden)
Submitted-by: marty@io.ATT.COM (j.m.borden)
Archive-name: mycd/mycd.uue

This is a CD utility that I wrote that behaves like the UNIX (tm) cd
command.  It robustly allows wildcards, environmental variables, and
will use an environmental variable CDPATH to help locate regularly
accessed directories.  Unix folks may already appreciate the value of a
CDPATH.  The documentation is thorough.

Marty Borden
marty%garage.att.com  [internet]  or  att!granjon!marty  [uucp]
[N.B.  mail has been very unreliable lately.]

[
This is the best free directory-changing program I've seen so far under
MS-DOS.  In less than 3000 bytes it gives you just about everything you
need in a directory changing program.  (Microsoft showed foresight when
it decided to make the current directory an attribute of the MS-DOS
kernel rather than an attribute of each process.  What the MS-DOS CD
command lacks, which is a lot, can therefore be fixed by nifty programs
like this one.)

MYCD allows the use of environment variables (prefixed by % or $) and
wildcards (* and ?) in a directory change string, so you can say

     cd $home/do*

and land in /binaries/ibm/pc/doc, provided you have an environment
variable

     HOME=\binaries/ibm/pc

already defined.

If an environment variable CDPATH is defined, it specifies a list of
directories to look inside for directories to change to.  So if CDPATH
contains a directory called \xyz, and you type "mycd xyuuu", and if
there is a directory xyuuu inside xyz, you will be changed to
\xyz\xyuuu, if it isn't found elsewhere.

Not bug-free, alas.  A leading forward slash in an environment
variable causes trouble.  So in the example given before, you could
not have an environment variable

     HOME=/binaries/ibm/pc

and make it work.

Checksums obtained with the 4.3BSD "sum" or System V "sum -r" command.

checksum     size (bytes)  file (between BEGIN--cut and END--cut lines)
   29722         8867      this uuencoded posting

checksum     size (bytes)  file
   38872         6415      mycd.arc

-- R.D.
]

mycd part01/01
BEGIN--cut here--cut here
begin 644 mycd.arc
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
9-*-T3*EZ/A)0XM0L4JF%AY8&,>,UP@(:`#`2
`
end
END--cut here--cut here