Both command history and command-line completion are included in the default shell (cmd.exe) for win2k (and XP) If you are in the habit of running command.exe (from win95 or 98 days, get out of it, cmd is easier to type). But they are not both enabled by default.
To force Enable Command line completion : (I suggest this, but some people would object)
Modify the registry (use "regedit"):
HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\CompletionChar should be a REG_DWORD and set it to 0x9 (for tab completion).
HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\EnableExtensions should be a REG_DWORD and set it to 0x1.
Next you need to check to see that these environment variables are not "shadowed" by the user settings. HKEY_CURRENT_USER\Software\Microsoft\Command Processor\CompletionChar HKEY_CURRENT_USER\Software\Microsoft\Command Processor\EnableExtensions should match the respective values from above or not be present.
For "up-arrow" command recall: (this should already be enabled) open a cmd prompt window (I would do start->[run] cmd ) right-click on the titlebar [defaults]->[options]. Set your Command History numbers to something like BufferSize: 64, Number of Buffers: 4. Unlike NT, you can send textfiles as the first argument to more. So you can do
more myfile.txt
and view it a page at a time. Unfortunately it doesn't use vi keys: space is nextpage, ret is next line. I know of no way to go backwards.
There is an analog to /dev/null in NT/2K. There is a file in every directory called NUL so you can append to it and your data goes nowhere. (yes > and >> work the same, but I am not sure if stderr and stdout are considered distinct from each other). To open a window of the cwd from the cmd prompt:
start .
in 2000 you can drag a filename to an open cmd prompt window and it will append that filename (or directory name) to the current cmdline. To quickly get a file with the wrong crlf's into 2000 format, use the old DOS editor to load then resave it: ``edit filename''.
The NT Find command has similar functionality to grep. you can pipe output through it and look for a string two ways:
type myfile.txt |find "yourname" find "yourname" myfile.txt