COLA FAQ 2 of 7 31-Aug-2002

COLA FAQ 2 of 7 31-Aug-2002

Post by Kenneth Down » Sun, 01 Sep 2002 13:20:35



#
#  Recent Changes:
#
#  24-Aug-2002:  2.9.1.0 wget
#  24-Aug-2002:  2.9.2.0 screen
#  24-Aug-2002:  pushed entries for 'less' and 'awk, sed, grep' back
#                in the TOC, because I'd like to rephrase these to be
#                more introductory.  Current explanation assumes some
#                knowledge of *nix and its history.
#  24-Aug-2002:  Added 2.99.3.0, tab completion.  Where on earth should
#                this go?
#  24-Aug-2002:  2.1.2.0, corrected example of Star Office as "free beer"
#                software, and strengthened warning about non-GPL stuff.
#                thanks to David Dorward.
#  24-Aug-2002:  

          ============================================================

                            TABLE OF CONTENTS - PART 2

          2.0   Part 2, Why We Advocate Linux

            2.1.0.0    Price and License
              2.1.1.0  Pricing
              2.1.2.0  Licensing
              2.1.3.0  Commercial Software
              2.1.4.0  Availability

            2.2.0.0    The Linux Kernel Itself

            2.3.0.0    The Wider World of Free/Open Software
              2.3.1.0  A Better Way to Develop Software
              2.3.2.0  A Wide Variety of Applications
              2.3.3.0  The X Window System

            2.4.0.0    Linux Does Not Hide the Computer
              2.4.1.0  Steep Learning Curve?
              2.4.2.0  Why the Command Line is Good

            2.5.0.0    Relationship to Microsoft Products
              2.5.1.0  Document Formats
              2.5.2.0  Networking
              2.5.3.0  Not a Windows Replacement!

            2.6.0.0    The "Spiritual Source"
              2.6.1.0  Many Cross-Platform Tools are "happier" in Linux
              2.6.2.0  Open/Free Programs on an Open/Free OS

            2.7.0.0    A Broad Comparison To Windows

            2.8.0.0    Linux as Unix
              2.8.1.0  Run Levels
              2.8.2.0  Long Uptimes
              2.8.3.0  Philosophy: Each Program Does One Thing Very Well
              2.8.4.0  A Words File

            2.9.0.0    The GNU Connection
              2.9.1.0  wget
              2.9.2.0  screen
              2.9.3.0  less
              2.9.4.0  sed, grep, awk, gawk

            2.99.0.0   Miscellaneous Good Stuff

              2.99.1.0 Games
              2.99.2.0 Runs on Older Equipment
              2.99.3.0 Tab Completion

          ============================================================

      Copyright (c)  2002.  This document is copyright by the individuals
      named in the credits, section 1.4.0.0.

      Permission is granted to copy, distribute and/or modify this document
      under the terms of the GNU Free Documentation License, Version 1.1
      or any later version published by the Free Software Foundation.
      A copy of the license can be viewed at:

                      http://www.gnu.org/licenses/fdl.txt

          ============================================================

2.0  Why We Advocate Linux

  What we call "Linux" is far more than just a cheap or free replacement
  for some other system we may be frustrated with.  There is an entire
  world of philosophy, code and community that makes up what we call
  simply "Linux."

  If you are completely new to Linux, with no unix experience, perhaps
  coming from the world of Apple or Microsoft, it can be startling to
  realize just how large the Linux world is, how Linux can in so many
  ways broaden the horizons of what is possible with today's hardware.

  In this part of this document, we review what you will hear on COLA
  about why people love Linux.  There is a lot to cover!

  [Maintainer's note: to see material intended for this part that is
   not yet developed, see Part 5 of the FAQ, "Undeveloped Material"]

