I've been using linux full time for about 8 years. Now and then I help someone else migrate from windows to linux. Because I don't often use windows, I often find myself forgetting some of the differences between the operating systems.

I would like a guide that I can give to such users, to help them get more comfortable with using linux. The guide should include things like the drive mounting systems (C:\bar\ vs. /foo/bar/), and software installation.

There are lots of guides out there called "migrating/moving from windows to linux" or similar, but nearly all of them seem to be full of linux propaganda, or installation instructions. That's fine for other purposes, but I want a guide for someone who has already decided to move, (e.g. because they like the concept of open source), and for whom the system has already been installed. So a post-install "I've moved from windows to linux, now what?" kind of guide that covers practical differences (i.e. not philosophical or highly technical) that an average windows user (Someone who uses a computer for websurfing, document editing, movie watching, game playing, etc.) might encounter. Do any such guides exist?

  • 3
    They're really so different that the guides can only be either very technical or very dumbed down. Jan 27, 2013 at 6:37
  • 1
    @IgnacioVazquez-Abrams: perhaps. But I think that there can be a reasonable compromise somewhere - ie. not going into kernel design and things like that, but at least covering the practical differences that an average non-geek user might encounter..
    – naught101
    Jan 27, 2013 at 6:45
  • You may want to start covering the part where they're drastically different, not just going to practical differences. Practical differences won't help them realize they're dealing with a really different system, and will only lead to "How do I do it like I do in Windows?" about every single thing, instead of "How do I do this?"
    – njsg
    Jan 27, 2013 at 10:54
  • Also, is this for someone who will administer the system or just for a system you will use as an user and that is administered by someone else? This also plays a bit of a role in the kind of introduction you can have.
    – njsg
    Jan 27, 2013 at 12:03
  • It is best if they have somebody with a lot of patience guiding them into some common tasks.
    – vonbrand
    Jan 27, 2013 at 18:45

3 Answers 3


Microsoft Windows and GNU/Linux, along with other UNIX-like systems, are based on very different approaches to user interaction. In fact, one of the most annoying things is when people try to map concepts, for example, when someone complains about some distro not offering a graphical login screen by default because it's "counter-intuitive" (read: it goes against the expectations of someone who has been using Windows NT for their entire life).

The single best tip regarding this is: leave your expectations at the door, don't look for "equivalencies", instead, treat this like a foreign language you're trying to learn that differs radically from your mother tongue. Asking how to do this and how to do that will help you learning some stuff, but do always keep in mind that you need to learn a new logic, a new philosophy, that the design decisions and expectations behind the system you're starting to use differ a lot from that of the system you came from.

