I’ve received a few help request emails from the older crowd interested in Linux, and a few of them ask the same type of question that can roughly be summed up as this:

Can I "pick apart" Linux like I could with MS-DOS?

I’ll explain what the above means. MS-DOS, or just about any DOS in general for that matter (PC DOS, DR-DOS, etc.), is very easy to understand and use because those OSes were limited by the hardware available at the time they were released.

Certain older computer users have a very strong affection for MS-DOS because they know it so well, and want to be able to achieve the same level of knowledge with Linux at the command line. After all, MS-DOS wasn’t hard, so how difficult could Linux be, right?

I won’t say Linux at the command line is difficult, but it can be frustrating. There are a few basic things you have to know when using Linux at the command line.

TSRs vs. Processes

When you’re running MS-DOS, the only stuff running in the background are TSRs. You probably know exactly where these TSRs are physically loaded from, how they’re run, why they’re run and so on.

The most simple example of a TSR in MS-DOS I can think of is MOUSE.COM, which enables usage of the computer mouse in MS-DOS apps like EDIT. The mouse driver loads on load of AUTOEXEC.BAT, stays loaded and enables use of that peripheral device.

Linux on the other hand has a whole bunch of processes that begin on startup via init. This is a totally different animal compared to MS-DOS. Processes are given IDs, and you can read all about them at the aforementioned link.

Do you have to know all the ins and outs of init? Not really. The point is that this is not the MS-DOS you’re used to.

If you want to see all the current processes running at the Linux command line, a tutorial is here explaining in simple terms how to do it via the ps command.

Single-task vs. Multi-task

MS-DOS is primarily a single-task environment; Linux is multi-tasking capable and can do it easily.

It’s a good idea to know how to switch between tasks at the Linux command line, because after all, you have the ability so you might as well use it.

The way Linux multi-tasks at the command line is from the use of foreground and background "jobs". This tutorial explains very well how to work with command line Linux multi-tasking, the use of foreground/background/stopped jobs and so on.

"Not in your face" environment

The best way I can describe the difference between MS-DOS and Linux is that DOS is always in your face while Linux isn’t.

Old-school DOS users are very used to having everything presented to them all up front just about anywhere in the environment; this is due to DOS’ single-task way of doing things. Whatever DOS is doing, you see it.

Linux isn’t like that. Most of the time the Linux environment won’t tell you what’s going on by design.

You can think of it this way: DOS is "I’ll tell you everything" and Linux is "I’ll tell you everything, but only if you ask for it."

In Linux, the assumption is made that you, the user, will make the OS run however you want it to and for the OS to just stay out of the way unless you tell it something different. This stark openness is unnerving to those used to the DOS prompt because it’s a completely different way of operating on the command line.

The Big Question however is this: Even with Linux’s stark openness, does it provide a more powerful, get-more-done command line experience? Yes. In Linux you’re running the same OS used in super-powerful UNIX mega-computers, so of course it’s better than DOS ever was.

Where do you go to get just the command line (i.e. no GUI) and nothing else?

Linux users have varying debates (read: arguments) on what to use for a "pure Linux" environment. In fact, I don’t even know what "pure Linux" actually means because definitions of that vary. (If you want to take a stab at the definition of "pure Linux", please feel free to post a comment and explain it, because I can’t.)

To get to where everything starts in Linux, you have to get away from the "based on" distributions and get to the "originals". There are three. Debian, Slackware and Red Hat.

For the new Linux command line user, Slackware and Debian will hit you like a ton of bricks and you’re probably not going to like it – although don’t let my words dissuade you from trying either of them out. Red Hat is commercial now and has been for some time, so you’re probably not interested in paying for it.

A distribution which is by nature minimal that allows you to learn how things are done in Linux from the ground up (mostly) is Arch Linux. If you want a Linux environment that dumps you at a command line once installed and lets you learn it in such a way where you feel a good sense of accomplishment as you go along, Arch is what you want. The Beginner’s Guide for Arch is one of the best-written I’ve ever seen for the Linux command line environment.

"Picking apart" an OS ultimately means having to learn it first, starting at the command line. So for you older DOS users out there that wanted a Linux that let’s you build it, so to speak, Debian, Slackware and Arch are really good for that; that’s where you begin.