create new tag
, view all tags
Things that might frustrate an ex-Windows user (or maybe anybody) -- I'll start with a list, later explain at least some things (here or on a linked page).

<This page was started on the CFK TWiki -- I consider this the "original" at this point in time.>

Might start with an introduction along the lines of one of mine re the TWikiDrawPlugin -- skim through this -- you may not need this stuff for a long time or ever, but occasionally you might run into something that some of this will help explain -- hopefully at that time you'll think of this page and come back to it and read the appropriate points more carefully (if need be)

And, as alluded to somewhere else, some things will change with time -- immigrants from Win95 and dos might not be familiar with the concept of multiple users (and environments), immigrants from WinXP (or WinNT) might be.

Ok, I probably shouldn't call these frustrations:

  • Not all of them have frustrated me
  • Some of them are features (once you get over the frustration, at least in some cases)


Potential Points of Confusion

Is that better phrasing than "Frustrations"? Should I change the name of the page?

  • Copy and paste -- there is a selection (the right word?) and a clipboard -- some copy operations put things in the selection, some in the clipboard (mouse vs. keyboard shortcuts?) -- Mozilla tries to help (may make it worse) (If you copy to the clipboard but paste from the selection (or vice versa), you will probably get unexpected results, at least sometimes.) (And cover the middle mouse button at the same time.)

  • File ownership and permission (rwx, see next bullet for more) -- get into some of the potential traps:
    • Problems in Linux are often due to permsission or ownership issues (TWiki as an example?)
    • The potential trap of doing an ls (as a user), finding no files, then doing an rm in that directory (as root) and deleting files (you could argue that it should not happen, but I've come close, and might have even done it once -- forget the details)

  • File function is not indicated by extension (.exe, .com, .txt, .doc, etc.) -- with respect to executable you must set the file attribute to be executable (using chmod <something>)

  • . (the current directory) is not on the path (for valid security reasons) -- you must typically run a script using ./<script_name>

  • Explain the situations with respect to running shells (or scripts or files) -- some ways of starting a shell preserve the existing environment, some create a fresh environment, some switch to a different environment (that of another user? -- oops, I'm probably touching on su). Cover sourcing a script at the same time, because, IIUC, the prime reason for sourcing a file is to obtain the environment you desire in special circumstances (IIUC, sourcing a file means the script (file) will run in the current environment). I am probably not remembering something right away, but I think it is very easy for a dos or Windows user to go through life thinking there is only one environment -- so even the concept of a different environment for each user, or each shell script is something new.

  • Can someone concisely explain su, sudo, setuid (and setguid), and suexec and the differences between them (hmm, maybe I can even do that now) -- also I'd like to push my bias that the root user be called root, not superuser (IMHO, su stands for switch user, not superuser).

  • clarifying the situation of inodes vs. file content (and hard links and soft links, their limitations and the tricks they make possible, like hard links only on the same partition (or disk) -- hard link a file just to prevent it from being deleted), the means (tools (cp -a)) to copy hard and soft links so as to preserve them (or not preserve them) -- part of the discussion might include an analogy to Mac files and their "forking" which might be the next step beyond Linuxes inodes vs. file content. (Not sure I fully understand Mac's forked files, but in general terms they have a place to store various things, like the actual content separate from metadata separate from ...)

  • might as well clarify file and directory notation (and include Mac for completeness (well, no, I'm not going to cover VMS (Vax) or MVS or whatever)

  • mention that Linux is a Unix, but not all Unixes are alike (touch on Posix) -- (another issue that might be new to a Windows user)

  • likewise internationalization (Unicode, various encodings (can't even remember the prefixes) -- but I seem to run across this stuff more in Linux than I ever did in Windows (maybe because I follow AbiWord and some other development projects?) (This is where you encounter the aphabet soup of ISO-8859-1 (and variations), UTF-8 (and variations), KOI8-R, EUC-JP, Unicode, IETF (?? -- not sure this is relevant), I118N, localization, UCS-2 (ISO 10646-1). Internationalization of TWiki is in progress --
http://twiki.org/cgi-bin/view/Codev/InternationalisationEnhancements is an interesting page addressing that effort and with quite a few resources. Here's a nice explanation of the UTF-8 encoding, here's a slashdot thread that discusses [[http://slashdot.org/article.pl?sid=01/05/20/1431230&tid=95][why Unicode is inadequate, and here's the original article.

  • likewise, cross platform efforts (maybe that's more on the esoteric side)

  • development tools, especially make with possibly 1000's of files vs. something like Pascal or VB (VC++) with fewer files, projects, and more "direct" developer initiation of compilation. (again, probably on the esoteric side)

  • Provide a cross reference of typical (or often used) commands between Windows (dos) and Linux. (I've started such efforts a few times, on WikiLearn and my private TWiki, and I've seen other pages that attempt a similar thing (and may do much better than I've done so far) -- I'm thinking of pointing out that ls ~= dir, cp ~= copy, etc., and add the command line switches to make the equivalence as close as possible.

  • Hidden files in dos/Windows are an attribute (ARSH), in Linux they are marked by a preceding period.

  • Wildcards in dos vs. Linux, touching on regular expressions, "globbing", and copying multiple files using copy *.txt d:/newdir (do I need the asterisk -- I forget) vs. cp <what> /home/newdir/ (with the trailing slash)

  • lilo and the need to run lilo after you change the lilo.conf file I think the most natural expectation is that, since it appears that lilo runs at boot time, it reads the lilo.conf file at that time also. That clearly is not the case, and I can make a logical story about why it is not appropriate (lilo doesn't run at boot time, but builds a small program (bootloader) that runs at boot time -- you run lilo after making a change to lilo.conf to create the new bootloader program.

  • formatting a floppy in Linux, the need for an ext2 floppy for a Linux boot disk, why a parted boot disk depends on the hard drive (geometry??) -- even I can't recall what I meant by the previous phrase -- the file formats of typical boot and root diskettes (is it msdos, vfat, ext2, and minix? I have trouble mounting them no matter what fs I try)

  • compiling, the suggestion to, my reluctance to -- my reluctance to -- I've had experience compiling stuff as I wrote my own programs -- I want an install to take a finite and short time -- when you start compiling there is too much potential for things to go wrong, things that as a newbie you have little chance of determining the problem and fixing -- when I can start a long process (download an iso over a 33 kbps dial-up modem) and am sure of success (worst cases -- I restart, or use a "demon" that keeps restarting (from where it left off), or finally, if necessary, do an rsync to correct any errors) I don't mind starting the 3 day (or 6 night process) (not too much, anyway ;-). If I start a compile on the operating system and think that 2 hours to two days from now I'll be no better off than I am now, with no clue how to go further, I am much more reluctant. As I'm becoming less of a newbie, and more confident of success in compiling, or recognizing some problems, or having good sources of help, I am becoming less reluctant to compile. But, it is not something to suggest that every newbie should recompile his kernel. (And there are people who want to use their computers, not have a "lifetime learning experience".)

  • modules (insmod, modprobe, etc.)

  • modularity, i.e., the kernel, X, the window manager, the desktop manager -- any of which can be replaced (by you from among existing selections -- or by picking a different distro) or by someone (anyone writing a new or better mousetrap (like the Berlin project re X)). (insmod and so forth, vs. drivers in dos / Windows (.exe (mscdex.exe ??), .sys (himem.sys, and ansi.sys), .bin (drvspace.bin), .com (Ne1000.com) ).

  • the term "kernel" and what the kernel is in dos / Windows (one of the two hidden files (io.sys, msdos.sys for Microsoft), I guess, or both), and command.com is the shell

  • thought I had already listed the "single rooted filesystem" but didn't find it on a quick skim just now the "single rooted filesystem" and the difference to the dos/Windows "multi rooted filesystem" (or whatever it should be called), and then some of the gotchas (like mounting a disk in /mnt/temp, then copying everything starting at / (cp -a / /mnt/temp) and running out of room because of an infinite loop (recursive copy)

  • related to above, long paths to type (like /mnt/floppy vs. A:) (yes, I know about tab completion, and maybe an alias would work -- haven't thought about that)

Ahh, and mtools as a workaround to some of the single rooted filesystem (providing a few additional roots and access like mformat a:.

  • More related to "single rooted filesystem" (at least somewhat): the different ways you can set up a rescue system -- boot from floppy boot then root, or cd, but the file system can be in RAM (initrd) or a loop filesystem, (or just a filesystem on the CD without loop?), some of them big, taking up more RAM than you have on your system. Why not more of the dos bootable floppy plus (short) executable (either on the same floppy or a second??) -- I think it's possible -- you can boot a linux kernel from a floppy, IIUC. Expletive, I just want to boot from a floppy and restore an image (or create an image, or whatever).

  • no robokey like facility (keyboard shortcut macros that can enter arbitrary text into an application)

  • this is sort of "off point", but Ghost can create partitions "on-the-fly" as it restores from a disk, don't know any Linux equivalent that can do that (Partition Image cannot, it's one of the few I looked at) -- ooh, wait, dd probably can -- I may have already tried that (when we restored an entire disk, like dd if=/dev/hda of=/dev/hdc -- need to try to refresh my memory)

  • The odd ways various people describe the syntax of commands (I used to always, IIRC, use angle brackets to denote substitutable variable -- oops, maybe not true -- used [] for options, ?? having trouble remembering.) Anyway, in the Linux world I've seen just plain words, or just_plain_words, or $JUSTPLAINWORDS (I know, that's a variable in a script, but IIRC, I've seen them in syntax "specifications" (or maybe I just tried to read and make sense of scripts??)

  • Some of the odd syntaxes in scripts and so forth.
    • combining multiple commands on one line, separated by ; (IIUC, successive commands are done regardless of the success or failure of those before them)
    • combining multiple commands on one line, separated by && (IIRC, the second command is done only if the first is successful)
    • combining multiple commands on one line, separated by || (IIRC, the second command is done only if the first is not successful)
    • the "ternary" (??) if command (forgot the syntax ATM)
    • sourcing (with .)
    • the >> (or << ??) "here" command
    • while I'm at it, might as well distinguish between > and >> (one creates a file, one appends, forget which is which -- is it the same as dos?), cover pipes, and explain redirection of error codes (with something like "$2>null") (whitespace? dollar sign?)
    • when a variable is prefixed by a dollar sign and when not -- is this correct: VAR = "test string", print(?) $VAR
    • viewing the environment with set -- setting an environment variable in two steps (explain why the export? (and remind myself)) (correct syntax? is it like set VAR = "test string"; export $VAR ??)
    • should I suggest learning proper "speaking" for code -- e.g., x=x+1 is not "x equals x plus 1", but "x gets x plus 1"

  • getting programs to run -- downloaded a "statically compiled" "client" for No Machine -- on running the rpm died for lack of libpng.so.2. Per instructions from their technical support, used rpm -i --nodeps, but don't make a softlink. rpm worked, the program wouldn't run. Created the softlink, the program ran (with out their icons). Not an isolated instance. Everything is a hassle -- see next item about X, and remember how long it took me to get ssh to work.

  • understanding the various ways displays can be networked, and getting them to work that way (see NetworkWithApplicationServerAndXTerminals). (And ssh, tunneling, ......) (or stated another way, the capabilities of X -- see

  • being directed to (esoteric?) Linux based tools, like LaTeX (or TeX), emacs, vi instead of something that looks like what I'm used to -- a word processor like AbiWord (or Open Office), or an editor like nedit, joe, or jstar.

  • The length of time it's taken me to learn what I know about Linux, the mountain of stuff I probably still have to learn (some of which I'm aware, some of which I'm surely not), and some of the reasons for my slow learning, like expecting my dos/Windows knowledge to let me pick up Linux in one to three months with little or no reading (I'd done a ton of reading in dos/Windows over the years -- surely I'd not have to repeat it. (Mention the Tim Wettlaufer test for software usability.) (I've written some of this before, probably on my private TWiki, in things like my various xMonthsAfterLinux "status reports" — I should look back at those -- they may remind me of some frustrations I haven't listed here so far.)

  • Also related to partitions, the "file not found" as a result of being the wrong user

  • So much is installed by default, but then you can be surprised when something is missing (hdparm in Mandrake 9.0 -- did I prevent it from being installed?)

  • The interaction of so many things makes some things difficult to learn / experiment with. All the features of X windows that allow a window on one machine to serve a program on another machine can be disabled in a variety of ways -- firewall, -nolisten tcp option in some places, etc. The desirability of a pair of Linux computers on an isolated network and "welcome to crackers" (Mandrake) level of security as a testing / learning environment.

  • There is no registry in Linux (Like the Windows registry, anyway -- that's generally a good thing wink ), but dealing with all the configuration files can be just as frustrating. But there are some tools / tricks that can help. Like the registry, you can search all files on a machine (or, say in the /etc directory) to look for useful things. Like, if I want to see if something has disabled remote X by setting the nolisten parameter, I can do grep -r -e nolisten -H -f /*. not sure the asterisk is necessary (See SearchAllFiles.)

  • < add more here>

More Esoteric Points of Potential Confusion

I'm sure there are other similar points -- they just don't come to mind right now. Some of them might get pretty esoteric, like the one on sourcing a file, or the next one on databases.

  • A little hard to explain, but in the Microsoft world, a database is its own little (usually interactive) environment, below the operating system (when you do something in Access, you start Access and then run various commands within Access). In Linux (IIUC, I really haven't used a Linux database yet), you can issue a database command at any time or place from the command line -- pipe the results into some other command line command or utility, etc. (Visual Basic starts to extend the Windows "analogy" a little bit as you can access Access tables and so forth from VB scripts, but the easy interaction and interchangability at the command line is not there in Windows. All in all, the Linux approach seems more useful, but when you come from Windows you can be a little lost (at least) at first.

  • < or here, if it's fairly esoteric>

Advantages of Linux

Not sure I plan to list all of them here, and like the rest of this page, these won't always be "coherent".

  • path — If someone asks how do I add to the path in Linux, we can provide an answer, (something like PATH=/<newpath/;${PATH}?? (and some alternatives), then export PATH), but we should also mention that there are probably fewer and different occasions to add to the path vs. dos/windows -- when we install a new program in Linux, the executable typically goes in one of the "well known" directories for executables that are already on the path (/bin, /sbin, /usr/bin, /usr/sbin, ... (anything by default in Home??) as opposed to dos/Windows where it is common to put the executable in a new directory with the rest of the files for that program, and then (potentially) add that directory to the path. (Confirm: Is that still common in windows -- it was very typical in dos.)



  • () RandyKramer - 14 Feb 2003
  • <If you edit this page: add your name here; move this to the next line; and include your comment marker (initials), if you have created one, in parenthesis before your WikiName.>

Edit | Attach | Watch | Print version | History: r9 < r8 < r7 < r6 < r5 | Backlinks | Raw View | Raw edit | More topic actions
Topic revision: r9 - 2003-03-31 - RandyKramer
  • Learn about TWiki  
  • Download TWiki
This site is powered by the TWiki collaboration platform Powered by PerlCopyright 1999-2017 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding WikiLearn? WebBottomBar">Send feedback
See TWiki's New Look