2.1.0.0 Pricing and Licensing

  2.1.1.0  Pricing

    Linux is free, free as in free to obtain and free to use.  For
    practical reasons, most people choose to purchase a "distribution"
    which is just a convenient packaging of thousands of free programs,
    usually with some installation and setup utilities, and many
    defaults pre-configured.

    People report a wide range of prices for distros, here are a couple
    of examples of the two extremes:

        at $5.00, you don't expect manuals.
        http://cart.cheapbytes.com/cgi-bin/cart

        at $200 and up you are dealing with network-class code, getting
        some support and you are hopefully helping to support projects too:
        http://www.redhat.com/software/linux/7-3_professional.html

    Retail prices for the popular boxed distributions remain in the
    USD 30-80.00 range.  The lower priced sets usually have fewer
    apps and are termed "personal" or something like that, while the
    higher-priced boxes are named "professional".

    The "free" as in "free-to-use" can also mean literally free.  One
    way to get a linux system completely for free is to download from
    this site (NOTE: this is NOT a beginner's site!):

        http://www.gentoo.org

    Many other distributions also allow you to download their complete
    systems for burning onto CD.  At least one, SuSE, does not allow
    downloading of their entire system, but you should be able to find
    what you are looking for at:

        http://www.distrowatch.com

    Frequent readers of COLA will notice that many posters here regularly
    try out many new distributions.  The low price makes this possible, and
    the different approaches that some distributions take to things allows
    for much fruitful comparison and learning.

  2.1.2.0  Licensing

    Linux remains free as it is protected by the GNU General Public License:

      http://www.fsf.org/licenses/licenses.html#GPL

    The GNU General Public License (GPL) is made to keep free software free
    to have, edit, and share.  It also stops any party from taking that
    software, improvements to it, or parts of it, and making them
    proprietary.  In short, source code is given with a GPL'd program (or
    made easily available) and users are free to use and/or modify it in
    any way they choose. Users who want to share part or all of the program
    with or without improvements are also required to GPL the program and
    include the source code to compile that program.

    The Linux kernel and the crucial GNU tools are both covered under the
    GNU GPL and so are many other programs. Other popular sub-systems, such
    as X, are covered under licenses that are more-or-less compatible with
    the GNU GPL.

    The long and the short of all of this is that once you have
    obtained Linux media, you can install it on as many machines
    as needed with no licensing fees paid to anybody, all perfectly
    legal and as the authors of Linux intended.

    The importance of source-code availability and permanent protection
    cannot be overstated.  Consider this text, which was in an earlier
    draft of this FAQ:

      "Some software, such as StarOffice, is free as in 'free beer',
      it is distributed for free so long as the author wishes to do so,
      but is not covered under the GPL and has none of the GPL's
      guarantees."

    As if to illustrate our point, the owners of Star Office changed the
    license in version 6 and started charging money.  Linux is under no
    risk of such a change in policy, because of the GPL.

  2.1.3.0  Commercial Software

    There is plenty of commercial software for Linux, the GPL does
    not prohibit that.  Some thorny issues can arise when mixing
    commercial and GPL software.  The best source for information is
    the Free Software Foundation at http://www.fsf.org.

  2.1.4.0  Availability

    Linux is available by any conceivable means, including download,
    on-line purchase, mail-order, and storefronts. The section above on
    Pricing gives plenty of information on how to obtain Linux.  A good
    starting point is:

        http://www.distrowatch.com

2.2.0.0  The Linux Kernel

#
#  This is a placeholder section to avoid later renumbering
#

2.3.0.0  The Wider World of Open/Free Software

    It is beyond the scope of this document to completely detail the
    differences between such things as the General Public License,
    the Perl Artistic License, the Apache License, and the many others that
    are out there.  What we can say is that all of these licenses aim in
    their own way to promote methods of software development that increase
    the freedom and satisfaction of both developers and users.  In this
    section we will see some of what this is about.

    For more information on what is meant by "GPL-compatible" or
    "Open Source" licenses, see these sites:

       http://www.gnu.org/licenses/license-list.html
       http://www.opensource.org/licenses/index.php

    We use the term "Free/Open" to refer generally to any package that is
    developed under some sort of license that provides source code and the
    freedoms to use, modify, and distribute.

  2.3.1.0  A Better Way to Develop Software

    2.3.1.1  Free/Open to Participate

      An amazing thing about almost all Free/Open projects is that
      participation by developers is heavily based upon technical merit.
      This means that if you find a project that suits your tastes, and
      your skills allow you to improve it, there is every chance your
      code will go into the project.

      This should not be taken to mean that any code submitted to any
      project will just go straight in.  Of course the code should not
      break anything, but even a replacement of a klunk with something
      more elegant may be rejected if the whole user-base has learned
      to live with the klunk.  Also, it may be that your mod is passed
      over in favor of another similar mod that is judged superior.

      Of course, the first step in participating in any group is usually
      to join the mailing list.  These lists are generally open to all,
      often with a handful of common-sense rules on etiquette.  Virtually
      any project you may be interested in likely has a mailing list,
      including of course the linux kernel itself.  See the particular
      sites for information on their mailing lists.

    2.3.1.2  Free/Open to Use, Modify, and Distribute

      All Free/Open software projects provide complete sourcecode, with
      freedom granted to the user to use it in any way that they choose,
      on any number of systems, to modify it to suit their needs, and
      to redistribute it.

      The requirements surrounding redistribution and modifications are
      where the licenses differ the most and where the most confusion
      seems to arise.  Anybody considering distributing their own work
      or redistributing a modified work is STRONGLY URGED to fully
      understand the licensing involved.  These two links, from section
      2.3.0.0, are very good starting points, and will be repeated here:

        http://www.gnu.org/licenses/license-list.html
        http://www.opensource.org/licenses/index.php

    2.3.1.3  The "Many Eyes" Security Model

      In today's world of cheap broadband, more and more systems are
      connected to that big bad dangerous world, and security ought to be
      a top concern for anyone who is going to connect a machine to the
      internet, from Fortune 500 CTO to home cable-modem user.

      How does Linux fare in terms of security, as part of the wider world
      of Free/Open software?  The answer is: very well.  It is little
      disputed that the Free/Open model produces more secure systems, and
      general concensus is that this is the result of the "many eyes"
      method, the fact that so many people can see the code, that it is
      constantly under review, and so vulnerabilities get spotted and
      fixed quickly.

      A Google search on "many+eyes+security" will turn up many hits, but
      this one explains the theory well:

