home *** CD-ROM | disk | FTP | other *** search
/ PC World 1999 August / PCWorld_1999-08_cd.bin / doc / HOWTO / DOS-Win-to-Linux-HOWTO < prev    next >
Text File  |  1999-03-02  |  62KB  |  2,113 lines

  1.   From DOS/Windows to Linux HOWTO
  2.   By Guido Gonzato,  <REMOVE_MEguido@ibogeo.df.unibo.it>
  3.   (Remove ``REMOVE_ME'')
  4.   v1.3.2, 22 February 1999
  5.  
  6.   This HOWTO is dedicated to all the (soon to be former?) DOS and Win¡
  7.   dows users who have decided to switch to Linux, the free UNIX clone.
  8.   The purpose of this document is to help the reader translate his or
  9.   her knowledge of DOS and Windows into the Linux environment, as well
  10.   as providing hints on exchanging files and resources between the two
  11.   OSes.
  12.   ______________________________________________________________________
  13.  
  14.   Table of Contents
  15.  
  16.  
  17.  
  18.  
  19.  
  20.  
  21.  
  22.  
  23.  
  24.  
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.   1. Introduction
  68.  
  69.      1.1 Is Linux Right for You?
  70.      1.2 It Is. Tell Me More
  71.         1.2.1 Introductory Concepts
  72.         1.2.2 Getting Help
  73.      1.3 Conventions
  74.  
  75.   2. For the Impatient
  76.  
  77.   3. Meet bash
  78.  
  79.   4. Files and Programs
  80.  
  81.      4.1 Files: Preliminary Notions
  82.      4.2 Symbolic Links
  83.      4.3 Permissions and Ownership
  84.      4.4 Files: Translating Commands
  85.         4.4.1 Examples
  86.      4.5 Running Programs: Multitasking and Sessions
  87.      4.6 Running Programs on Remote Computers
  88.  
  89.   5. Using Directories
  90.  
  91.      5.1 Directories: Preliminary Notions
  92.      5.2 Directories Permissions
  93.      5.3 Directories: Translating Commands
  94.         5.3.1 Examples
  95.  
  96.   6. Floppies, Hard Disks, and the Like
  97.  
  98.      6.1 Managing Devices the DOS Way
  99.      6.2 Managing Devices the UNIX Way
  100.      6.3 Backing Up
  101.  
  102.   7. What About Windows?
  103.  
  104.   8. Tailoring the System
  105.  
  106.      8.1 System Initialisation Files
  107.      8.2 Program Initialisation Files
  108.  
  109.   9. Networking: Concepts
  110.  
  111.   10. A Bit of Programming
  112.  
  113.      10.1 Shell Scripts: .BAT Files on Steroids
  114.      10.2 C for Yourself
  115.  
  116.   11. The Remaining 1%
  117.  
  118.      11.1 Using tar and gzip
  119.      11.2 Installing Applications
  120.      11.3 Tips You Can't Do Without
  121.      11.4 Where to Find Applications
  122.      11.5 A Few Things You Couldn't Do
  123.      11.6 Practicing UNIX under DOS/Windows
  124.      11.7 Common Extensions and Related Programs
  125.      11.8 Converting Files
  126.      11.9 Free Office Suites
  127.  
  128.   12. The End, for Now
  129.  
  130.      12.1 Copyright
  131.      12.2 Disclaimer
  132.  
  133.   ______________________________________________________________________
  134.  
  135.   1.  Introduction
  136.  
  137.  
  138.  
  139.   1.1.  Is Linux Right for You?
  140.  
  141.  
  142.   You want to switch from the DOS world (this definition includes
  143.   Windows) to Linux? Good idea: Linux is technically superior to DOS,
  144.   Windows 9x and even Windows NT. But beware: it might not be useful for
  145.   you. These are the main differences between DOS/Windows and Linux:
  146.  
  147.  
  148.   ╖  Windows runs Microsoft Office and lots of games; is perceived to be
  149.      easy to install and configure; is notoriously unstable; performs
  150.      poorly; crashes are frequent.
  151.  
  152.   ╖  Linux runs StarOffice, scores of technical software and fewer
  153.      games; can be difficult to install and configure; is rock solid;
  154.      performs impeccably; crashes are extremely rare.
  155.  
  156.   It's up to you to decide what you need. Furthermore, Linux gives you
  157.   power, but it takes some time to learn how to harness it. Thus, if
  158.   mostly need commercial sw, or if you don't feel like learning new
  159.   commands and concepts, you had better look elsewhere. Be aware that
  160.   many newcomers give up because of initial difficulties.
  161.  
  162.   Work is underway to make Linux simpler to use, but don't expect to be
  163.   proficient with it unless you read a lot of documentation and use it
  164.   at least for a few months. Linux won't give you instant results. In
  165.   spite of these warnings, I'm 100% confident that if you are the right
  166.   user type you'll find in Linux your computer Nirvana. By the way,
  167.   Linux + DOS/Win can coexist happily on the same machine.
  168.  
  169.   Prerequisites for this howto: I'll assume that
  170.  
  171.  
  172.   ╖  you know the basic DOS commands and concepts;
  173.  
  174.   ╖  Linux, possibly with X Window System (X11 for short), is properly
  175.      installed on your PC;
  176.  
  177.   ╖  your shell (the equivalent of COMMAND.COM) is bash.
  178.  
  179.   Unless specified, all information in this work is aimed at bad ol'
  180.   DOS.  There is information about Windows here and there, but bear in
  181.   mind that Windows and Linux are totally different, unlike DOS that is
  182.   sort of a UNIX poor relation.
  183.  
  184.   Please also note that this work is neither a complete primer nor a
  185.   configuration guide!
  186.  
  187.   The latest version of this document is available in several formats on
  188.   <ftp://sunsite.unc.edu:/pub/Linux/docs/howto>.
  189.  
  190.  
  191.  
  192.   1.2.  It Is. Tell Me More
  193.  
  194.  
  195.   You installed Linux and the programs you needed on the PC. You gave
  196.   yourself an account (if not, type adduser yourname now!) and Linux is
  197.   running. You've just entered your name and password, and now you are
  198.   looking at the screen thinking: ``Well, now what?''
  199.   Now, don't despair. You're almost ready to do the same things you used
  200.   to do with DOS/Win, and many more. If you were running DOS/Win instead
  201.   of Linux, you would be doing some of the following tasks:
  202.  
  203.  
  204.   ╖  running programs and creating, copying, viewing, deleting,
  205.      printing, renaming files;
  206.  
  207.   ╖  CD'ing, MD'ing, RD'ing, and DIR'ring your directories;
  208.  
  209.   ╖  formatting floppies and copying files from/to them;
  210.  
  211.   ╖  tailoring the system;
  212.  
  213.   ╖  surfing the Internet;
  214.  
  215.   ╖  writing .BAT files and programs in your favourite language;
  216.  
  217.   ╖  the remaining 1%.
  218.  
  219.   You'll be glad to know that these tasks can be accomplished under
  220.   Linux in a fashion similar to DOS. Under DOS, the average user uses
  221.   very few of the 100+ commands available: the same, up to a point,
  222.   applies to Linux.
  223.  
  224.  
  225.  
  226.   1.2.1.  Introductory Concepts
  227.  
  228.  
  229.   The best way to learn something new is to get your feet wet. You are
  230.   strongly encouraged to experiment and play with Linux: unless you
  231.   login as ``root'', you can't damage the system that way. A few points:
  232.  
  233.  
  234.   ╖  first of all, how to quit Linux safely. If you see a text mode
  235.      screen, press <CTRL-ALT-DEL>, wait for the system to reboot, then
  236.      switch off the PC. If you are working under X Window System, press
  237.      <CTRL-ALT-BACKSPACE> first, then <CTRL-ALT-DEL>. Never switch off
  238.      or reset the PC directly: this could damage the file system;
  239.  
  240.   ╖  unlike DOS or Windows, Linux has built-in security mechanisms.
  241.      Files and directories have permissions associated to them; as a
  242.      result, some cannot be accessed by the normal user; (see Section
  243.      ``Permissions and Ownership''). DOS and Windows, on the contrary,
  244.      will let you wipe out the entire contents of your hard disk;
  245.  
  246.   ╖  there's a special user called ``root'': the system administrator,
  247.      with full power of life and death on the machine.  If you work on
  248.      your own PC, you'll be root as well. Working as root is dangerous:
  249.      any mistake can seriously damage or destroy the system just like
  250.      with DOS/Win. Don't work as root unless absolutely necessary;
  251.  
  252.   ╖  much of the complexity of Linux comes from its extreme
  253.      configurability: virtually every feature and every application can
  254.      be tailored through one or more configuration files. Complexity is
  255.      the price to pay for power;
  256.  
  257.   ╖  redirection and piping are a side DOS feature, a very inportant one
  258.      and much more powerful under Linux. Simple commands can be strung
  259.      together to accomplish complex tasks. I strongly suggest that you
  260.      learn how to use them.
  261.  
  262.  
  263.  
  264.  
  265.   1.2.2.  Getting Help
  266.  
  267.  
  268.   There are many ways to get help with Linux. The most important are:
  269.  
  270.  
  271.   ╖  reading the documentation---I mean it. Although the HOWTO you are
  272.      reading may serve as an introduction to Linux, there are several
  273.      books that you really should read: Matt Welsh's ``Linux
  274.      Installation and Getting Started'' (
  275.      <http://sunsite.unc.edu/mdw/LDP/gs/gs.html>), Larry Greenfield's
  276.      ``Linux User Guide'' ( <ftp://sunsite.unc.edu/pub/Linux/docs/linux-
  277.      doc-project/users-guide>), and the Linux FAQ (
  278.      <http://sunsite.unc.edu/mdw/FAQ/Linux-FAQ.html>).  Feel a guilty
  279.      conscience until you have read at least one of them;
  280.  
  281.   ╖  the documentation of the packages installed on the machine is often
  282.      found in subdirectories under /usr/doc/;
  283.  
  284.   ╖  to get some help about the ``internal commands'' of the shell, type
  285.      help or, better, man bash or info bash;
  286.  
  287.   ╖  to get help about a command, type man command that invokes the
  288.      manual (``man'') page of command. Alternatively, type info command
  289.      that invokes, if available, the info page pertinent of command;
  290.      info is a hypertext-based documentation system, perhaps not
  291.      intuitive to use at first. Finally, you may try apropos command or
  292.      whatis command. With all of these commands, press `q' to exit.
  293.  
  294.   ╖  finally, on the Internet: the right place for getting help is
  295.      Usenet, like  <news:comp.os.linux.setup>. Please don't email me for
  296.      help, because I'm quite overloaded.
  297.  
  298.  
  299.  
  300.   1.3.  Conventions
  301.  
  302.  
  303.   Throughout this work, examples will often follow the following format:
  304.   <...> is a required argument, while [...] an optional one.  Example:
  305.  
  306.  
  307.  
  308.        $ tar -tf <file.tar> [> redir_file]
  309.  
  310.  
  311.  
  312.  
  313.   file.tar must be indicated, but redirection to redir_file is optional.
  314.  
  315.   ``RMP'' means ``please Read the Man Pages for further information''.
  316.   I can't stress enough how important reading the documentation is.
  317.   ``DOSWin'' stands for ``DOS/Windows''.
  318.  
  319.   When the prompt of a command example is #, the command can only be
  320.   performed by root.
  321.  
  322.  
  323.  
  324.   2.  For the Impatient
  325.  
  326.  
  327.   Want to strike out? Have a look at this table:
  328.  
  329.  
  330.  
  331.        DOS                     Linux                   Notes
  332.        ------------------------------------------------------------------------------
  333.  
  334.        ATTRIB (+-)attr file    chmod <mode> file       completely different
  335.        BACKUP                  tar -Mcvf device dir/   ditto
  336.        CD dirname\             cd dirname/             almost the same syntax
  337.        COPY file1 file2        cp file1 file2          ditto
  338.        DEL file                rm file                 beware - no undelete
  339.        DELTREE dirname         rm -R dirname/          ditto
  340.        DIR                     ls                      not exactly the same syntax
  341.        DIR file /S             find . -name file       completely different
  342.        EDIT file               vi file                 I think you won't like it
  343.                                jstar file              feels like dos' edit
  344.        EDLIN file              ed file                 forget it
  345.        FORMAT                  fdformat,
  346.                                mount, umount           quite different syntax
  347.        HELP command            man command,            same philosophy
  348.                                info command
  349.        MD dirname              mkdir dirname/          almost the same syntax
  350.        MORE < file             less file               much better
  351.        MOVE file1 file2        mv file1 file2          ditto
  352.        NUL                     /dev/null               ditto
  353.        PRINT file              lpr file                ditto
  354.        PRN                     /dev/lp0,
  355.                                /dev/lp1                ditto
  356.        RD dirname              rmdir dirname/          almost the same syntax
  357.        REN file1 file2         mv file1 file2          not for multiple files
  358.        RESTORE                 tar -Mxpvf device       different syntax
  359.        TYPE file               less file               much better
  360.        WIN                     startx                  poles apart!
  361.  
  362.  
  363.  
  364.  
  365.   If you need more than a table of commands, please refer to the
  366.   following sections.
  367.  
  368.  
  369.  
  370.   3.  Meet bash
  371.  
  372.  
  373.   Good news: with Linux you type much less at the prompt, because the
  374.   bash shell types for you whenever possible, and features cool line
  375.   editing capabilities. To begin with, the arrow-up key recalls previous
  376.   command lines; but there's more. Pressing <TAB> completes file and
  377.   directory names, so typing
  378.  
  379.  
  380.  
  381.        $ ls /uTABloTABbTAB
  382.  
  383.  
  384.  
  385.  
  386.   is like typing
  387.  
  388.  
  389.  
  390.        $ ls /usr/local/bin
  391.  
  392.  
  393.  
  394.  
  395.   If there were ambiguities, as typing
  396.  
  397.        $ ls /uTABloTABiTAB
  398.  
  399.  
  400.  
  401.  
  402.   bash stops because it doesn't know if you mean /usr/local/info or
  403.   /usr/local/include. Supply more characters then press <TAB> again.
  404.  
  405.   Other useful key presses are <ESC-BACKSPACE> that deletes a word to
  406.   the left, while <ESC-D> deletes a word to the right; <ESC-F> moves the
  407.   cursor one word to the right, <ESC-B> to the left; <CTRL-A> moves to
  408.   the beginning of the line, <CTRL-E> to the end. The <ALT> key is
  409.   equivalent to <ESC>.
  410.  
  411.   Enough for now. Once you get used to these shortcuts, you'll find the
  412.   DOS prompt very annoying...
  413.  
  414.  
  415.  
  416.   4.  Files and Programs
  417.  
  418.  
  419.  
  420.  
  421.   4.1.  Files: Preliminary Notions
  422.  
  423.  
  424.   Linux has a structure of directories and files very similar to that of
  425.   DOSWin. Files have filenames that obey special rules, are stored in
  426.   directories, some are executable, and among these most have command
  427.   switches. Moreover, you can use wildcard characters, redirection, and
  428.   piping. There are only a few minor differences:
  429.  
  430.  
  431.   ╖  under DOS, file names are in the so-called 8.3 form; e.g.
  432.      NOTENOUG.TXT. Under Linux we can do better. If you installed Linux
  433.      using a file system like ext2 or umsdos, you can use longer
  434.      filenames (up to 255 characters), and with more than one dot: for
  435.      example, This_is.a.VERY_long.filename. Please note that I used both
  436.      upper and lower case characters: in fact...
  437.  
  438.   ╖  upper and lower case characters in file names or commands are
  439.      different. Therefore, FILENAME.tar.gz and filename.tar.gz are two
  440.      different files. ls is a command, LS is a mistake;
  441.  
  442.   ╖  Windows users, beware when using long file names under Linux.  If a
  443.      file name contains spaces (not recommended but possible), you must
  444.      enclose the file name in double quotes whenever you refer to it.
  445.      For example:
  446.  
  447.  
  448.  
  449.        $ # the following command makes a directory called "My old files"
  450.        $ mkdir "My old files"
  451.        $ ls
  452.        My old files    bin     tmp
  453.  
  454.  
  455.  
  456.  
  457.  
  458.   Further, some characters shouldn't be used: some are !*$&#.
  459.  
  460.   ╖  there are no compulsory extensions like .COM and .EXE for programs,
  461.      or .BAT for batch files. Executable files are marked by an asterisk
  462.      `*' at the end of their name when you issue the ls -F command. For
  463.      example:
  464.  
  465.  
  466.  
  467.        $ ls -F
  468.        I_am_a_dir/   cindy.jpg    cjpg*   letter_to_Joe    my_1st_script*  old~
  469.  
  470.  
  471.  
  472.  
  473.  
  474.   The files cjpg* and my_1st_script* are executables, that is ``pro¡
  475.   grams''. Under DOS, backup files end in .BAK, while under Linux they
  476.   end with a tilde `~'. Further, a file whose name starts with a dot is
  477.   considered as hidden. Example: the file .I.am.a.hidden.file won't show
  478.   up after the ls command;
  479.  
  480.   ╖  DOS program switches are obtained with /switch, Linux switches with
  481.      -switch or --switch. Example: dir /s becomes ls -R. Note that many
  482.      DOS programs, like PKZIP or ARJ, use UNIX-style switches.
  483.  
  484.   You can now jump to Section ``Translating Commands from DOS to
  485.   Linux'', but if I were you I'd read on.
  486.  
  487.  
  488.  
  489.   4.2.  Symbolic Links
  490.  
  491.  
  492.   UNIX has a type of file that doesn't exist under DOS: the symbolic
  493.   link.  This can be thought of as a pointer to a file or to a
  494.   directory, and can be used instead of the file or directory it points
  495.   to; it's similar to Windows shortcuts. Examples of symbolic links are
  496.   /usr/X11, which points to /usr/X11R6; /dev/modem, which points to
  497.   either /dev/ttyS0 or /dev/ttyS1.
  498.  
  499.   To make a symbolic link:
  500.  
  501.  
  502.  
  503.        $ ln -s <file_or_dir> <linkname>
  504.  
  505.  
  506.  
  507.  
  508.   Example:
  509.  
  510.  
  511.  
  512.        $ ln -s /usr/doc/g77/DOC g77manual.txt
  513.  
  514.  
  515.  
  516.  
  517.   Now you can refer to g77manual.txt instead of /usr/doc/g77/DOC.  Links
  518.   appear like this in directory listings:
  519.  
  520.  
  521.  
  522.        $ ls -F
  523.        g77manual.txt@
  524.        $ ls -l
  525.        (several things...)           g77manual.txt -> /usr/doc/g77/DOC
  526.  
  527.  
  528.  
  529.   4.3.  Permissions and Ownership
  530.  
  531.  
  532.   DOS files and directories have the following attributes: A (archive),
  533.   H (hidden), R (read-only), and S (system). Only H and R make sense
  534.   under Linux: hidden files start with a dot, and for the R attribute,
  535.   read on.
  536.  
  537.   Under UNIX a file has ``permissions'' and an owner, who in turn
  538.   belongs to a ``group''. Look at this example:
  539.  
  540.  
  541.  
  542.        $ ls -l /bin/ls
  543.        -rwxr-xr-x  1  root  bin  27281 Aug 15 1995 /bin/ls*
  544.  
  545.  
  546.  
  547.  
  548.   The first field contains the permissions of the file /bin/ls, which
  549.   belongs to root, group bin. Leaving the remaining information aside,
  550.   remember that -rwxr-xr-x means, from left to right:
  551.  
  552.   - is the file type (- = ordinary file, d = directory, l = link, etc);
  553.   rwx are the permissions for the file owner (read, write, execute); r-x
  554.   are the permissions for the group of the file owner (read, execute);
  555.   (I won't cover the concept of group, you can survive without it as
  556.   long as you're a beginner ;-) r-x are the permissions for all other
  557.   users (read, execute).
  558.  
  559.   The directory /bin has permissions, too: see Section ``Directories
  560.   Permissions'' for further details. This is why you can't delete the
  561.   file /bin/ls unless you are root: you don't have the permission to do
  562.   so. To change a file's permissions, the command is:
  563.  
  564.  
  565.  
  566.        $ chmod <whoXperm> <file>
  567.  
  568.  
  569.  
  570.  
  571.   where who is u (user, that is owner), g (group), o (other), X is
  572.   either + or -, perm is r (read), w (write), or x (execute). Common
  573.   examples of chmod use are the following:
  574.  
  575.  
  576.  
  577.        $ chmod +x file
  578.  
  579.  
  580.  
  581.  
  582.   this sets the execute permission for the file.
  583.  
  584.  
  585.  
  586.        $ chmod go-rw file
  587.  
  588.  
  589.  
  590.  
  591.   this removes read and write permission for everyone but the owner.
  592.  
  593.  
  594.  
  595.   $ chmod ugo+rwx file
  596.  
  597.  
  598.  
  599.  
  600.   this gives everyone read, write, and execute permission.
  601.  
  602.  
  603.  
  604.        # chmod +s file
  605.  
  606.  
  607.  
  608.  
  609.   this makes a so-called ``setuid'' or ``suid'' file---a file that
  610.   everyone can execute with its owner's privileges. Typically, you'll
  611.   come across root suid files; these are often important system files,
  612.   like the X server.
  613.  
  614.   A shorter way to refer to permissions is with digits: rwxr-xr-x can be
  615.   expressed as 755 (every letter corresponds to a bit: --- is 0, --x is
  616.   1, -w- is 2, -wx is 3...).  It looks difficult, but with a bit of
  617.   practice you'll understand the concept. root, being the superuser, can
  618.   change everyone's file permissions.  RMP.
  619.  
  620.  
  621.  
  622.   4.4.  Files: Translating Commands
  623.  
  624.  
  625.   On the left, the DOS commands; on the right, their Linux counterpart.
  626.  
  627.  
  628.  
  629.        ATTRIB:         chmod
  630.        COPY:           cp
  631.        DEL:            rm
  632.        MOVE:           mv
  633.        REN:            mv
  634.        TYPE:           more, less, cat
  635.  
  636.  
  637.  
  638.  
  639.   Redirection and plumbing operators:  < > >> |
  640.  
  641.   Wildcards: * ?
  642.  
  643.   nul:        /dev/null
  644.  
  645.   prn, lpt1:  /dev/lp0 or /dev/lp1; lpr
  646.  
  647.  
  648.   4.4.1.  Examples
  649.  
  650.  
  651.  
  652.  
  653.  
  654.  
  655.  
  656.  
  657.  
  658.  
  659.  
  660.  
  661.   DOS                                     Linux
  662.   ---------------------------------------------------------------------
  663.  
  664.   C:\GUIDO>ATTRIB +R FILE.TXT             $ chmod 400 file.txt
  665.   C:\GUIDO>COPY JOE.TXT JOE.DOC           $ cp joe.txt joe.doc
  666.   C:\GUIDO>COPY *.* TOTAL                 $ cat * > total
  667.   C:\GUIDO>COPY FRACTALS.DOC PRN          $ lpr fractals.doc
  668.   C:\GUIDO>DEL TEMP                       $ rm temp
  669.   C:\GUIDO>DEL *.BAK                      $ rm *~
  670.   C:\GUIDO>MOVE PAPER.TXT TMP\            $ mv paper.txt tmp/
  671.   C:\GUIDO>REN PAPER.TXT PAPER.ASC        $ mv paper.txt paper.asc
  672.   C:\GUIDO>PRINT LETTER.TXT               $ lpr letter.txt
  673.   C:\GUIDO>TYPE LETTER.TXT                $ more letter.txt
  674.   C:\GUIDO>TYPE LETTER.TXT                $ less letter.txt
  675.   C:\GUIDO>TYPE LETTER.TXT > NUL          $ cat letter.txt > /dev/null
  676.           n/a                             $ more *.txt *.asc
  677.           n/a                             $ cat section*.txt | less
  678.  
  679.  
  680.  
  681.  
  682.   Notes:
  683.  
  684.  
  685.   ╖  * is smarter under Linux: * matches all files except the hidden
  686.      ones; .* matches all hidden files (but also the current directory
  687.      `.' and parent directory `..': beware!); *.* matches only those
  688.      that have a `.' in the middle or that end with a dot; p*r matches
  689.      both `peter' and `piper'; *c* matches both `picked' and `peck';
  690.  
  691.   ╖  when using more, press <SPACE> to read through the file, `q' to
  692.      exit. less is more intuitive and lets you use the arrow keys;
  693.  
  694.   ╖  there is no UNDELETE, so think twice before deleting anything;
  695.  
  696.   ╖  in addition to DOS' < > >>, Linux has 2> to redirect error messages
  697.      (stderr); moreover, 2>&1 redirects stderr to stdout, while 1>&2
  698.      redirects stdout to stderr;
  699.  
  700.   ╖  Linux has another wildcard: the []. Usage: [abc]* matches files
  701.      starting with a, b, c; *[I-N1-3] matches files ending with I, J, K,
  702.      L, M, N, 1, 2, 3;
  703.  
  704.   ╖  lpr <file> prints a file in background. To check the status of the
  705.      print queue, use lpq; to remove a file from the print queue, use
  706.      lprm;
  707.  
  708.   ╖  there is no DOS-like RENAME; that is, mv *.xxx *.yyy won't work. A
  709.      REN-like command is available on
  710.      <ftp://sunsite.unc.edu/pub/Linux/utils/file>;
  711.  
  712.   ╖  use cp -i and mv -i to be warned when a file is going to be
  713.      overwritten.
  714.  
  715.  
  716.  
  717.   4.5.  Running Programs: Multitasking and Sessions
  718.  
  719.  
  720.   To run a program, type its name as you would do under DOS. If the
  721.   directory (Section ``Using Directories'') where the program is stored
  722.   is included in the PATH (Section ``System Initialisation Files''), the
  723.   program will start. Exception: unlike DOS, under Linux a program
  724.   located in the current directory won't run unless the directory is
  725.   included in the PATH. Escamotage: being prog your program, type
  726.   ./prog.
  727.   This is what the typical command line looks like:
  728.  
  729.  
  730.  
  731.        $ command [-s1 [-s2] ... [-sn]] [par1 [par2] ... [parn]] [< input] [> output]
  732.  
  733.  
  734.  
  735.  
  736.   where -s1, ..., -sn are the program switches, par1, ..., parn are the
  737.   program parameters. You can issue several commands on the command
  738.   line:
  739.  
  740.  
  741.  
  742.        $ command1 ; command2 ; ... ; commandn
  743.  
  744.  
  745.  
  746.  
  747.   That's all about running programs, but it's easy to go a step beyond.
  748.   One of the main reasons for using Linux is that it is a multitasking
  749.   os---it can run several programs (from now on, processes) at the same
  750.   time. You can launch processes in background and continue working
  751.   straight away. Moreover, Linux lets you have several sessions: it's
  752.   like having many computers to work on at once!
  753.  
  754.  
  755.   ╖  To switch to session 1..6 on the virtual consoles, press <ALT-F1>
  756.      ... <ALT-F6>
  757.  
  758.   ╖  To start a new session in the same v.c. without leaving the current
  759.      one, type su - <loginname>. Example: su - root. This is useful, for
  760.      instance, when you need to perform a task that only root can do.
  761.  
  762.   ╖  To end a session, type exit. If there are stopped jobs (see later),
  763.      you'll be warned.
  764.  
  765.   ╖  To launch a process in background, add an ampersand '&' at the end
  766.      of the command line:
  767.  
  768.  
  769.  
  770.        $ progname [-switches] [parameters] [< input] [> output] &
  771.        [1] 123
  772.  
  773.  
  774.  
  775.  
  776.  
  777.   the shell identifies the process with a job number (e.g. [1]; see
  778.   below), and with a PID (Process Identification Number; 123 in our
  779.   example).
  780.  
  781.   ╖  To see how many processes there are, type ps ax. This will output a
  782.      list of currently running processes.
  783.  
  784.   ╖  To kill (terminate) a process, type kill <PID>. You may need to
  785.      kill a process when you don't know how to quit it the right way....
  786.      Unless you're root, you can't kill other people's processes.
  787.      Sometimes, a process will only be killed by kill -SIGKILL <PID>.
  788.  
  789.      In addition, the shell allows you to stop or temporarily suspend a
  790.      process, send a process to background, and bring a process from
  791.      background to foreground. In this context, processes are called
  792.      ``jobs''.
  793.   ╖  To see how many jobs there are, type jobs. Here the jobs are
  794.      identified by their job number, not by their PID.
  795.  
  796.   ╖  To stop a process running in foreground, press <CTRL-C> (it won't
  797.      always work).
  798.  
  799.   ╖  To suspend a process running in foreground, press <CTRL-Z> (ditto).
  800.  
  801.   ╖  To send a suspended process into background, type bg <%job> (it
  802.      becomes a job).
  803.  
  804.   ╖  To bring a job to foreground, type fg <%job>. To bring to
  805.      foreground the last job sent to background, simply type fg.
  806.  
  807.   ╖  To kill a job, type kill <%job> where <job> may be 1, 2, 3,...
  808.  
  809.   Using these commands you can format a disk, zip a bunch of files,
  810.   compile a program, and unzip an archive all at the same time, and
  811.   still have the prompt at your disposal. Try this with Windows, just to
  812.   see the difference in performance (if it doesn't crash, of course).
  813.  
  814.  
  815.  
  816.   4.6.  Running Programs on Remote Computers
  817.  
  818.  
  819.   To run a program on a remote machine whose name is remote.machine.edu:
  820.  
  821.  
  822.  
  823.        $ telnet remote.machine.edu
  824.  
  825.  
  826.  
  827.  
  828.   After logging in, start your favourite program. Needless to say, you
  829.   must have a shell account on the remote machine.
  830.  
  831.   If you have X11, you can even run an X application on a remote
  832.   computer, displaying it on your X screen. Let remote.machine.edu be
  833.   the remote X computer and let local.linux.box be your Linux machine.
  834.   To run from local.linux.box an X program that resides on
  835.   remote.machine.edu, do the following:
  836.  
  837.  
  838.   ╖  fire up X11, start an xterm or equivalent terminal emulator, then
  839.      type:
  840.  
  841.  
  842.  
  843.        $ xhost +remote.machine.edu
  844.        $ telnet remote.machine.edu
  845.  
  846.  
  847.  
  848.  
  849.  
  850.   ╖  after logging in, type:
  851.  
  852.  
  853.  
  854.        remote:$ DISPLAY=local.linux.box:0.0
  855.        remote:$ progname &
  856.  
  857.  
  858.  
  859.   (instead of DISPLAY..., you may have to write: setenv DISPLAY
  860.   local.linux.box:0.0. It depends on the remote shell.)
  861.  
  862.   Et voila! Now progname will start on remote.machine.edu and will be
  863.   displayed on your machine. Don't try this over the modem though, for
  864.   it's too slow to be usable. Moreover, this is a crude and insecure
  865.   method: please read the ``Remote X Apps mini-HOWTO'' at
  866.   <http://sunsite.unc.edu/LDP/HOWTO/mini/Remote-X-Apps>.
  867.  
  868.  
  869.  
  870.   5.  Using Directories
  871.  
  872.  
  873.  
  874.   5.1.  Directories: Preliminary Notions
  875.  
  876.  
  877.   We have seen the differences between files under DOSWin and Linux. As
  878.   for directories, under DOSWin the root directory is \, under Linux it
  879.   is /. Similarly, nested directories are separated by \ under DOSWin,
  880.   by / under Linux. Example of file paths:
  881.  
  882.  
  883.  
  884.        DOS:    C:\PAPERS\GEOLOGY\MID_EOC.TEX
  885.        Linux:  /home/guido/papers/geology/middle_eocene.tex
  886.  
  887.  
  888.  
  889.  
  890.   As usual, .. is the parent directory and . is the current directory.
  891.   Remember that the system won't let you cd, rd, or md everywhere you
  892.   want. Each user has his or her stuff in a directory called `home',
  893.   given by the system administrator; for instance, on my PC my home dir
  894.   is /home/guido.
  895.  
  896.  
  897.  
  898.   5.2.  Directories Permissions
  899.  
  900.  
  901.   Directories, too, have permissions. What we have seen in Section
  902.   ``Permissions and Ownership'' applies to directories as well (user,
  903.   group, and other). For a directory, rx means you can cd to that
  904.   directory, and w means that you can delete a file in the directory
  905.   (according to the file's permissions, of course), or the directory
  906.   itself.
  907.  
  908.   For example, to prevent other users from snooping in /home/guido/text:
  909.  
  910.  
  911.  
  912.        $ chmod o-rwx /home/guido/text
  913.  
  914.  
  915.  
  916.  
  917.  
  918.  
  919.   5.3.  Directories: Translating Commands
  920.  
  921.  
  922.  
  923.  
  924.  
  925.   DIR:            ls, find, du
  926.   CD:             cd, pwd
  927.   MD:             mkdir
  928.   RD:             rmdir
  929.   DELTREE:        rm -rf
  930.   MOVE:           mv
  931.  
  932.  
  933.  
  934.  
  935.  
  936.   5.3.1.  Examples
  937.  
  938.  
  939.  
  940.  
  941.        DOS                                     Linux
  942.        ---------------------------------------------------------------------
  943.  
  944.        C:\GUIDO>DIR                            $ ls
  945.        C:\GUIDO>DIR FILE.TXT                   $ ls file.txt
  946.        C:\GUIDO>DIR *.H *.C                    $ ls *.h *.c
  947.        C:\GUIDO>DIR/P                          $ ls | more
  948.        C:\GUIDO>DIR/A                          $ ls -l
  949.        C:\GUIDO>DIR *.TMP /S                   $ find / -name "*.tmp"
  950.        C:\GUIDO>CD                             $ pwd
  951.                n/a - see note                  $ cd
  952.                ditto                           $ cd ~
  953.                ditto                           $ cd ~/temp
  954.        C:\GUIDO>CD \OTHER                      $ cd /other
  955.        C:\GUIDO>CD ..\TEMP\TRASH               $ cd ../temp/trash
  956.        C:\GUIDO>MD NEWPROGS                    $ mkdir newprogs
  957.        C:\GUIDO>MOVE PROG ..                   $ mv prog ..
  958.        C:\GUIDO>MD \PROGS\TURBO                $ mkdir /progs/turbo
  959.        C:\GUIDO>DELTREE TEMP\TRASH             $ rm -rf temp/trash
  960.        C:\GUIDO>RD NEWPROGS                    $ rmdir newprogs
  961.        C:\GUIDO>RD \PROGS\TURBO                $ rmdir /progs/turbo
  962.  
  963.  
  964.  
  965.  
  966.   Notes:
  967.  
  968.  
  969.   ╖  when using rmdir, the directory to remove must be empty. To delete
  970.      a directory and all of its contents, use rm -rf (at your own risk).
  971.  
  972.   ╖  the character `~' is a shortcut for the name of your home
  973.      directory. The commands cd or cd ~ will take you to your home
  974.      directory from wherever you are; the command cd ~/tmp will take you
  975.      to /home/your_home/tmp.
  976.  
  977.   ╖  cd - ``undoes'' the last cd.
  978.  
  979.  
  980.  
  981.   6.  Floppies, Hard Disks, and the Like
  982.  
  983.  
  984.   There are two ways to manage devices under Linux: the DOS way and the
  985.   UNIX way. Take your pick.
  986.  
  987.  
  988.  
  989.  
  990.  
  991.   6.1.  Managing Devices the DOS Way
  992.  
  993.  
  994.   Most Linux distributions include the Mtools suite, a set of commands
  995.   that are perfectly equivalent to their DOS counterpart, but start with
  996.   an `m': i.e., mformat, mdir, mdel, mmd, and so on. They can even
  997.   preserve long file names, but not file permissions. If you configure
  998.   Mtools editing a file called /etc/mtools.conf (a sample is provided in
  999.   the distribution), you can also access the DOS/Win partition, the
  1000.   CD--ROM, and the Zip drive. To format a fresh disk though, the mformat
  1001.   command won't do. As root, you'll have to issue this command
  1002.   beforehand: fdformat /dev/fd0H1440.
  1003.  
  1004.   You can't access files on the floppy with a command like, say, less
  1005.   a:file.txt! This is the disadvantage of the DOS way of accessing
  1006.   disks.
  1007.  
  1008.  
  1009.  
  1010.   6.2.  Managing Devices the UNIX Way
  1011.  
  1012.  
  1013.   UNIX has a different way to handle devices. There are no separate
  1014.   volumes like A: or C:; a disk, be it a floppy or whatever, becomes
  1015.   part of the local file system through an operation called
  1016.   ``mounting''. When you're done using the disk, before extracting it
  1017.   you must ``unmount'' it.
  1018.  
  1019.   Physically formatting a disk is one thing, making a file system on it
  1020.   is another. The DOS command FORMAT A: does both things, but under
  1021.   Linux there are separate commands. To format a floppy, see above; to
  1022.   create a file system:
  1023.  
  1024.  
  1025.  
  1026.        # mkfs -t ext2 -c /dev/fd0H1440
  1027.  
  1028.  
  1029.  
  1030.  
  1031.   You can use dos, vfat (recommended) or other formats instead of ext2.
  1032.   Once the disk is prepared, mount it with the command
  1033.  
  1034.  
  1035.  
  1036.        # mount -t ext2 /dev/fd0 /mnt
  1037.  
  1038.  
  1039.  
  1040.  
  1041.   specifying the right file system if you don't use ext2. Now you can
  1042.   address the files in the floppy using /mnt instead of A: or B:.
  1043.   Examples:
  1044.  
  1045.  
  1046.  
  1047.        DOS                                     Linux
  1048.        ---------------------------------------------------------------------
  1049.  
  1050.        C:\GUIDO>DIR A:                         $ ls /mnt
  1051.        C:\GUIDO>COPY A:*.*                     $ cp /mnt/* .
  1052.        C:\GUIDO>COPY *.ZIP A:                  $ cp *.zip /mnt
  1053.        C:\GUIDO>EDIT A:FILE.TXT                $ jstar /mnt/file.txt
  1054.        C:\GUIDO>A:                             $ cd /mnt
  1055.        A:> _                                   /mnt/$ _
  1056.  
  1057.   When you've finished, before extracting the disk you must unmount it
  1058.   with the command
  1059.  
  1060.  
  1061.  
  1062.        # umount /mnt
  1063.  
  1064.  
  1065.  
  1066.  
  1067.   Obviously, you have to fdformat and mkfs only unformatted disks, not
  1068.   previously used ones. If you want to use the drive B:, refer to
  1069.   fd1H1440 and fd1 instead of fd0H1440 and fd0 in the examples above.
  1070.  
  1071.   Needless to say, what applies to floppies also applies to other
  1072.   devices; for instance, you may want to mount another hard disk or a
  1073.   CD--ROM drive. Here's how to mount the CD--ROM:
  1074.  
  1075.  
  1076.  
  1077.        # mount -t iso9660 /dev/cdrom /mnt
  1078.  
  1079.  
  1080.  
  1081.  
  1082.   This was the ``official'' way to mount your disks, but there's a trick
  1083.   in store. Since it's a bit of a nuisance having to be root to mount a
  1084.   floppy or a CD--ROM, every user can be allowed to mount them this way:
  1085.  
  1086.  
  1087.   ╖  as root, do the following:
  1088.  
  1089.  
  1090.  
  1091.        # mkdir /mnt/floppy ; mkdir /mnt/cdrom
  1092.        # chmod 777 /mnt/floppy /mnt/cd*
  1093.        # # make sure that the CD-ROM device is right
  1094.        # chmod 666 /dev/hdb ; chmod 666 /dev/fd*
  1095.  
  1096.  
  1097.  
  1098.  
  1099.  
  1100.   ╖  add in /etc/fstab the following lines:
  1101.  
  1102.  
  1103.  
  1104.        /dev/cdrom      /mnt/cdrom  iso9660 ro,user,noauto          0       0
  1105.        /dev/fd0        /mnt/floppy vfat    user,noauto             0       0
  1106.  
  1107.  
  1108.  
  1109.  
  1110.  
  1111.   Now, to mount a DOS floppy and a CD--ROM:
  1112.  
  1113.  
  1114.  
  1115.        $ mount /mnt/floppy
  1116.        $ mount /mnt/cdrom
  1117.  
  1118.  
  1119.  
  1120.  
  1121.   /mnt/floppy and /mnt/cdrom can now be accessed by every user. Remember
  1122.   that allowing everyone to mount disks this way is a gaping security
  1123.   hole, if you care.
  1124.  
  1125.   Two useful commands are df, which gives information on the mounted
  1126.   file systems, and du dirname which reports the disk space consumed by
  1127.   the directory.
  1128.  
  1129.  
  1130.  
  1131.   6.3.  Backing Up
  1132.  
  1133.  
  1134.   There are several packages to help you, but the very least you can do
  1135.   for a multi-volume backup is (as root):
  1136.  
  1137.  
  1138.  
  1139.        # tar -M -cvf /dev/fd0H1440 dir_to_backup/
  1140.  
  1141.  
  1142.  
  1143.  
  1144.   Make sure to have a formatted floppy in the drive, and several more
  1145.   ready.  To restore your stuff, insert the first floppy in the drive
  1146.   and do:
  1147.  
  1148.  
  1149.  
  1150.        # tar -M -xpvf /dev/fd0H1440
  1151.  
  1152.  
  1153.  
  1154.  
  1155.  
  1156.  
  1157.   7.  What About Windows?
  1158.  
  1159.  
  1160.   The ``equivalent'' of Windows is the graphic system X Window System.
  1161.   Unlike Windows or the Mac, X11 wasn't designed for ease of use or to
  1162.   look good, but just to provide graphic facilities to UNIX
  1163.   workstations. These are the main differences:
  1164.  
  1165.  
  1166.   ╖  while Windows looks and feels the same all over the world, X11 does
  1167.      not: it's much more configurable. X11's overall look is given by a
  1168.      key component called ``window manager'', of which you have a wide
  1169.      choice: fvwm, basic but nice and memory efficient, fvwm2-95,
  1170.      Afterstep, WindowMaker, Enlightenment, and many more. The w.m.  is
  1171.      usually invoked from .xinitrc;
  1172.  
  1173.   ╖  your w.m. can be configured so as a window acts as under, er,
  1174.      Windows: you click on it and it comes to foreground. Another
  1175.      possibility is that it comes to foreground when the mouse moves
  1176.      over it (``focus''). Also, the placement of windows on the screen
  1177.      can be automatic or interactive: if a strange frame appears instead
  1178.      of your program, left click where you want it to appear;
  1179.  
  1180.   ╖  most features can be tailored editing one or more configuration
  1181.      files. Read the docs of your w.m.: the configuration file can be
  1182.      .fvwmrc, .fvwm2rc95, .steprc, etc. A sample configuration file is
  1183.      typically found in /etc/X11/window-manager-name/system.window-
  1184.      manager-name;
  1185.  
  1186.   ╖  X11 applications are written using special libraries (``widget
  1187.      sets''); as several are available, applications look different. The
  1188.      most basic ones are those that use the Athena widgets (2--D look;
  1189.      xdvi, xman, xcalc); others use Motif (netscape), others still use
  1190.      Tcl/Tk, XForms, Qt, Gtk, and what have you. Nearly all of these
  1191.      libraries provide roughly the same look and feel as Windows;
  1192.  
  1193.   ╖  the feel, unfortunately, can be incoherent. For instance, if you
  1194.      select a line of text using the mouse and press <BACKSPACE>, you'd
  1195.      expect the line to disappear, right? This doesn't work with
  1196.      Athena--based apps, but it does with other widget sets;
  1197.  
  1198.   ╖  how scrollbars and resizing work depends on the w.m. and the widget
  1199.      set. Tip: if you find that the scrollbars don't behave as you would
  1200.      expect, try using the central button or the two buttons together to
  1201.      move them;
  1202.  
  1203.   ╖  applications don't have an icon by default, but they can have many.
  1204.      Most w.m. feature a menu you recall by clicking on the desktop
  1205.      (``root window''); needless to say, the menu can be tailored. To
  1206.      change the root window appearance, use xsetroot or xloadimage;
  1207.  
  1208.   ╖  the clipboard can only contain text, and behaves strange. Once
  1209.      you've selected text, it's already copied to the clipboard: move
  1210.      elsewhere and press the central button to paste it. There's an
  1211.      application, xclipboard, that provides for multiple clipboard
  1212.      buffers;
  1213.  
  1214.   ╖  drag and drop is an option, and is only available if you use X11
  1215.      applications and/or w.m. that support it.
  1216.  
  1217.   To save memory, one should use applications that use the same
  1218.   libraries, but this is difficult to do in practice.
  1219.  
  1220.   There are projects that aim at making X11 look and behave as
  1221.   coherently as Windows. Gnome,  <http://www.gnome.org> and KDE,
  1222.   <http://www.kde.org>, are awesome. Give them a try: you won't regret
  1223.   your Windows desktop anymore.
  1224.  
  1225.  
  1226.  
  1227.   8.  Tailoring the System
  1228.  
  1229.  
  1230.  
  1231.   8.1.  System Initialisation Files
  1232.  
  1233.  
  1234.   Two important files under DOS are AUTOEXEC.BAT and CONFIG.SYS, which
  1235.   are used at boot time to initialise the system, set some environment
  1236.   variables like PATH and FILES, and possibly launch a program or batch
  1237.   file.  Under Linux there are lots of initialisation files, some of
  1238.   which you had better not tamper with until you know exactly what you
  1239.   are doing. I'll tell you what the most important are, anyway:
  1240.  
  1241.  
  1242.  
  1243.        FILES                                   NOTES
  1244.  
  1245.        /etc/inittab                            don't touch for now!
  1246.        /etc/rc.d/*                             ditto
  1247.  
  1248.  
  1249.  
  1250.  
  1251.   If all you need is setting the PATH and other environment variables,
  1252.   or you want to change the login messages or automatically launch a
  1253.   program after the login, have a look at the following files:
  1254.  
  1255.        FILES                                   NOTES
  1256.  
  1257.        /etc/issue                              sets pre-login message
  1258.        /etc/motd                               sets post-login message
  1259.        /etc/profile                            sets $PATH and other variables, etc.
  1260.        /etc/bashrc                             sets aliases and functions, etc.
  1261.        /home/your_home/.bashrc                 sets your aliases + functions
  1262.        /home/your_home/.bash_profile   or
  1263.        /home/your_home/.profile                sets environment + starts your progs
  1264.  
  1265.  
  1266.  
  1267.  
  1268.   If the latter file exists (note that it is a hidden file), it will be
  1269.   read after the login, and the commands therein will be executed.
  1270.  
  1271.   Example---look at this .bash_profile:
  1272.  
  1273.  
  1274.   ______________________________________________________________________
  1275.   # I am a comment
  1276.   echo Environment:
  1277.   printenv | less   # equivalent of command SET under DOS
  1278.   alias d='ls -l'   # easy to understand what an alias is
  1279.   alias up='cd ..'
  1280.   echo "I remind you that the path is "$PATH
  1281.   echo "Today is `date`"  # use the output of the command 'date'
  1282.   echo "Have a good day, "$LOGNAME
  1283.   # The following is a "shell function"
  1284.   ctgz() # List the contents of a .tar.gz archive.
  1285.   {
  1286.     for file in $*
  1287.     do
  1288.       gzip -dc ${file} | tar tf -
  1289.     done
  1290.   }
  1291.   # end of .profile
  1292.   ______________________________________________________________________
  1293.  
  1294.  
  1295.  
  1296.   $PATH and $LOGNAME, you guessed right, are environment variables.
  1297.   There are many others to play with; for instance, RMP for apps like
  1298.   less or bash.
  1299.  
  1300.   Putting this line in your /etc/profile will provide the rough
  1301.   equivalent of PROMPT $P$G:
  1302.  
  1303.  
  1304.  
  1305.        export PS1="\w\\$ "
  1306.  
  1307.  
  1308.  
  1309.  
  1310.  
  1311.  
  1312.   8.2.  Program Initialisation Files
  1313.  
  1314.  
  1315.   Under Linux, virtually everything can be tailored to your needs. Most
  1316.   programs have one or more initialisation files you can fiddle with,
  1317.   often as a .prognamerc in your home dir. The first ones you'll want to
  1318.   modify are:
  1319.  
  1320.  
  1321.   ╖   .inputrc: used by bash to define key bindings;
  1322.  
  1323.   ╖   .xinitrc: used by startx to initialise X Window System;
  1324.  
  1325.   ╖   .fvwmrc: used by the window manager fvwm.
  1326.  
  1327.   ╖   .joerc, .jstarrc: used by the editor joe;
  1328.  
  1329.   ╖   .jedrc: used by the editor jed;
  1330.  
  1331.   ╖   .pinerc: used by the mail reader pine;
  1332.  
  1333.   ╖   .Xdefault: used by many X programs.
  1334.  
  1335.   For all of these and the others you'll come across sooner or later,
  1336.   RMP.  Perhaps I could interest you in the Configuration HOWTO,
  1337.   <http://sunsite.unc.edu/mdw/HOWTO/Config-HOWTO.html>?
  1338.  
  1339.  
  1340.  
  1341.   9.  Networking: Concepts
  1342.  
  1343.  
  1344.   Not only is ``Dialup Networking'' available under Linux, it's also
  1345.   more stable and quicker. The name of the game is ``PPP'', the protocol
  1346.   employed for connecting to the Internet using modems. You need a
  1347.   kernel that supports PPP and a tool that dials and makes the
  1348.   connection.
  1349.  
  1350.   To retrieve your mail from the ISP's server you need a tool called
  1351.   ``email fetcher'' that uses the POP protocol; when the mail is fetched
  1352.   it will appear as though it had been directly delivered to your Linux
  1353.   box. You'll then use a MUA (Mail User Agent) like pine, mutt, elm or
  1354.   many others to manage it.
  1355.  
  1356.   While under Windows the dialer is automatically invoked when you
  1357.   launch an Internet application, under Linux the path is the other way
  1358.   round: you dial first, then launch the application. A thing called
  1359.   diald provides the usual behaviour. Installing and configuring dialup
  1360.   networking used to be one of the most difficult things to do under
  1361.   Linux, but not anymore: please consult the Configuration HOWTO.
  1362.  
  1363.   Finally, a word about ``Network neighborhood'': you can make your
  1364.   Linux workstation appear as Windows NT/9x in a local network of
  1365.   Windows machines! The magic word is Samba: not the lively Brazilian
  1366.   dance, but an implementation of the SMB protocol for Linux. Go to
  1367.   <http://samba.anu.edu.au/samba>.
  1368.  
  1369.  
  1370.  
  1371.   10.  A Bit of Programming
  1372.  
  1373.  
  1374.  
  1375.  
  1376.   10.1.  Shell Scripts: .BAT Files on Steroids
  1377.  
  1378.  
  1379.   If you used .BAT files to create shortcuts of long command lines (I
  1380.   did a lot), this goal can be attained by inserting appropriate alias
  1381.   lines (see example above) in profile or .bash_profile. But if your
  1382.   .BATs were more complicated, then you'll love the scripting language
  1383.   made available by the shell: it's as powerful as good ol' QBasic, if
  1384.   not more. It has variables, structures like while, for, case, if...
  1385.   then... else, and lots of other features: it can be a good alternative
  1386.   to a ``real'' programming language.
  1387.   To write a script---the equivalent of a .BAT file under DOS---all you
  1388.   have to do is write a standard ASCII file containing the instructions,
  1389.   save it, then make it executable with the command chmod +x
  1390.   <scriptfile>. To execute it, type its name.
  1391.  
  1392.   A word of warning. The system editor is called vi, and in my
  1393.   experience most new users find it very difficult to use. I'm not going
  1394.   to explain how to use it; please consult Matt Welsh's book or search
  1395.   for a tutorial on the net. Suffice it here to say that:
  1396.  
  1397.  
  1398.   ╖  to insert some text, type i then your text;
  1399.  
  1400.   ╖  to delete characters, type <ESC> then x;
  1401.  
  1402.   ╖  to quit vi whithout saving, type <ESC> then :q!
  1403.  
  1404.   ╖  to save and quit, type <ESC> then :wq.
  1405.  
  1406.   A good beginner editor is joe: invoking it by typing jstar you'll get
  1407.   the same key bindings as the DOSWin editor. jed in WordStar or IDE
  1408.   mode is even better. Please consult Section ``Where to Find
  1409.   Applications'' to see where to get these editors.
  1410.  
  1411.   Writing scripts under bash is such a vast subject it would require a
  1412.   book by itself, and I will not delve into the topic any further. I'll
  1413.   just give you an example of shell script, from which you can extract
  1414.   some basic rules:
  1415.  
  1416.  
  1417.   ______________________________________________________________________
  1418.   #!/bin/sh
  1419.   # sample.sh
  1420.   # I am a comment
  1421.   # don't change the first line, it must be there
  1422.   echo "This system is: `uname -a`" # use the output of the command
  1423.   echo "My name is $0" # built-in variables
  1424.   echo "You gave me the following $# parameters: "$*
  1425.   echo "The first parameter is: "$1
  1426.   echo -n "What's your name? " ; read your_name
  1427.   echo notice the difference: "hi $your_name" # quoting with "
  1428.   echo notice the difference: 'hi $your_name' # quoting with '
  1429.   DIRS=0 ; FILES=0
  1430.   for file in `ls .` ; do
  1431.     if [ -d ${file} ] ; then # if file is a directory
  1432.       DIRS=`expr $DIRS + 1`  # DIRS = DIRS + 1
  1433.     elif [ -f ${file} ] ; then
  1434.       FILES=`expr $FILES + 1`
  1435.     fi
  1436.     case ${file} in
  1437.       *.gif|*jpg) echo "${file}: graphic file" ;;
  1438.       *.txt|*.tex) echo "${file}: text file" ;;
  1439.       *.c|*.f|*.for) echo "${file}: source file" ;;
  1440.       *) echo "${file}: generic file" ;;
  1441.     esac
  1442.   done
  1443.   echo "there are ${DIRS} directories and ${FILES} files"
  1444.   ls | grep "ZxY--!!!WKW"
  1445.   if [ $? != 0 ] ; then # exit code of last command
  1446.     echo "ZxY--!!!WKW not found"
  1447.   fi
  1448.   echo "enough... type 'man bash' if you want more info."
  1449.   ______________________________________________________________________
  1450.  
  1451.  
  1452.  
  1453.   10.2.  C for Yourself
  1454.  
  1455.  
  1456.   Under UNIX, the system language is C, love it or hate it. Scores of
  1457.   other languages (Java, FORTRAN, Pascal, Lisp, Basic, Perl, awk...) are
  1458.   also available.
  1459.  
  1460.   Taken for granted that you know C, here are a couple of guidelines for
  1461.   those of you who have been spoilt by Turbo C++ or one of its DOS kin.
  1462.   Linux's C compiler is called gcc and lacks all the bells and whistles
  1463.   that usually accompany its DOS counterparts: no IDE, on-line help,
  1464.   integrated debugger, etc. It's just a rough command-line compiler,
  1465.   very powerful and efficient. To compile your standard hello.c you'll
  1466.   do:
  1467.  
  1468.  
  1469.  
  1470.        $ gcc hello.c
  1471.  
  1472.  
  1473.  
  1474.  
  1475.   which will create an executable file called a.out. To give the
  1476.   executable a different name, do
  1477.  
  1478.  
  1479.  
  1480.        $ gcc -o hola hello.c
  1481.  
  1482.  
  1483.  
  1484.  
  1485.   To link a library against a program, add the switch -l<libname>. For
  1486.   example, to link in the math library:
  1487.  
  1488.  
  1489.  
  1490.        $ gcc -o mathprog mathprog.c -lm
  1491.  
  1492.  
  1493.  
  1494.  
  1495.   (The -l<libname> switch forces gcc to link the library
  1496.   /usr/lib/lib<libname>.so; so -lm links /usr/lib/libm.so).
  1497.  
  1498.   So far, so good. But when your prog is made of several source files,
  1499.   you'll need to use the utility make. Let's suppose you have written an
  1500.   expression parser: its source file is called parser.c and #includes
  1501.   two header files, parser.h and xy.h. Then you want to use the routines
  1502.   in parser.c in a program, say, calc.c, which in turn #includes
  1503.   parser.h. What a mess! What do you have to do to compile calc.c?
  1504.  
  1505.   You'll have to write a so-called Makefile, which teaches the compiler
  1506.   the dependencies between sources and objects files. In our example:
  1507.  
  1508.  
  1509.  
  1510.  
  1511.  
  1512.  
  1513.  
  1514.  
  1515.  
  1516.  
  1517.  
  1518.  
  1519.   ______________________________________________________________________
  1520.   # This is Makefile, used to compile calc.c
  1521.   # Press the <TAB> key where indicated!
  1522.  
  1523.   calc: calc.o parser.o
  1524.   <TAB>gcc -o calc calc.o parser.o -lm
  1525.   # calc depends on two object files: calc.o and parser.o
  1526.  
  1527.   calc.o: calc.c parser.h
  1528.   <TAB>gcc -c calc.c
  1529.   # calc.o depends on two source files
  1530.  
  1531.   parser.o:  parser.c parser.h xy.h
  1532.   <TAB>gcc -c parser.c
  1533.   # parser.o depends on three source files
  1534.  
  1535.   # end of Makefile.
  1536.   ______________________________________________________________________
  1537.  
  1538.  
  1539.  
  1540.   Save this file as Makefile and type make to compile your program;
  1541.   alternatively, save it as calc.mak and type make -f calc.mak, and of
  1542.   course RMP. You can invoke some help about the C functions, that are
  1543.   covered by man pages, section 3; for example,
  1544.  
  1545.  
  1546.  
  1547.        $ man 3 printf
  1548.  
  1549.  
  1550.  
  1551.  
  1552.   To debug your programs, use gdb. info gdb to learn how to use it.
  1553.  
  1554.   There are lots of libraries available; among the first you'll want to
  1555.   use are ncurses (textmode effects), and svgalib (console graphics). If
  1556.   you feel brave enough to tackle X11 programming (it's not that
  1557.   difficult), there are several libraries that make writing X11 programs
  1558.   a breeze. Have a look at <http://www.xnet.com/~blatura/linapp6.html>,
  1559.   bearing in mind that Gtk is becoming a Linux standard.
  1560.  
  1561.   Many editors can act as an IDE; emacs and jed, for instance, also
  1562.   feature syntax highlighting, automatic indent, and so on.
  1563.   Alternatively, get the package rhide from
  1564.   <ftp://sunsite.unc.edu:/pub/Linux/devel/debuggers/>.  It's a Borland
  1565.   IDE clone, and chances are that you'll like it.
  1566.  
  1567.  
  1568.  
  1569.   11.  The Remaining 1%
  1570.  
  1571.  
  1572.   Much more than 1%, actually...
  1573.  
  1574.  
  1575.  
  1576.   11.1.  Using tar and gzip
  1577.  
  1578.  
  1579.   Under UNIX there are some widely used applications to archive and
  1580.   compress files. tar is used to make archives---it's like PKZIP or
  1581.   Winzipbut it doesn't compress, it only archives. To make a new
  1582.   archive:
  1583.  
  1584.  
  1585.        $ tar -cvf <archive_name.tar> <file> [file...]
  1586.  
  1587.  
  1588.  
  1589.  
  1590.   To extract files from an archive:
  1591.  
  1592.  
  1593.  
  1594.        $ tar -xpvf <archive_name.tar> [file...]
  1595.  
  1596.  
  1597.  
  1598.  
  1599.   To list the contents of an archive:
  1600.  
  1601.  
  1602.  
  1603.        $ tar -tf <archive_name.tar> | less
  1604.  
  1605.  
  1606.  
  1607.  
  1608.   You can compress files using compress, which is obsolete and shouldn't
  1609.   be used any more, or gzip:
  1610.  
  1611.  
  1612.  
  1613.        $ compress <file>
  1614.        $ gzip <file>
  1615.  
  1616.  
  1617.  
  1618.  
  1619.   that creates a compressed file with extension .Z (compress) or .gz
  1620.   (gzip). These programs can compress only one file at a time.  To
  1621.   decompress:
  1622.  
  1623.  
  1624.  
  1625.        $ compress -d <file.Z>
  1626.        $ gzip -d <file.gz>
  1627.  
  1628.  
  1629.  
  1630.  
  1631.   RMP.
  1632.  
  1633.   There are also the unarj, zip and unzip (PK??ZIP compatible)
  1634.   utilities. Files with extension .tar.gz or .tgz (archived with tar,
  1635.   then compressed with gzip) are as common in the UNIX world as .ZIP
  1636.   files are under DOS. Here's how to list the contents of a
  1637.    .tar.gz archive:
  1638.  
  1639.  
  1640.  
  1641.        $ tar -ztf <file.tar.gz> | less
  1642.  
  1643.  
  1644.  
  1645.  
  1646.  
  1647.  
  1648.  
  1649.  
  1650.  
  1651.   11.2.  Installing Applications
  1652.  
  1653.  
  1654.   First of all: installing packages is root's work. Most Linux
  1655.   applications are distributed as a .tar.gz archive, which typically
  1656.   will contain a directory aptly named containing files and/or
  1657.   subdirectories.  A good rule is to install these packages from
  1658.   /usr/local with the command
  1659.  
  1660.  
  1661.  
  1662.        # tar -zxf <archive.tar.gz>
  1663.  
  1664.  
  1665.  
  1666.  
  1667.   reading then the README or INSTALL file. In most cases, the
  1668.   application is distributed in source, which you'll have to compile;
  1669.   often, typing make then make install will suffice. If the archive
  1670.   contains a configure script, run it first.  Obviously, you'll need the
  1671.   gcc or g++ compiler.
  1672.  
  1673.   Other archives have to be unpacked from /; this is the case with
  1674.   Slackware's .tgz archives. Other archives contain the files but not a
  1675.   subdirectory - careful not to mess things up!. Always list the
  1676.   contents of the archive before installing it.
  1677.  
  1678.   Debian and Red Hat have their own archive format; respectively, .deb
  1679.   and .rpm. The latter is gaining wide acceptance; to install an rpm
  1680.   package, type
  1681.  
  1682.  
  1683.  
  1684.        # rpm -i package.rpm
  1685.  
  1686.  
  1687.  
  1688.  
  1689.  
  1690.  
  1691.   11.3.  Tips You Can't Do Without
  1692.  
  1693.  
  1694.   Backscrolling: pressing <SHIFT + PAG UP> (the grey key) allows you to
  1695.   backscroll a few pages, depending on how much video memory you have.
  1696.  
  1697.   Resetting the screen: if you happen to more or cat a binary file, your
  1698.   screen may end up full of garbage. To fix it, blind type reset or this
  1699.   sequence of characters: echo CTRL-V ESC c RETURN.
  1700.  
  1701.   Pasting text: in console, see below; in X, click and drag to select
  1702.   the text in an xterm window, then click the middle button (or the two
  1703.   buttons together if you have a two-button mouse) to paste. There is
  1704.   also xclipboard (alas, only for text); don't get confused by its very
  1705.   slow response.
  1706.  
  1707.   Using the mouse: if you installed gpm, a mouse driver for the console,
  1708.   you can click and drag to select text, then right click to paste the
  1709.   selected text. It works across different VCs.
  1710.  
  1711.   Messages from the kernel: have a look at /var/adm/messages or
  1712.   /var/log/messages as root to see what the kernel has to tell you,
  1713.   including bootup messages. The command dmesg is also handy.
  1714.  
  1715.  
  1716.  
  1717.   11.4.  Where to Find Applications
  1718.  
  1719.  
  1720.   If you're wondering whether you can replace your old and trusted
  1721.   DOS/Win application with a Linux one, I suggest that you browse the
  1722.   main Linux software repositories: <ftp://sunsite.unc.edu/pub/Linux>,
  1723.   <ftp://tsx-11.mit.edu/pub/linux>, and <ftp://ftp.funet.fi/pub/Linux>.
  1724.   Other good starting places are the ``Linux Applications and Utilities
  1725.   Page'' <http://www.xnet.com/~blatura/linapps.shtml>, and the
  1726.   ``official'' Linux page  <http://www.linux.org>.
  1727.  
  1728.  
  1729.  
  1730.   11.5.  A Few Things You Couldn't Do
  1731.  
  1732.  
  1733.   Linux can do an awful lot of things that were cumbersome, difficult or
  1734.   impossible do to with DOS/Windows. Here's a short list that may whet
  1735.   your appetite:
  1736.  
  1737.  
  1738.   ╖  at allows you to run programs at a specified time;
  1739.  
  1740.   ╖  awk is a simple yet powerful language to manipulate data files (and
  1741.      not only). For example, being data.dat your multi field data file,
  1742.  
  1743.  
  1744.  
  1745.        $ awk '$2 ~ "abc" {print $1, "\t", $4}' data.dat
  1746.  
  1747.  
  1748.  
  1749.  
  1750.  
  1751.   prints out fields 1 and 4 of every line in data.dat whose second field
  1752.   contains ``abc''.
  1753.  
  1754.   ╖  cron is useful to perform tasks periodically, at specified date and
  1755.      time. Type man 5 crontab.
  1756.  
  1757.   ╖  file <filename> tells you what filename is (ASCII text, executable,
  1758.      archive, etc.);
  1759.  
  1760.   ╖  find (see also Section ``Directories: Translating Commands'') is
  1761.      one of the most powerful and useful commands. It's used to find
  1762.      files that match several characteristics and perform actions on
  1763.      them. General use of find is:
  1764.  
  1765.  
  1766.  
  1767.        $ find <directory> <expression>
  1768.  
  1769.  
  1770.  
  1771.  
  1772.  
  1773.   where <expression> includes search criteria and actions. Examples:
  1774.  
  1775.  
  1776.  
  1777.        $ find . -type l -exec ls -l {} \;
  1778.  
  1779.  
  1780.  
  1781.  
  1782.  
  1783.   finds all the files that are symbolic links and shows what they point
  1784.   to.
  1785.  
  1786.  
  1787.  
  1788.        $ find / -name "*.old" -ok rm {} \;
  1789.  
  1790.  
  1791.  
  1792.  
  1793.  
  1794.   finds all the files matching the pattern and deletes them, asking for
  1795.   your permission first.
  1796.  
  1797.  
  1798.  
  1799.        $ find . -perm +111
  1800.  
  1801.  
  1802.  
  1803.  
  1804.  
  1805.   finds all the files whose permissions match 111 (executable).
  1806.  
  1807.  
  1808.  
  1809.        $ find . -user root
  1810.  
  1811.  
  1812.  
  1813.  
  1814.  
  1815.   finds all the files that belong to root. Lots of possibilities
  1816.   here---RMP.
  1817.  
  1818.   ╖  grep finds text patterns in files. For example,
  1819.  
  1820.  
  1821.  
  1822.        $ grep -l "geology" *.tex
  1823.  
  1824.  
  1825.  
  1826.  
  1827.  
  1828.   lists the files *.tex that contain the word ``geology''. The variant
  1829.   zgrep works on gzipped files. RMP;
  1830.  
  1831.   ╖  regular expressions are a complex but darn powerful way of
  1832.      performing search operations on text. For example, ^a[^a-
  1833.      m]X{4,}txt$ matches a line that starts with `a', followed by any
  1834.      character except those in the interval a-m, followed by 4 or more
  1835.      `X', and ends in `txt'. You use regular expressions with advanced
  1836.      editors, less, and many other applications. man grep for an
  1837.      introduction.
  1838.  
  1839.   ╖  script <script_file> dumps the screen contents on script_file until
  1840.      you issue the command exit. Useful for debugging;
  1841.  
  1842.   ╖  sudo allows users to perform some of root's tasks (e.g.  formatting
  1843.      and mounting disks; RMP);
  1844.  
  1845.   ╖  uname -a gives you info about your system;
  1846.  
  1847.   ╖  zcat and zless are useful for browsing and piping gzipped files
  1848.      without decompressing them. For example:
  1849.        $ zless textfile.gz
  1850.        $ zcat textfile.gz | lpr
  1851.  
  1852.  
  1853.  
  1854.  
  1855.  
  1856.   ╖  The following commands often come in handy: bc, cal, chsh, cmp,
  1857.      cut, fmt, head, hexdump, nl, passwd, printf, sort, split, strings,
  1858.      tac, tail, tee, touch, uniq, w, wall, wc, whereis, write, xargs,
  1859.      znew. RMP.
  1860.  
  1861.  
  1862.  
  1863.   11.6.  Practicing UNIX under DOS/Windows
  1864.  
  1865.  
  1866.   Believe it or not, there are fine tools that provide a UNIX-like
  1867.   environment under DOS/Windows! One is the Djgpp suite (
  1868.   <http://www.delorie.com/djgpp>) for DOS, while Cygnus (
  1869.   <http://www.cygnus.com>) is a more complex port for Win32. Both
  1870.   include the same GNU development tools and utilities as Linux; you
  1871.   won't get the same stability and performance, though.
  1872.  
  1873.   If you'd like to have a taste of Linux, try out Djgpp. Download and
  1874.   install the following files (as of this writing, the latest version is
  1875.   2.02): djdev202.zip, bnu281b.zip, bsh1147b.zip, fil316b.zip,
  1876.   find41b.zip, grep22b.zip, gwk303b.zip, lss332b.zip, shl112b.zip..
  1877.   Installation instructions are provided, and you can find assistance on
  1878.   <news:comp.os.msdos.djgpp>.
  1879.  
  1880.   In particular, using bash under DOSWin is a whiff of fresh air. To
  1881.   configure it properly, edit the supplied file BOOT.BAT to reflect your
  1882.   installation, then put these files in your home directory (in the
  1883.   Windows partition) instead of those provided:
  1884.  
  1885.  
  1886.  
  1887.        # this is _bashrc
  1888.  
  1889.        LS_OPTIONS="-F -s --color=yes"
  1890.        alias cp='cp -i'
  1891.        alias d='ls -l'
  1892.        alias l=less
  1893.        alias ls="ls $LS_OPTIONS"
  1894.        alias mv='mv -i'
  1895.        alias rm='rm -i'
  1896.        alias u='cd ..'
  1897.  
  1898.  
  1899.  
  1900.  
  1901.  
  1902.  
  1903.  
  1904.  
  1905.  
  1906.  
  1907.  
  1908.  
  1909.  
  1910.  
  1911.  
  1912.  
  1913.  
  1914.  
  1915.   # this is _bprof
  1916.   if [ -f ~/_bashrc ]; then
  1917.     . ~/_bashrc
  1918.   fi
  1919.   PS1='\w\$ '
  1920.   PS2='> '
  1921.   CDPATH="$CDPATH:~"
  1922.   # stuff for less(1)
  1923.   LESS="-M-Q"                     # long prompt, silent
  1924.   LESSEDIT="%E ?lt+%lt. %f"       # edit top line
  1925.   VISUAL="jed"                    # editor
  1926.   LESSCHARSET=latin1              # visualise accented letters
  1927.   export PS1 PS2 CDPATH LS_OPTIONS LESS LESSEDIT LESSOPEN VISUAL LESSCHARSET
  1928.  
  1929.  
  1930.  
  1931.  
  1932.  
  1933.  
  1934.   11.7.  Common Extensions and Related Programs
  1935.  
  1936.  
  1937.   You may come across scores of file extensions. Excluding the more
  1938.   exotic ones (i.e. fonts, etc.), here's a list of who's what:
  1939.  
  1940.  
  1941.   ╖  1 ... 8: man pages. Read them with groff -Tascii -man <file.1>.
  1942.  
  1943.   ╖  arj: archive made with arj.
  1944.  
  1945.   ╖  dvi: output file produced by TeX (see below). xdvi to visualise it;
  1946.      dvips to turn it into a PostScript .ps file.
  1947.  
  1948.   ╖  gz: archive made with gzip.
  1949.  
  1950.   ╖  info: info file (sort of alternative to man pages). Get info.
  1951.  
  1952.   ╖  lsm: Linux Software Map file. It's a plain ASCII file containing
  1953.      the description of a package.
  1954.  
  1955.   ╖  ps: PostScript file. To visualise or print it get gs and,
  1956.      optionally, ghostview or gv.
  1957.  
  1958.   ╖  rpm: Red Hat package. You can install it on any system using the
  1959.      package manager rpm.
  1960.  
  1961.   ╖  taz, tar.Z: archive made with tar and compressed with compress.
  1962.  
  1963.   ╖  tgz, tar.gz: archive made with tar and compressed with gzip.
  1964.  
  1965.   ╖  tex: text file to submit to TeX, a powerful typesetting system.
  1966.      Get the package tex, available in many distributions.
  1967.  
  1968.   ╖  texi: texinfo file, can produce both TeX and info files (cp.
  1969.      info). Get texinfo.
  1970.  
  1971.   ╖  xbm, xpm, xwd: graphic file.
  1972.  
  1973.   ╖  Z: archive made with compress.
  1974.  
  1975.  
  1976.  
  1977.   11.8.  Converting Files
  1978.  
  1979.  
  1980.  
  1981.   If you need to exchange text files between DOS/Win and Linux, be aware
  1982.   of the ``end of line'' problem. Under DOS, each line of text ends with
  1983.   CR/LF (that is, ASCII 13 + ASCII 10), with LF under Linux. If you edit
  1984.   a DOS text file under Linux, each line will likely end with a
  1985.   strange--looking `M' character; a Linux text file under DOS will
  1986.   appear as a kilometric single line with no paragraphs. There are a
  1987.   couple of tools, dos2unix and unix2dos, to convert the files.
  1988.  
  1989.   If your text--only files contain accented characters, make sure they
  1990.   are made under Windows (with Notepad) and not under plain DOS;
  1991.   otherwise, all accented characters will be screwed up.
  1992.  
  1993.   To convert Word or WordPerfect files to plain text, the matter is a
  1994.   bit trickier but possible. You'll need one of the tools that can be
  1995.   found on the CTAN sites; one is  <ftp://ftp.tex.ac.uk>.  Get the
  1996.   program word2x from the directory /pub/tex/tools/, or try one the
  1997.   programs available in directory /pub/tex/support/. In particular,
  1998.   word2x converts Word 6 files, while for Word 97 files you'll need
  1999.   mswordview ( <http://www.csn.ul.ie/~caolan/docs/MSWordView.html>) that
  2000.   turns them to HTML.
  2001.  
  2002.  
  2003.  
  2004.   11.9.  Free Office Suites
  2005.  
  2006.  
  2007.   If converting files is not enough, you have the choice of sinking your
  2008.   teeth into a (free!) Microsoft Office--like package.
  2009.  
  2010.   The StarOffice suite is free for private use. It's big, somewhat slow,
  2011.   but very good anyway: it offers a lot of functionality not found in
  2012.   Microsoft Office. It can also read and write Word and Excel files,
  2013.   although the conversion isn't always perfect. Home page:
  2014.   <http://www.stardivision.com>.
  2015.  
  2016.   Another good package is Corel WordPerfect, a free edition of which is
  2017.   available for download. Should I say more? Go fetch it:
  2018.   <http://www.corel.com>.
  2019.  
  2020.  
  2021.  
  2022.   12.  The End, for Now
  2023.  
  2024.  
  2025.   Congratulations! You have now grasped a little bit of UNIX and are
  2026.   ready to start working. Remember that your knowledge of the system is
  2027.   still limited, and that you are expected to do more practice with
  2028.   Linux to use it comfortably. But if all you had to do was get a bunch
  2029.   of applications and start working with them, what I included here is
  2030.   enough.
  2031.  
  2032.   I'm sure you'll enjoy using Linux and will keep learning more about
  2033.   it---everybody does. I bet, too, that you'll never go back to DOSWin!
  2034.   I hope I made myself understood and did a good service to my 3 or 4
  2035.   readers.
  2036.  
  2037.  
  2038.  
  2039.   12.1.  Copyright
  2040.  
  2041.  
  2042.   Unless otherwise stated, Linux HOWTO documents are copyrighted by
  2043.   their respective authors. Linux HOWTO documents may be reproduced and
  2044.   distributed in whole or in part, in any medium physical or electronic,
  2045.   as long as this copyright notice is retained on all copies. Commercial
  2046.   redistribution is allowed and encouraged; however, the author would
  2047.   like to be notified of any such distributions.
  2048.  
  2049.   All translations, derivative works, or aggregate works incorporating
  2050.   any Linux HOWTO documents must be covered under this copyright notice.
  2051.   That is, you may not produce a derivative work from a HOWTO and impose
  2052.   additional restrictions on its distribution. Exceptions to these rules
  2053.   may be granted under certain conditions; please contact the Linux
  2054.   HOWTO coordinator at the address given below.
  2055.  
  2056.   In short, we wish to promote dissemination of this information through
  2057.   as many channels as possible. However, we do wish to retain copyright
  2058.   on the HOWTO documents, and would like to be notified of any plans to
  2059.   redistribute the HOWTOs.
  2060.  
  2061.   If you have questions, please contact Tim Bynum, the Linux HOWTO
  2062.   coordinator, at  <linux-howto@sunsite.unc.edu> via email.
  2063.  
  2064.  
  2065.  
  2066.   12.2.  Disclaimer
  2067.  
  2068.  
  2069.   ``From DOS to Linux HOWTO'' was written by Guido Gonzato,
  2070.   <REMOVE_MEguido@ibogeo.df.unibo.it>. (Remove ``REMOVE_ME''.)  Many
  2071.   thanks to Matt Welsh, the author of ``Linux Installation and Getting
  2072.   Started'', to Ian Jackson, the author of ``Linux frequently asked
  2073.   questions with answers'', to Giuseppe Zanetti, the author of
  2074.   ``Linux'', to all the folks who emailed me suggestions, and especially
  2075.   to Linus Torvalds and GNU who gave us Linux.
  2076.  
  2077.   This document is provided ``as is''. I put great effort into writing
  2078.   it as accurately as I could, but you use the information contained in
  2079.   it at your own risk. In no event shall I be liable for any damages
  2080.   resulting from the use of this work.
  2081.  
  2082.   Feedback is welcome. For any requests, suggestions, flames, etc., feel
  2083.   free to contact me.
  2084.  
  2085.   Enjoy Linux and life,
  2086.  
  2087.   Guido   =8-)
  2088.  
  2089.  
  2090.  
  2091.  
  2092.  
  2093.  
  2094.  
  2095.  
  2096.  
  2097.  
  2098.  
  2099.  
  2100.  
  2101.  
  2102.  
  2103.  
  2104.  
  2105.  
  2106.  
  2107.  
  2108.  
  2109.  
  2110.  
  2111.  
  2112.  
  2113.