DOS was the first operating system I learned to use. I remember a test by my tutor in which one had to create a hierarchical set of directories. This probably sounds trivial to anyone familiar with graphical user interfaces, but then the scenario was very different. It even looks ancient by today's standards. Windows 95 hadn't been released at that time, and Linux was unheard of in India. I liked DOS much better than Windows 3.1, which looked quite flimsy and unstable, not to mention that it was a big memory hog. DOS is quite different from Linux in many ways.
DOS does not provide any graphical user interface and you have to learn at least a dozen commands with its numerous options to do some basic tasks like copying a file or moving between the directories. Even a minor spelling mistake can result in a "Bad command or file name" error.
DOS does not support the concept of multi-users; each and every user has to customise the system according to his need every time he wants to work on it. It was also not a multitasking system. This meant that you could not check out the value of a calculation when typing a letter without closing that application first.
DOS also does not have any in built security features. This was acceptable as long as you did not want a networking system. There was other variants of MS-DOS, like PC-DOS from IBM and some others, which tried to add the missing features. Some of the deficiencies have been resolved using third party utilities but basic limitations like the arcane 640kb-memory limit and single-tasking were not acceptable to many.
Now in case you are wondering why anyone would care to use DOS, I will point out some advantages. Basically DOS has had very different goals from that of Linux. It was a very cheap system (as far as cost is concerned) and it was quite usable with its minimalist set of features. It was a simple system to work with. There weren't too many complications to worry about if you didn't want to develop anything on it. It was arguably the world's most popular operating system and it had a comfortable number of applications for common tasks.
The files in Linux can be very long, up-to 255 characters like Windows, and they do not always have extensions. The executable files are identified through an attribute rather than the extension. File extensions are less important to Linux than for DOS and Windows, since Linux usually identifies files by a unique identification code called the magic number that depends on the file type.
Directories are similar to that of DOS and follow a hierarchical structure. The path names are separated by forward slashes (/)in Linux whereas DOS and Windows uses back slashes (\). For example:
% cd /mnt/cdrom
A / denotes the root and .. stands for the parent directory, similar to DOS.
In bash shells, the ~ symbol maybe used to jump to the home directory quickly. For example:
% cd ~
Several of the DOS commands have Linux equivalents. The Linux shell is similar to the DOS command line but is far more powerful, and I found that it was also more workable with features like colour highlighting and friendlier navigation capabilities, depending on the particular shell you are using.
Most Linux distributions come with the Bash (Bourne Again SHell) as the default. There are several others, like the Korn shell and the C shell. They are usually similar. It's recommended that you learn to work with one shell completely before trying out the others. Things usually get complicated if you want to run shell scripts, which are similar to batch files (files with the .bat extension) under DOS.
There is a DOS emulator called dosemu www.dosemu.org for Linux that is capable of running DOS programs under the Linux operating system. This software is still under development; you may wish to try it out though. It is known to be fairly usable at least for some applications. If you are looking for Linux just to use DOS programs for free then try using FreeDOS www.freedos.org. That should be much better than Linux.
As I have said before Windows is more or less similar to Linux. When people are introduced to Linux they are at first intimidated by the system. It has different kinds of graphical interfaces and things don't always work as they are expected to. When users look at me in a puzzled manner I demonstrate in some easy ways how common tasks like changing the desktop wallpaper or playing a song is similar to Windows. The problem with this kind of approach is that the users complain very soon that Linux doesn't offer them much more than Windows does :-).
I agree with them to a certain extent on this. There are some limitations to what you can expect from an operating system. You just can't expect Linux to work like a 3D-shooter game or something. Of course, there are many differences in the shell, the choice of user interfaces and the philosophy and goals of the operating system. Linux is developed as a open system in which the source code of the core Linux system (kernel) is available for anyone for free but how this could affect the end user is difficult to explain initially.
The user interface is probably the first thing you notice when you begin to use the Linux system. Windows offers a single, monolithic user interface, which is more or less the same across all the versions. In contrast, Linux has two major desktop environments called KDE (www.kde.org) and Gnome (www.gnome.org). KDE has a built-in window manager, while Gnome is supported by many, such as Sawfish and Enlightenment.
The decision of choosing one among the desktop environments and windows managers is left to you. Some of them can run efficiently in a system with low amounts of memory and some of them are designed to look like a game console. KDE would be more similar to Windows, and Gnome with the Enlightenment window manager was fancy enough for me. Try out some of the popular ones before making the decision.
Let's take a look at Windows in more detail so that you can clearly make out the differences.
Windows has two major series, a desktop oriented series (Windows 9x) And a network oriented series (Windows NT).There are also other versions like Windows CE for embedded systems.
Windows 9x series
Before Windows 95 was released, all versions of Windows until version 3.1 were graphical platforms on top of DOS. This offered limited capability for multitasking and the Program Manager interface was cluttered with no distinct hierarchy. Windows 95 was a 32-bit operating system and a major improvement in user interface with its "Desktop" concept adapted from the Macintosh user interface. It also offered limited compatibility with previous versions of Windows and DOS. Stability was also improved Windows 98 and Windows ME offered some more features though nothing major was added. The more recent version called Windows XP is considerably more stable due to incorporating the Windows 2000 kernel, and is comparatively friendlier and easier due to an attractive interface.
Windows NT series
Windows NT is considerably stable but demands more resources. It supports the Intel architecture, and at one time the Digital alpha and MIPS processors, but I believe those have been dropped now. It managed to replace UNIX in small-scale networks due to the similarity to the popular Windows 95 interface. The latest incarnation called Windows 2000 provides a few more administrative utilities and services.
FreeBSD vs. Linux vs. Windows gives a side-by-side comparison at http://people.freebsd.org/~murray/bsd_flier.html
Information on the GNOME desktop project is available at http://www.gnome.org
Information on the KDE desktop project is available at http://www.kde.org
Linux Installation and Getting Started is a bit outdated, but provides an excellent operating system comparisons, at http://www.tldp.org/LDP/gs/gs.html
LinuxWorld.com provides scenario comparisons of Windows and UNIX type systems at http://www.linuxworld.com/site-stories/2001/1018.tco.html