<
http://www-106.ibm.com/developerworks/security/library/l-oss.html?dwz...


      To see an opposing point of view, try these:

        http://www.kuro5hin.org/story/2002/2/12/61225/8865
        http://techupdate.zdnet.co.uk/story/0,,t481-s2107154,00.html

  2.3.2.0  There are Thousands of Free/Open Projects

    There are more Free/Open projects out there than can ever be listed in
    this FAQ. To list a few to demonstrate the variety of applications out
    there that are not part of "Linux" proper, but are part of the wider
    world of Free/Open software, you have:

    2.3.2.1  Wide-Audience Packages

    In the area of wide-audience apps, or basic packages that are
    useful in general to those who use computers, there are Free/Open
    packages to cover every conceivable need, including:

    -> Web server.  The undisputed leader here is Apache, a huge
       project that is believed to be running at least as many web servers
       as all other contenders combined:

       http://www.apache.org

    -> Mail Servers.  There are several popular email servers out there,
       here are two that are distributed under a Free/Open license:

         exim:     http://www.exim.org
         postfix:  http://www.postfix.org

    -> Security Libraries.  Yet another subject that can never be covered
       thoroughly here, but here is one popular package:

         OpenSSL:  http://www.openssl.org

    -> Text Editors (particular for programmers).  Programmers in the *nix
       world strongly favor two popular editors, being GNU emacs and vi and
       its descendants.  

         emacs: http://www.gnu.org/software/emacs
         vim  : http://www.vim.org

       We should also mention the editor nano here, because it also enjoys
       wide use, especially as the default editor on gentoo.  Many believe it
       is a good choice for those coming from Microsoft Windows.

         nano:  http://www.nano-editor.org

    -> Text-based clients.  There is a strong favoring of text-mode
       applications in the world of Linux because they are fast in any
       circumstances and often more advanced than their GUI counterparts
       (hard to believe for someone coming from other worlds, but true!)

          pine (email):  http://www.washington.edu/pine/  
          slrn (news) :  http://slrn.sourceforge.net

    -> Programming Languages.  There are probably more programming languages
       out there than can be counted, but three that you hear about a lot
       are:

          perl  : http://www.perl.org
          python: http://www.python.org
          PHP   : http://www.php.net

    2.3.2.2  Niche-Audience Packages

      A "niche" package can either be one that is used only in a specialty,
      profession, or hobby, or it can be a specialized version of a wide-
      appeal package.  Some examples of specialized mail servers are:

         masqmail:   http://innominate.org/kurth/masqmail  
                     designed for people that do not have a static
                     connection to the internet.

         ssmtp:      http://packages.debian.org/stable/mail/ssmtp.html
                     simple server that sends mail only, so all incoming
                     mail can be collected elsewhere.

      "Persistence of Vision Ray Tracer" can be found at
      http://www.povray.org

      If you love those old arcade games, there are two links related to
      arcade emulators:

         http://advancemame.sourceforge.net
         http://sourceforge.net/projects/kmamerun

  2.3.3.0  The X Window System

    This FAQ often mentions that there are many choices available for
    running a GUI under Linux.  On COLA, when people talk GUI, they almost
    always mean the X Window System, and specifically the XFree86 project,
    a completely free implementation of that system:

      http://www.xfree86.org

    Some of the wonderful things you can do with X include:

    -> Many choices of Window manager, see Section 3, Misconceptions about
       Linux, for details there.

    -> Remote X, running a application on a remote machine that shows up
       on your own display, or even on a third box.

    -> X-Terminal, which turns the local box into a graphical "dumb
       terminal".  Excellent way to rescue "obsolete" equipment.

    -> Multiple sessions running simultaneously on one machine, freely mixed
       between X-Terminal and local sessions.  If you are running Linux now,
       just hit CTRL+ALT+F2 to get to a text login prompt, log in, then type
       startx -- :1, this works on many distributions.  Switch back and
       forth between the sessions with CTRL+ALT+F7 and CTRL+ALT+F8.

