UnixDos,Toolkit,utilities,file,management,administration,command,line,process,control,batch,UNIX,Windows95,WindowsNT,UnixDos,Toolkit,conversion,edit,manipulation,search,directory,count,extract,sort,split,compare,merge,test,interaction,MSDOS,DOS,32bit,16bit,grep, ls, du, df, find, mv, rm, m4,chmod, cc, dd, cmpdir, cut, cpio, expr, head, tail, fgrep, egrep, mkdir, mvdir, nl, paste, pr, od, rm, sed, sleep, split, sum, strings, tee, touch, date, echo, join, more, uniq, sort, uptime, uudecode, uuencode, wc, which,sharewareImprovements over "classic" UNIX®ud_lo.gif (12165 bytes)

UnixDos,Toolkit,utilities,file,management,administration,command,line,process,control,batch,UNIX,Windows95,WindowsNT,UnixDos,Toolkit,conversion,edit,manipulation,search,directory,count,extract,sort,split,compare,merge,test,interaction,MSDOS,DOS,32bit,16bit,grep, ls, du, df, find, mv, rm, m4,chmod, cc, dd, cmpdir, cut, cpio, expr, head, tail, fgrep, egrep, mkdir, mvdir, nl, paste, pr, od, rm, sed, sleep, split, sum, strings, tee, touch, date, echo, join, more, uniq, sort, uptime, uudecode, uuencode, wc, which,sharewareSorting

UnixDos,Toolkit,utilities,file,management,administration,command,line,process,control,batch,UNIX,Windows95,WindowsNT,UnixDos,Toolkit,conversion,edit,manipulation,search,directory,count,extract,sort,split,compare,merge,test,interaction,MSDOS,DOS,32bit,16bit,grep, ls, du, df, find, mv, rm, m4,chmod, cc, dd, cmpdir, cut, cpio, expr, head, tail, fgrep, egrep, mkdir, mvdir, nl, paste, pr, od, rm, sed, sleep, split, sum, strings, tee, touch, date, echo, join, more, uniq, sort, uptime, uudecode, uuencode, wc, which,sharewareUNIX utilities just scan the directory sequentially and so you get an unsorted list:

du, find etc.

UnixDos will always sort the top level and each sub level in descending operations so you always will get a sorted list (unless you want to switch it off with "set UDNOSORT=ON")

UnixDos,Toolkit,utilities,file,management,administration,command,line,process,control,batch,UNIX,Windows95,WindowsNT,UnixDos,Toolkit,conversion,edit,manipulation,search,directory,count,extract,sort,split,compare,merge,test,interaction,MSDOS,DOS,32bit,16bit,grep, ls, du, df, find, mv, rm, m4,chmod, cc, dd, cmpdir, cut, cpio, expr, head, tail, fgrep, egrep, mkdir, mvdir, nl, paste, pr, od, rm, sed, sleep, split, sum, strings, tee, touch, date, echo, join, more, uniq, sort, uptime, uudecode, uuencode, wc, which,sharewareArgument Expansion

UnixDos provides the full UNIX argument expansion functionality but adds even more power thru the following features:

full file match inversion: ls !*.zip

UnixDos,Toolkit,utilities,file,management,administration,command,line,process,control,batch,UNIX,Windows95,WindowsNT,UnixDos,Toolkit,conversion,edit,manipulation,search,directory,count,extract,sort,split,compare,merge,test,interaction,MSDOS,DOS,32bit,16bit,grep, ls, du, df, find, mv, rm, m4,chmod, cc, dd, cmpdir, cut, cpio, expr, head, tail, fgrep, egrep, mkdir, mvdir, nl, paste, pr, od, rm, sed, sleep, split, sum, strings, tee, touch, date, echo, join, more, uniq, sort, uptime, uudecode, uuencode, wc, which,sharewarepartial file match inversion: ls ![a-m]*!*.zip

file contents retrieve: ls @file.lst

UnixDos,Toolkit,utilities,file,management,administration,command,line,process,control,batch,UNIX,Windows95,WindowsNT,UnixDos,Toolkit,conversion,edit,manipulation,search,directory,count,extract,sort,split,compare,merge,test,interaction,MSDOS,DOS,32bit,16bit,grep, ls, du, df, find, mv, rm, m4,chmod, cc, dd, cmpdir, cut, cpio, expr, head, tail, fgrep, egrep, mkdir, mvdir, nl, paste, pr, od, rm, sed, sleep, split, sum, strings, tee, touch, date, echo, join, more, uniq, sort, uptime, uudecode, uuencode, wc, which,sharewarefile text exchange: cut -c5-10 ~ThisIsText displays: IsText