IMHO, a good idea would really be to summarize some of the more important differences, so that the newcomer gets acquainted with them and is aware of what is there to learn about.

  • Like sr_ mentioned, command line. Even if the non-NT branch of Windows started on top of a command line operating system, it was nowhere close to UNIX shells.

    • Tell users about shells and what you can do with them, if they are aware of MS-DOS or of the Windows command prompt, warn them that functionalities and features differ a lot, that knowing the UNIX shell one can do several tasks at once over a bunch of files, for example. That it lets you build blocks from small, simple utilities. That the UNIX shell is the sole thing many people need for day-to-day life in the UNIX world.
    • Explaining users that there is a more clear separation between shell and terminal (or terminal emulator) is also something I'd do, it would help clear some possible misunderstandings in the future, as well as provide one example of choice in UNIX-land. Shell is the thing you use to run commands, start programs and do shell scripts. There are several shells.
    • Unlike Windows NT, where the graphical interface is started and you start stuff from a graphical environment, X is more of a user program under UNIX, that you can as well as start from a text terminal, even if many distros default to starting some graphical login screen on boot.
  • Filesystem

    • Different rules, different conventions. You can use the file names you want, but more than being frowned upon, spaces will actually break in many places. Tell them it may be a good idea to refrain from using spaces in names, it will save headaches if they ever want to do some batch processing using scripts.
    • There are no separate roots for different filesystems, there is one / to rule them all. Once mounted, you don't exactly see the difference between one filesystem and the other (except when it does not let you do some things because of filesystem limitations, for example, names in FAT).
    • It may be interesting to tell them about links, which are actually available under Windows NT but aren't that frequently used by end users. And explain that this is not synonymous with "desktop shortcut".
    • The traditional approach is to have filesystems listed in fstab. Although several hacks exist to handle that pendrive your friend has with some random files, it helps to mention that there is an fstab and what does it do. Then tell them about pmount or other tools that let them mount, say, pendrives on the fly.
  • Permissions: Dealing with hotpluggable devices like pendrives, or with devices where you write stuff (like DVD burners), or, say webcams and bluetooth dongles requires the user to have permission to use devices. This is a good thing, but some users may clash into this to the extent that some people have even started making tools that give whoever logged in through the graphical login screen permissions to use these devices automagically... Windows has sort of the same separation, but due to a feedback loop of badly designed tools which fail with non-Admin accounts, what doesn't encourage people to use unprivileged accounts under Windows, people end up being largely unaware of the idea of leaving administration accounts for, well, administrative purposes, using everything else with a not-so-privileged account. I think Microsoft even ended up using tools to discard privileges in some kinds of processes. Tell them about su, sudo (if they use that), about groups used for permission management (e.g. plugdev and games under Gentoo).

    • (And, meanwhile, warn them that changes in groups only take effect once you log in from a real terminal, any running account won't see that; I don't know how Windows does this, but I've seen so many people clashing on this one...)
  • Choice: There are plenty of ways to do the same thing, there are plenty of things you can do for the same purpose. Different shells, different window managers, different web browsers, different terminal emulators. Remind them that the first thing they see is not the only thing they can use, that even if the distro defaults to that, chances are that there are alternatives.
  • Package management: Tell them how Linux handles package management, with a hint that it is not a good idea to blindly install packages out of the package manager just like you download your average .EXE from the program website.

The TL;DR should effectively be: don't assume things are Windows-like, keep in mind you're dealing with a different operating system, in a different world.

  • Nice one, but i don't agree with spaces in filenames. If scripts can't deal with it, they have to be fixed and not the filenames themselves. Jan 27, 2013 at 13:16
  • Which other character would you suggest we standardize in? The only character that would not be accepted in filenames at the filesystem level is NULL. And that would break almost everything which does string manipulation.
    – njsg
    Jan 27, 2013 at 13:30

One central difference is the much more usable command-line on Linux systems (UNIX-like systems in general, really). Thus the Introduction to the Command Line at flossmanuals.net might not be the worst start.

It covers basic (syntax, movement), advanced-ish (e.g. piping, processes, file system structure) and advanced topics (e.g. permissions, SSH, installing software) as well as various text editors, the basics about scripting... oh, and a glossary that might be useful for a starter.

  • Hrm, thanks for the answer @sr_, but I am thinking more along the lines of someone who never needed to do any command line stuff before. There's very little need for the command line for general use these days, and while I agree it is a hugely important tool and aspect of linux, I'd prefer to leave it out as much as possible at this early stage, to help reduce the initial shock. I clarified the question a little.
    – naught101
    Jan 27, 2013 at 10:43
  • If you are going to leave out anything that's different from Windows, why are you even introducing Linux? Perhaps you should direct them to ReactOS? It's not only "an important tool", it's one of the foundations of the way UNIX-like systems are built. If you skip it, you're leaving a lot out of your introduction.
    – njsg
    Jan 27, 2013 at 10:51

Possibly the best things you can do is 1) Remember that Linux is not Windows and doesn't always act like it and 2) read the documentation of the window manager you are using and not Linux documentation.

If you just want to be a user, then reading Linux docs may not be what you want. User friendly distributions, like Mint, might have better user docs than other distros, though.

Not the answer you're looking for? Browse other questions tagged .