#
#  There is also this text, which we can combine with the above, use
#  instead of, or whatever.  Contributed by Mike. and Edgard Allen:
#  Note, I did not format it yet, I figure we can do that when we've
#  decided on the content.
#

   The X Window System was designed with network-transparency in
   mind. This is the reason for the term "X server" - because that
   is exactly what it is.  The X server itself provides a display,
   keyboard, and a pointing device; "X clients" are the programs
   which communicate with the X server, and includes the Window
   Manager as well as all the programs you run that provide you with
   a GUI.

   This doesn't make any difference for the common case, where the
   X server is running on the same machine as the clients; such as
   your typical desktop.  However, it gives an incredible amount of
   power and flexibility if you have access to another computer
   with X clients available: you can run the program on the remote
   system, and have it displayed on your desktop, as if it were
   running on your own computer.  Provided the network connection
   is fast enough, you won't be able to tell the difference between
   running a local or a remote copy of the program.

   You can interact with machines in several remote locations at the
   same time.

   You can send the X protocol through an encrypted pipe to provide
   privacy even across insecure paths like the Internet.

   It gets even better: the X11 protocol is not Linux-specific, so
   you can run UNIX or mainframe programs which display on your
   Linux desktop as well as native ones.

   X servers for Windows are available as both commercial and free
   programs -- in fact, XFree86 itself can be convinced to run on
   Windows -- so you can display your Linux apps on your Windows
   desktop if you want to and your Windows apps can be displayed on
   a Linux desktop via a program named 'vnc'.

   But you're not restricted to simply running a few specific
   programs on another system; it's quite possible (and easy!) to
   get a remote machine to provide a graphical login -- just like
   you get if you install a modern Linux distribution and have it
   start in "graphics mode" on your local machine.

   A complete GNOME or KDE (or any other) desktop session that is
   on a remote machine perhaps thousands of miles away !

   This is perfect for situations where you remotely share work
   on a project or have everyone in an office sharing a powerful
   central server, with various small (or "thin") clients; generally
   referred to as "X terminals" instead of paying more for
   individual, less powerful, machines.

   With the widespread adoption of broadband, it becomes quite
   feasible to connect to university (for example), and get a
   complete desktop session on your computer at home right there in
   front of you -- even if you are already running X on your desktop --
   because you can run multiple X servers at the same time (switching
   between them with function keys).

   Each server can have separate resolution, one can run at 1024x768
   while another runs at 1600x1200.  Switching between resolutions
   with Ctrl-Alt-'+' and Ctrl-Alt-'-'.

   Remember, Linux was designed as a multi-user operating system and
   it takes full advantage of that added power.

2.4.0.0  Linux Does Not Hide The Computer

  2.4.1.0  A Steep Learning Curve?

    Some believe that Linux is hard to learn, that it has a
    "steep learning curve."  First of all, if you do not want to learn
    anything, if you just want to surf the web and read email, then
    you have nothing to worry about, Linux will get you where you want
    to go as easily or more easily than any other popular desktop
    system.

    But what if you want to learn more?  What if you want to learn
    as much as you can?  Is that steep learning curve a problem?  No.

    The steep learning curve is a good thing.  It means you are actually
    learning something, and fast.  By contrast, a shallow learning
    curve implies that it takes a very long time to attain the kind
    of competence you are after.

  2.4.2.0  Why The Command Line is Good

    The Linux Command Line Interface is the user's direct access point to
    the raw power of the system.  Whilst GUIs can be very helpful for
    certain kinds of tasks, nothing can replace the CLI for complete
    flexibility and control.  

    Besides being able to do just about everything that can be done on
    the GUI interface, the CLI offers a singular advantage, which is
    'scripting'.  A script is a series of commands written together which
    can be started with just one instruction to the computer.  There is
    essentially no limit to the way those commands can be combined,  or
    how often they can be run. Some scripts are written simply to avoid
    having to repeatedly type the same series of commands, or follow the
    same mouse-click series of operations over and over.

    Because of the total power and flexibility of the CLI, even the
    most enthusiastic user will take some time to become familiar with
    the CLI's capabilities, indeed, experienced Unixers feel that it's
    never possible to know everything about the CLI.

    One advantage of the CLI over a GUI interface is that no command is
    hidden any deeper than any other, so if you find yourself regularly
    using commands which are buried deeply in a GUI menu system, (the
    "mousetrap" syndrome) try the CLI version - you might find it saves
    you time.

    But this is linux - which means you can have the best of both worlds.
    You can start an xterm in your favourite GUI and guess what - it's the
    CLI interface!  You can have both the CLI and the GUI /at the same
    time/.  So you can choose which is easiest and quickest for you.

    Tip:  try typing 'help' at the bash prompt ($) for a very quick
    reminder of what you can do.          

    If you want to head towards CLI guruness, then try a web-search for an
    introduction to linux shell scripting, or bash.