multiple commands: uecho `ls } x1.tmp;wc -lt { x1.tmp` files

automatic environment: set UDLS=-le; ls x*

two level expansion: scat '*.c` > c.lst; ls @c.lst

(u)cd (Current directory)

If you call "cd" without any argument under UNIX it will go automatically to the "homedirectory".

In DOS there is no reliable equivalent so instead the UnixDos "cd" will show you the current drive and directory.

cp/mv (Check Destination)

"cp" and "mv" will not check if the last argument on the command line is a directory and it will silently create a new file and leave you under the wrong impression that all the specified files have been moved. Here is an example:

You want to move all C source to the "\tmp" directory, but you make a typo and forget the slash in front of tmp:

mv *.c tmp (instead of: mv *.c /tmp)

Instead of finding all your C sources in the "/tmp" directory, you will only find the last C source in the file "tmp" in the current directory and all the other C sources are lost!

"cp" and "mv" in UnixDos will first check if the last argument is a directory (when more than 2 files are specified) and give you an error message if this is not the case.

cp/mv/rm (Show Progress)

"cp", "mv" and "rm" have no option which will show you the currently processed files, so that you can see the progress (as "cpio" is doing it so nicely) and even the new destination. UnixDos allows you to see each file as it is processed (-l option).

cp/mv (Verify)

"cp" and "mv" have no verify option which actually re-reads the new copy and compares it against the original.

UnixDos provides the verify feature (-v option) to compare the copy against the original. This applies only in those cases to the "mv" utility when you move files between drives(file systems).

cut (Honor Field Sequence)

The UNIX "cut" ignores the sequence in which you specify the selected fields:

cut -f3,1 is identical under UNIX to:

cut -f1,3

UnixDos will not ignore the specified field sequence and will allow you to rearrange the field sequence.

cut (Allow reverse character extraction)

The UNIX "cut" does not allow character extraction counting from the end of the line(s):

cut -C5-10 ~ThisIsText

Will produce:

ThisIs

cmp (Show Filename and Hex Values)

UNIX "cmp" does not show you the filenames or any hexadecimal/text values (only octal).

UnixDos lists the filenames first, so you can easily see which values go with which file, and also shows the result in hex and text form.

df (Show Bytes not Blocks)

UNIX "df" displays the free space by default in number of blocks(which varies in size) instead of bytes like UnixDos. The MKS and other DF ports also show the wrong result for big SCSI drives or Network drives (see "df")

diff (User-friendly Display)

UNIX "diff" shows the comparison result as a command sequence for the "ed" editor - it is NOT meant for regular humans to read this kind of cryptic output. Also you cannot see the filename only the ">" or "<" character to easily see which text goes with which input file. UnixDos will show the differences in an easily readable form and also allows you to view the context surrounding the differences.

dircmp (Faster and focus can be chosen)

This is a very slow shell script and is not flexible to compare by time/size/contents.

UnixDos provides a high-speed tool to compare entire directories using the time, size or contents (cmpdir)

du (Show (Mega)Bytes in sorted sequence)

UNIX "du" displays the used space in blocks (which varies in size) which is very user-unfriendly and does not allow you to see the actual bytes without the empty padding space. Also it displays the result in an arbitrary unsorted sequence, while UnixDos DU always displays the result in sorted sequence.

UnixDos will show the result in alphabetical order in megabytes and allows you to discard the padded empty space (so that you can correctly compare when you copy directory trees to a new media with a different block size!). Also you can get a sorted list of files in different directories or number of files in directories.

(u)echo (Enable/Disable escape logic and space between arguments)

UNIX/MKS does not allow you to enable or disable the automatic escape character logic and automatic space insertion between arguments. This might be essential if you work with the problematic backslash in DOS path names - or if you have to join arguments without a separating space in between.

(u)find (Show results in sorted sequence)

UNIX "find" displays the searched files in an arbitrary unsorted sequence, while UnixDos UFIND always displays the result in sorted sequence.

(u)find (Add -older and -NEWER/-OLDER option)

UNIX "find" does not have the capability to also search for files which are older, while UnixDos UFIND makes this option available and therefore allowing you to search for an actual time window. It also allows to search for after/before or equal with the -NEWER and -OLDER option.

grep (Allow long line length and descend into subdirectories)

"egrep","fgrep" and "grep" cannot handle lines longer than 1024 bytes which can easily be too short when you work with larger database dumps. Also the UNIX "grep" does not provide a descending option so that you can also easily scan all subdirectories.

