cmd.exe can complete file and directory names. Well, most of the time anyway. And it has a (not very smart) history of the commands you previously typed. But thats just about it.
Modern unix shells are way smarter and more flexible than that. Take this introduction for bash for example (part 2 is here): You can configure it more or less any way you like. A look at the bash manual reveals a ton of other possibilities as well.
And there's a bunch of other smart shells out there as well. On Linux/Unix just pick what you like.
Don't use '#ff0000':
use Acme::AutoColor; my $redcolor = RED();
All colors subject to change without notice.