2.5.0.0  Relationship to Microsoft Products

  2.5.1.0  Microsoft Document Formats

    If you want your MTV, there are a variety of apps that read .DOC
    files with varying degrees of success.  I have yet to ever use one
    myself, and probably never will, so cannot really comment on them.
    (I don't want my MTV).

  2.5.2.0  Microsoft (SMB) Networking

    The Samba team (http://www.samba.org) have done an exceptional job at
    allowing Linux to act as a Windows file server (even an NT domain
    controller), and to use Windows shares and printers.

    Samba can actually replace Windows server machines without the users
    on workstations running Windows noticing.  Linux systems often
    enter into workplaces in this fashion, causing no disruption to
    users while lowering the burden on the administrators.

    The following link reports that Samba outperforms Win2000, but the
    link was unavailable when this draft was produced, so it has not
    yet been read through and evaluated.  Buyer beware:

        http://www.itweek.co.uk/News/1131114

  2.5.3.0  Linux is not A Windows Replacement!

    Linux, THANK GOD! is not a clone of Windows, and hopefully never will
    be.  A very rough comparison of Windows and Linux is provided below
    in section 2.7.0.0.

2.6.0.0  The "Spiritual Source"

  Many of the programs available for Linux are of course available for
  other versions of unix, but very many are also available for the
  Windows platform.  

  Some believe (stress on "some") that these programs are "happier" in
  their native habitat, a *nix system.  What we mean by that breaks down
  into a couple of ideas, detailed below.

  2.6.1.0  Many Cross-Platform Tools are "happier" in Linux

    Some programming languages, notably Python and Perl, are available
    for Windows, though they were born on *nix systems.  Programmers
    familiar with both platforms claim that these systems are "happier"
    on Linux (or any unix) because they were originally developed to
    take advantage of the powerful and flexible structure of the *nix
    architecture, and that complex hacks are sometimes necessary to
    do simple tasks in Windows.  Examples include:

    -> running them from the command line and using the scripts in
       pipes and so forth is just more natural;  it's more how they
       were intended to be used.

    -> Windows' command line is painful to use, and so generally you'll
       run it via a shortcut, which makes it feel detached from the system.
       Scripts just feel more integrated within a Unix system;  this is
       probably due in large part to how many things are controlled by
       scripts (such as the entire startup process).

    -> In Linux, devices such as serial ports are files, and so can be
       read from and written to with all of the same techniques as files.
       In win, this requires some hoop-jumping.

    -> Some things just don't work in Win, like "use locale" in Perl to use
       accent characters.

    And finally, the "Windows way" is to have one app that does everything;
    for example, Nero (a program for writing CD's).  It is a self-contained
    entity if you will; it knows how to make ISO9660 filesystems, how to do
    disc copies and how to rip audio;  it can decode mp3's for burning them
    as audio CD's; and so on.  Most, if not all, of the CD-writing programs
    on 'nix are graphical front-ends to various programs; mkisofs, cdrecord
    and cdparanoia, for example.  Scripting languages fit neatly into this;
    they can be easily and seamlessly invoked from other programs and other
    scripts as needed.  Using simple scripting languages is often far
    simpler than COM/OLE (or whatever its being called today).

  2.6.2.0  Open/Free Tools on an Open/Free OS

     When comparing Windows to Linux, one "show-stopper" if you will that
     always comes up is the simple fact that the Windows platform itself is
     closed, you cannot get at the internals.  Worse, this closed platform
     is controlled by a company that can change the internals at will, in
     order to promote their own profitability (which, or course, they have
     every right to do).

     This introduces the danger that your Perl or Python scripts may be
     broken by a change that Microsoft makes to Windows that suits their
     purposes (profitability), but not yours (consistency).  You then
     either wait for an upgrade, go back and change code that already
     worked, or do without!

     In the world of Free Software, these dangers are highly reduced.
     The direction of the system is far more under the control of the users,
     who will reject any "innovation" that causes the loss of too much
     prior work.  

     In the world of Free Software, we may have to wait for the developers
     of free software to add more features, but rarely do we have to wait
     for them to fix something that was working already.

2.7.0.0  A Broad Comparison to Windows

  There are three things in life that appear to be certain: death, taxes,
  and Windows (four if you count Lucy pulling out the football from
  Charlie Brown).  For this reason, it should be no surprise that
  Win-vs-Lin discussions are so common on COLA.  

  It is generally believed that Linux, as a free unix, has so many
  strategic advantages over Windows that no single factor in favor of
  Windows could possibly matter.  Here are the reasons you are likely
  to hear for this view, condensed and presented in one place:

  Linux                             Windows
  ================================  ==================================
  Free[1] or Cheap[2] Distros       $100's of dollars per version

  Free applications are norm        Free applications are exception,
                                    or often are ports of free *nix apps.

  All Source Code is freely         Nope.
    available for use and change

  Any person with the skill and     Nope.
    desire can change Linux
    directly for their own use,
    and if the improvement has
    general merit, it will go into
    the official kernel.

  Stable architecture               unstable architecture, such as the
                                       ability of badly written device
                                       drivers to crash entire system, or
                                       even simple programs run by
                                       unpriveleged users to do same[3].

  Layered architetcure              Will Win2k run off a floppy?
                                    Will Win2k run off a CD-ROM?
                                    Will Win2k run on a P90 as
                                      a firewall?
                                    Can I turn off the GUI on
                                      my server to save resources?

  True Timeshare plus               Only possibility is terminal
    fileshare                       services, which requires Windows
                                    clients.

  True multi-user                   Hacked on as after-thought

  Can change significant            Reboot, reboot, reboot.
     portions of system w/o reboot

  Purpose is quality,               Purpose is profit,
    mission accomplished              mission accomplished

  Reads native and foreign          Lives in its own world
    filesystems

  Networks to apple, novell,        Lives in its own world
    win, unix

  Text config files, stable         The Registry! (scary music)

  Secure by default                 Vulnerable by default

  Viruses, worms, etc. largely      Outlook, IIS, SQL Server,
    unknown.  So few that cases       etc.  Requires $$ for anti-virus,
    such as the Morris worm are       performance loss due to anti-
    legendary.[4]                     virus, maintenance of anti-virus,
                                      etc.

  Virtual Consoles                  No.

  Virtual Desktops                  Recently added to XP only as a
                                    "Power Toy", a term which has many
                                    scratching their heads.

  Remote X                          No.  See mention of Terminal Services
                                    above on Timeshare entry.

  [1] "Free" here is the technical term, free as in freedom/free-to-use,
      for more info: http://www.fsf.org/philosophy/free-sw.html

  [2] "Cheap" as in, well, cheap.  Not costing much.  All popular
      distributions sell for under USD 100.00, and many go for as little
      as USD 30.00 with documentation.

  [3] This infamous program  

         main() { while(1) { printf("hello\t\t\t\t\t\b"); } }

      when compiled under vc6 and run from a command line will reboot
      any version of win in the nt line.

  [4] The Morris worm actually predates Linux.  It exploited a vulnerability
      in sendmail and brought down a large part of the internet in 1988.
      It is mentioned here mostly because it is the one example that most
      people remember and recognize.

2.8.0.0  Linux as Unix

  Much of the value of Linux is based upon the simple fact that it is a
  clone of unix.  The unix operating system is generally considered to
  have been "right the first time" and this is cited as the reason it is
  still around, in active development, more than thirty years after its
  birth in Bell Labs.  

  In this section we explain several strong points of unix, for the
  benefit of those who are not familiar with that operating system.

  A Google search on "Unix+History" yields over 800,000 hits, so there
  is plenty out there, but here is one version as told by one of the
  original inventors:

    http://cm.bell-labs.com/cm/cs/who/dmr/hist.html

  2.8.1.0  Run Levels

    In any unix, the "run level" determines the mode that the system
    is operating in.  Despite recent advances towards standardization,
    the runlevels are not consistent across distributions, though what
    they do (such as "Normal/Full Multiuser") is fairly standard.  
    Red Hat, for instance, uses these run level definitions:

    0:  Halt.  When Linux is told to enter this run level, it
        shuts down.

    1:  Single User Mode.  

    2:  Multiuser with no network services, and no GUI.

    3:  Normal/Full Multiuser, no GUI.

    5:  Run level 3 plus GUI runs by default

    6:  Reboot.  When Linux is told to enter this run level,
        it reboots.

    Individual services can be activated or not in each of these broad
    categories as circumstances and preferences dictate.  For instance
    some systems will activate an http daemon and others will not.

    This flexibility allows Linux to run subsets of full functionality on
    small systems and everything on some multi-function servers.  And it
    is one of the contributors to Linux not needing different versions
    for desktops and servers.

    Combined with kernel parameters, you can do useful things like reset
    your root password if you forget it (who does that? us? no!), with
    startup command to go into runlevel S, such as:

    boot: linux single rw init=/bin/bash

  2.8.2.0  Long Uptimes

    Linux users demonstrate a strong enthusiasm for very long uptimes,
    and will often compare and compete over them on COLA.  What is the
    fascination?

    Put simply, what good is a computer if it is not running?  If the
    computer can stay up for months or years w/o rebooting, this
    opens wider worlds for something like a server, and much more is
    possible than if the machine had to be rebooted just because a single
    program was upgraded or crashed.

    It is much like the automobile fanciers who tout their quarter mile
    times, it is an objective measure of how skilled or lucky those
    bragging have been,  though be warned that it has no intrinsic value
    when considered outside of proper context.

  2.8.3.0  Philosophy: One Program Does One Thing Very Well

    That single line requires additional thought like so many bits of
    wisdom tossed about so freely in the *ix communities.

    It implies without stating it explicitly that having several small
    programs, each optimized for a subset of the possible uses, allows
    choosing the one "best" for the particular problem you are trying to
    solve.  Those who fully appreciate this philosophy can then assemble
    very powerful systems out of highly reliable smaller pieces.

    One alternative philosophy is to build large programs that try
    to solve many problems, which leads often to a package that is bloated,
    buggy, difficult to maintain, and which ends up doing none of its
    intended purposes as well as the smaller alternatives that have
    concentrated solely upon a single task.

    Gaining an appreciation of these concepts is often referred to as
    "enlightenment" or with other vague references to Eastern philosophy,
    suggesting not only that one has learned something useful, but that one
    has learned something to guide in solving future problems, a new way to
    think about problems and the universe itself.

  2.8.4.0  A Words List

    Because Unix and Linux users and developers deal with text so
    frequently and depend on precision so much of the time many have
    a fascination and delight with words and definitions.

    Linux comes with a list of over forty-five thousand words which
    can be used as input for user programs or just exploration like...

    How many words are at least 22 characters long in this list:

        grep '^.\{22\}' /usr/dict/linux.words
        antidisestablishmentarianism
        electroencephalography

    Which words contain both "ou" and "ai":

         egrep 'ai.*ou|ou.*ai' /usr/dict/linux.words
         fountain
         fountains
         Houdaille
         mountain
         mountaineer
         mountaineering
         mountaineers
         mountainous
         mountainously
         mountains
         villainous
         villainously
         villainousness

     Which words contain the vowels, 'a', 'e', 'i', 'o', and 'u', in
     order:

         grep 'a.*e.*i.*o.*u' /usr/dict/linux.words
         adventitious
         sacrilegious

    Please note that the standard Linux word list does not include:

         facetious
         facetiously

    For a site with larger lists for both Win* and *ix:

         <http://personal.riverusers.com/~thegrendel/software.html>

2.9.0.0  The GNU Connection

  In 1984, Richard Stallman founded the Free Software Foundation, and
  then the GNU project, with the aim of producing a completely free
  (as in free-to-use) version of unix.  

  There is little dispute that Linux would not exist in anything like
  its current form were it not for GNU and the GNU tools.  To hear one
  side of the story, from Richard Stallman, you can read one of his
  speeches here:

    http://www.fsf.org/gnu/thegnuproject.html

  The GNU tools are being included in more proprietary versions
  of Unix every year because the GNU versions are often faster,
  more standards compliant, and have fewer artificial limits than
  their proprietary counterparts, which are often no longer updated.

  In this section we provide some basic information on a few of the
  GNU tools.

  2.9.1.0  wget

    This is one of those amazing programs that you won't know how you
    did without.  In short, it grabs a complete website and downloads
    it to your local system.  It can also download FTP trees. It can
    handle usernames and passwords to get onto priveleged sites, and
    like all GNU tools it has gads and gads of options for controlling
    what is grabbed and where it is put.

    Combine it with cron and some very simple scripting and it becomes
    very easy to

  2.9.2.0  screen

    This is a utility that becomes very useful once you are comfortable
    at the command line.  It's main strength is that it lets you
    "detach" from a terminal session.  In other words, you can have a
    long program running at a terminal, such as a compile, and then
    exit while the program keeps running.  You can then later re-attach
    to that session, even remotely, to keep tabs.

    This utility also lets you run multiple terminal sessions at once,
    switching around between them just as you would switch between GUI
    apps.

    By using screen exclusively, you can keep sessions going indefinitely,
    even when you are not logged in.  For an explanation, see the post
    by Ilari Liusvarra at <slrnam4ego.p4r.noaddress@LK_Perkele_IV9.localdomain>.

  2.9.3.0  Less

    The command-line tool "less" is a much improved replacement for
    'more'.  It can...

    -> Examine binary as well as text files.

    -> Resize its display automatically when its 'xterm' is resized.

    -> Wrap long lines to the display width (default) or show the
       "visible" portion with the remainder accessed through the right
       and left arrow keys.

    -> 'more' could not originally go backwards but the functionality
       was added to slow its replacement with 'less'.  The scroll back
       of 'more' did not work as the final stage of a pipe.

    -> Accept multiple filenames on the command line and move forward
       and back between them.

    -> Searches default to the current file but they can be across
       multiple files.

    -> Marked positions remember the file as well as the line which was
       marked.

    -> Respects common vi key definitions, and key definitions can be
       customized and extended by each user through 'lesskey'

  2.9.4.0  sed, grep, awk, gawk

    These all had fixed line length limits until the GNU implementations
    showed how inconvenient that was for the users.  Some proprietary
    versions still have those fixed line size limits.

    'grep', 'egrep', and 'fgrep' were all separate programs whose
    options and syntax were beginning to diverge when GNU made a single
    executable which was pointed to by the various names and it altered
    its behavior accordingly.

    The GNU "grep family" added the ability to print lines before and
    after the target string(s).

#
#  Maintainer's NOTE:  this section, 2.99.0.0 strikes me as suitable
#   to remain the last section, no matter what else we put in, so
#   I've numbered it 99 so I don't have to renumber it again until
#   we've significantly completed the document.
#

2.99.0.0  Miscellaneous

  This section covers anything else cool about Linux that does not
  easily fit into the other categories.

  2.99.1.0  Games

    Games are often the reason people purchase or upgrade computers. Kids
    seem to play games constantly, and games are an excellent introduction
    to computing. If you have friends or family intimidated by computers,
    games like AisleRiot and Mahjongg are a way to show that you can't
    hurt Linux or the computer, and once familiar with games, it provides
    a way to show many other useful programs available on Linux.

    From a programmer's view, Linux games benefit both students and writers
    because game code is often fine examples of well written code written by
    students and even advanced programmers. Students seeking advanced
    knowledge and techniques beyond simple basics have plenty of examples
    in Linux that they can learn from, and since most people play games now
    and then, game code can often showcase a writer's talents to a wide
    audience, possibly leading to new projects.

  2.99.2.0  Runs On Older Equipment

    Modern versions of Linux can load up any number of fancy GUI's with all
    the "eye candy" you could ever want, but a very practical reason to use
    Linux is it can "rescue" so-called obsolete and older equipment too.

    With closed source operating systems, hardware is only supported for as
    long as the vendor provides drivers for newer versions of the operating
    system. If the vendor discontinues support, or goes out of business,
    then your hardware becomes obsolete even if it works fine. Your only
    choice is get new hardware, or keep running the older operating system.
    Since most Linux drivers for hardware are open source; as long as
    people still use that hardware, the driver code can continue to get
    updated or recompiled to keep pace with newer versions of Linux.

  2.99.3.0  Tab Completion

    This is a feature common in linux apps.  When you are typing in a
    command or filename, you can hit the TAB key, and one of the following
    will happen:

    -> If what you have typed so far matches to a single filename visible
       in the current path, the name of the file will automatically be
       filled in.

    -> If nothing matches what you have typed in, you may hear a beep
       (depending on the system), but nothing will happen.

    -> If more than one file matches what you have typed so far, hitting
       TAB again shows you a list of the matching files.

    This works for both commands and filenames.  Though it is usually
    associated with the command line, KDE and Gnome apps display this
    behavior as well.

    This behavior tends to make the CLI much easier than one might think
    it could be:

    -> long filenames and deeply nested paths are not a problem.
    -> forgot a command's exact spelling?  Type two letters and hit TAB.
    -> want to just poke around and learn?  Hit one letter and TAB, then
       look at the results and read some man pages.

--
Ken
Linux: the more you learn, the more you love