UnixDos can handle lines up to 10,000 bytes and allows you to descend into all the subdirectories with the "-d" option.

rm (Show file details for read-only files)

"rm" does not show all the file details when you use the interactive '-i' option.

UnixDos will show you all details (ls -l) equivalent.

sed (Allow long line length)

"sed" cannot handle lines longer than 1024 bytes which can easily be too short when you work with larger database dumps. UnixDos can handle lines up to 10,000 bytes.

tail (Better roll-back)

UNIX "tail" cannot go back more than 4096 bytes. UnixDos can go back up the 20,000 bytes.

The Competition

MKS (Trademark of Mortice Kern Systems Inc)

The biggest competitor to the "UNIX on DOS Toolkit (UnixDos)" is the MKS Toolkit from Canada.
It is a great package but has the following limitations and drawbacks:

WinXs

This package is shareware for $15 but strictly runs all the UNIX utilities only as Windows applications, so you will have to point and click a lot and it is missing lots of utilities.

DOSNIX

This package is shareware for $35 but has no "regular expression" or any of the other regular UNIX argument expansions
(try: ls a* or ls *exe). It also misses lots of UNIX utilities.
Some utilities are still in a very early stage (like df which shows you the free bytes but no total bytes or percent used).

 

UnixDos Environment Variables

set EDITOR=b Editor to be used in "more" utility (default is vi)

set PATH=.... Main program directory list used from "which" utility

since UnixDos is such a long code for all the environment variables UD is used instead:

set UDDIFF=vdiff -b Defines the 'diff' program for the CMPDIR utility

set UDEXIT=c:\myexit.txt Defines the filename to store the exit value (test.exe, saveexit.bat)

set UDNETLST=G-Z Defines the list of network drives (used by df) (default is F-Z)

set UDNOSORT=ON suppress automatic file/directory sort during expansion

set UDRETRY=5 number of retries when verify fails (cp, mv) (default is 10)

set UDVER=ON Show the UnixDos utility version

set TMP=c:\temp point to temporary work directory (if not set root "/" is used)

set UDAF Custom environment for AF utility

set UDGREP Custom environment for GREP utility (and so forth for all utilities)

Argument Expansion Test Module: SHOW_EXP

This powerful UnixDos argument expansion can get a bit confusing, so I created a small test utility, which just echos the arguments to put in and shows you the final arguments which would be passed into your program.

Example:

set UDSHOW_EXP=au*.bat;*.sys

show_exp $LIB `udate`

Will show::

Adding default environment: $UDSHOW_EXP=au*.bat;*.sys

Arguments before expansion:

--------------------------------------------------------

IN: argv[ 0] = c:\put\SHOW_EXP.EXE

IN: argv[ 1] = $LIB

IN: argv[ 2] = `udate

Arguments after expansion:

--------------------------------------------------------

OUT: argv[ 0] = c:/put/show_exp.exe

OUT: argv[ 1] = autoexec.bat

OUT: argv[ 2] = config.sys

OUT: argv[ 3] = io.sys

OUT: argv[ 4] = msdos.sys

OUT: argv[ 5] = pagefile.sys

OUT: argv[ 6] = c:\lib;c:\msvc\lib

OUT: argv[ 7] = Thu Aug 29 16:00:06 1996

Notice how the following expansions take place:

First the automatic environment for SHOW_EXP is pulled in and expanded,

I used the separator ';' to specify two regular expressions "au*.bat" and "*.sys":

UDSHOW_EXP -> OUT: argv[ 1] = autoexec.bat

OUT: argv[ 2] = config.sys

OUT: argv[ 3] = io.sys

OUT: argv[ 4] = msdos.sys

OUT: argv[ 5] = pagefile.sys

Then the general environment variable "LIB" is expanded:

$LIB -> OUT: argv[ 6] = c:\lib;c:\msvc\lib

And finally the UDATE utility is called and the result becomes the last argument:

`udate` -> OUT: argv[7] = Thu Aug 29 16:00:06 1996

Future Plans

If there is enough interest we are also planning to develop a user-friendly WINDOWS interface for all/most of the UnixDos utilities,

since it can be quite intimidating to remember all those cryptic UNIX command line options.

The following UNIX utilities are currently NOT part of the current UnixDos package: (maybe in the future they will!)

UNIX editor (vi)

AWK

Programmer Development utilities (ar, cc, ld, make, lex, size, yacc ...)

Shells (sh, ksh, csh)

Speller (spell, edspell, eddict)