(DOS) BEGINNER'S GUIDE TO LINUX v0.95a
--------------------------------------
Edited by Chuck Boyer
(boyer@sumax.seattleu.edu)
4/6/92

FOR LINUX v0.95
by Linus Torvalds
=======================
The structure of this GUIDE is basically;

INTRODUCTION
GENERAL SETTING UP
GENERAL USAGE OF LINUX
  LISTING DIRECTORIES/FILES
  CREATING FILES/REMOVING
  DIRECTORIES
COMMANDS AND THEIR USAGE
  (EXTENSIVE LISTING)
APPENDIX A: ERROR CODES AND THEIR MEANINGS
APPENDIX B: COMMANDS SUMMARY (QUICK LISTING)
APPENDIX C: BACKUP
APPENDIX D: MTOOLS
APPENDIX F: EXTRA HINTS
=======================
(The inclusion of 'APPENDIX G:' may be questionable by some netters
as to why it has been included into this guide. DOS users' going 
over to Linux/unix 'will' print out all of this guide, and they 
will use it as a 'reference'. It is to this purpose that I have 
included it here. So that they can 'see' what another persons setup
looks like, so when they make gross errors -erasing their entire 
drive- for instance, they can see what is where, what is what. Also
it might address the issue, insofar as it is 
unstructured/unaddressed in any other format, 'what do I need to 
get Linux up and running?' type questions.)
========================

I, too, am a 'beginner' unix system user, so much of the 
explanations found here have been 'donated' in time and effort by 
programmers/concerned users of Linux from the 'alt.os.linux' 
(or 'comp.os.linux' ) newsfeed.

Anyway, back to installation of Linux on your machine. Basically,
you can run Linux one of two ways; either from your floppy drives 
only, or from your hard disk/drive. If you just want to play around
with Linux and get the 'look and feel' of using a Unix Operating 
System (as opposed to a DOS operating system) then you might want 
to choose to just run it from the floppy drive. Basically, the 
logic here would be that, you don't want to screw up anything on 
your hard drive (which is loaded with Windows, word processors, 
graphics programs, data-base programs, etc.), and you have either 
spent long and hard learning hours to have it set up that way, or 
you had someone else set it up for you and you wouldn't have a clue

on how to re-set it up yourself. Running Linux from your floppy 
disk drive will not screw up your hard drive, basically. There 
'are' programs on the Linux disks that you will have access to 
that 'can' ruin your hard drive though. (typing 'mkfs /dev/hda' for
instance may render your hard drive unreadable by DOS, but then you
wouldn't know how to do that yet...). Or, you could run Linux from 
booting from the floppy drive and thereafter having it run from the
hard disk drive. The differences between these two methods are that
Linux will run a lot (10 times?) slower if you choose to run it 
solely from the floppy disk drive, and you will be limited to the 
commands and utilities that you can run using the floppy drive only
situation. On the other hand, running from the hard disk drive will
run Linux much faster/quicker as well as give you space to have 
many more programs and utilities to run/use, but it also entails 
you having to learn to 1) create a Linux partition on your hard 
disk drive, and 2) learning how to maintain this partition with a 
handfull of sub-directories. 
--------------------------------------------------------- 
FTP'ing the Linux files. 
========================

I will use the ftp archive machine site location 'tsx-11.mit.edu'
as the example for getting the Linux files.

When you log onto tsx-11 you will move down the sub-directory tree
to pub first; 'cd pub(ENTER)', then move down one more tree node;
'cd linux(ENTER)', and finally into the INSTALL directory; 
'cd INSTALL(ENTER)'. In mails you will see the location listed like
this;

% /pub/linux/INSTALL
total 28

INSTALL-0.11  
RELNOTES-0.95 
bootimage-0.95a.Z
rawrite.doc
rawrite.exe
rootimage-0.95a.Z

You can grab INSTALL-0.11 for instructions on how to set up your
hard drive for Linux. You want to get 'bootimage-0.95.Z',
'rootimage-0.95.Z', 'rawrite.exe', 'rawrite.doc'.

Once you 'get bootimage-0.95.Z' (and the others) you will have them
on your host computer which is probably also a unix machine (or a
unix variable). Uncompress the bootimage and rootimage files.
Then transfer the three files to your DOS box. Here you will use
'rawrite.exe' to transfer (directly copy) the 'rootimage' and 
'bootimage' file from your hard drive (DOS) to floppy disks.

rawrite(ENTER)
'rawrite' will ask you for the filename you want to transfer,
give it the name you have called the file, our example assumes;
'bootimage'. 'rawrite' will ask for the destination drive. Give
it 'a:(ENTER)' and the writing/transfer of the bootimage file will
process to drive a: (this will for most cases be a 1.2Mb
high-density
disk in drive a:).
Then follow the same process for 'rootimage'.
'rawrite(ENTER)'
'file to be transfered: rootimage(ENTER)'
'destination drive: a:(ENTER)'

You now have two separate disks; one for bootimage and one for 
rootimage.

You now put the 'bootimage' disk in drive a:, lock the drive
on and reboot your computer. It will churn away for a few moments,
giving you the message; 'Loading...........................'
and then it will ask you to insert the 'rootimage' disk into drive.
Take out the bootimage disk and insert and lock in the 'rootimage'
disk and hit enter (ENTER). Linux will now boot up.

You can now run Linux 0.95a Operating System. You now have a unix
operating system with all of the basic utilities for reading a
file,
setting up the hard disk to receive Linux files, and other things.

You can also set up the 'bootimage' disk, by editing it, to read
your hard-drive partition which is a Linux partition instead of the
floppy drive at boot time.  Instructions for doing this are
found in the 'INSTALLATION.0.11' document found on Linux ftp sites,
plus the excellent guide 'Beginner's Guide' produced by Iian also
available at most Linux ftp sites.


Okay, you've gotten Linux up and operating. Here I will describe 
the tools and their usage that you will need for getting around, 
looking at things, creating a few useful/helpful things. You will 
first want to know how to turn on the lights, as it's pretty dark 
in here with only a blank screen and a prompt symbol '#' with a 
blinking cursor. I'd like to say now that this is an entirely 
different world for you than you are used to in DOS, with it's 
fancy programs for menuing, fancy batch files, interfaces... though
you can implement all of that in Linux/unix too, to begin with it 
will be a cold, blank screen with a prompt and blinking cursor. 


Once you've been around for awhile you will notice a change in your
attitude about this blank prompt and cursor (the command line) in 
that you will realize that armed with the knowledge of lots of 
commands and utilities to perform them that you have an extreme 
sense of power. Power to do things right and power to do things 
wrong. Your blank command prompt is where you do it all, perform 
all of the functions that do everything that is possible to be
done.

I wanted to mention that because as you go further and further 
along you will at some point know so many commands that you will 
once at least do a command wrong and will have erase everything on 
your Linux partition, so everything is gone, all of the whizzing, 
speeding power is gone. It happens to all of us, it is part of the 
learning process in the learning curve. So, learn now, to make 
backups of everything as you go along. 

Back up everything to floppy diskettes. If all that you have is the
rootimage and bootimage then just 'rawrite' another bootimage and 
another rootimage and you have your backups there. Once you start 
collecting/adding things, though (compiler stuff, pcomm12b 
telecommunications program, extra utilities, kermit, etc...) then 
back those up to floppies. Copy your utilities to a disk, with 
'compress' and 'uncompress' and 'tar' on it. Then tar and compress 
directories full of utilities and copy those over to the floppy 
disks. This process is covered in 'Appendix D: Backup'.

======================
GENERAL USAGE OF LINUX
======================

LISTING FILES AND DIRECTORIES:
=============================
command:  ls

Being at a blank screen and a prompt symbol ("#") is pretty bleak,
you want to turn on the lights and see where you are. Well, you're
in a directory tree structure with directories and files... 
The 'ls' command lists the files and directories. In DOS you would
use the 'dir' command. 'dir' in DOS has some command line switches
to allow you to have different types of lists of the files. 
'dir' presents a listing of the files in a straight vertical
listing.

'dir/w' lists the files in horizontal columns, allowing you to see
all of the files on one screen in a large directory filled with 
files. 'dir/p' allows the vertical listing, but stops the listing 
from scrolling past the screen, by stopping it at each page full.

In Linux/unix systems 'ls' does the same, and more, with different 
types of ways of listing the files to screen. 'ls' gives a vertical
listing with the filenames separated by tabs. 'ls -l' gives the 
horizontal listing. 'ls -a' would give the standard vertical 
listing, plus give you the listing of 'hidden' files, 'dot' files 
as they are called, like; '.login', or '.profile', etc. 'ls -R' 
gives you a 'recursive' listing where you have it list all of the 
files in subsequent directories below the directory that you are 
currently in. 'ls -F' puts '/' after directories, so you can tell 
them apart from the filenames. You can stack the switches in the 
same command line argument also;

'ls -lFR' would give you a long, horizontal listing with 
directories listed with the '/' sign, and a recursive listing of 
subsequent directories/files.  You can also send the output of the 
command 'ls' to a file;

'ls -lFR > files' would not print the listing to screen. Instead it
would be quiet for a moment and return you to your prompt with 
itself placing the results into a file named 'files' which you can 
then read at your leisure. (read the file with 'more files'. 'more 
is a file pager, it lists the contents of the file to screen, 
stopping at each page/screen full waiting for you to hit the 
spacebar before it will continue on to the next page/screen full.)
This is called, in unix/Linux terminology, redirecting the output
of the 'ls' command to a file, or stdout. 'stdin' is where the
input is coming from. ('stdin'=standard in, 'stdout'=standard out).
Here, stdin is coming from the 'ls' command, with its' switches
(lFR) and being directed (the '>' is a director symbol) to stdout
which is the filename files, which gets created by this process.

'root' refers to the beginning of your file system on the physical 
hard drive partition you have created and are booting Linux 
from/to. Directories are like different file drawers, the dividers 
in the file drawer are like sub-directories, and the files are just
like files in the file drawer. Root is the name of the file cabinet
itself. It holds the filesystem.

Another way of thinking of directories and sub-directories/files
is to look at a couple of graphic examples;

/(root)|
       | /bin----------------------------|df
       | /binary--------------------|    |fdisk
       | /lib------------------|    |    |compress
       | /mnt-------------     |    |    |mount
       | /tmp--------|         |    |libbin.Z
       | /usr-|                |    |pcomm.tar.Z
              |                |libc.a
              |/bin--|umount
                     |uncompress

In the examples, the '/' (slash mark) signifies a directory in the
listed node, without the '/' it is a file is the listed node.
So, under 'root' are sub-directories; /bin, /binary, /lib,
/mnt, /tmp, and /usr, and another directory named /bin is a
subdirectory under /usr which contains the two files; umount and 
uncompress.

(In DOS your directory indicator would be the '\' symbol. You
should take careful note of the differences in the two Operating
Systems' usage of these symbols.)

When you use some utilities, like cat, mv, ln ... you will be
able to move a file from where you are, in that directory, to
some other directory down from the '/root' by typing in the
complete pathname. So, for instance, in our example you could
move /bin/compress to /usr/bin (and keep the same filename);
'mv compress /usr/bin' (if you are in the directory that has
compress in it, otherwise the shell just complains about not
finding it, nothing harmful...) or;

'mv /bin/compress /usr/bin' from anywhere else in the directory
structure that you may be in.

Here's another way of illustrating it;
                           ------
                   /------| root |  --------\-------\
                /        / ------ \          \       \
       ----- /     --------   -----    ----- \ ----- \ -----
      | bin |     | binary | | lib |  | mnt | | tmp | | usr |
     / -----       --------   -----    -----   -----   -----
   /   |   |        | |         |                       |
 df fdisk  compress | libbin.Z  libc.a                 -----
                    pcomm.tar.Z                       | bin |
                                                     / -----
                                                    |     \
                                                    | uncompress
                                                        umount
                                                              
So, that's an illustration that's like an 'organization structure'
graphic.

To move back up the directory structure you would issue the
command;

'cd ..'
So, if you were in '/binary' subdirectory and issued; 'cd ..'
then you would move up/backwards to '/root'. You can 'cd' from
being in the '/usr/bin' directory to be in the '/bin' directory;
(which is a jump, not just a backup move).

'cd /bin'

'df' gives you a readout of the used and available space on any
mounted drive/partition. So; hard drive 1, 2nd partition;

'df /dev/hda2'

would give a listing;

#/dev/hda2 23000

the device name and the bytes amount would be shown.

'ls' is the command like 'dir' in DOS, it lists files, directories
to stdout (terminal/screen/monitor).  You can do an 'ls' listing
of any directory in the system, you need not be in the directory
that you are wishing a listing of the files/sub-directories of.

'ls -l /usr/bin' <--- prints to screen all files/directories there.

'ls -l /usr/bin > filelist' <--- prints to filename 'filelist',
        creating it as a textfile with the output of the 'ls'
        command. Read this list with page scrolling on with;

'more filelist'.



While we are at it, now is a good time to explain again some
terminology  here. Listing the contents of a file to
screen/terminal/monitor has
a proper terminology name for this process in Linux/unix.  One 
would say; 'more lists the contents of the file to stdout (standard
out) and 'stdout' in Linux/unix is the terminal/screen/monitor.
'stdin' is the keyboard. 'From stdin to stdout' means from the 
keyboard to the screen. And in the previous example of explaining
stdin and stdout you have seen that the physical location
represented by the terms stdin and stdout can be changed. stdin
isn't just the keyboard, you can have input going from one file to
another file, for instance, or instead of having stdout going to
the terminal screen it can be directed to a file, or another
process.

Here are the different switches that you can use in the 'ls'
listing
command line;

-C multi-column
-F '/' after directory names
-R recursively list subdirectories/files
-a standard plus hidden files ( '.' and '..')
-l long listing, with owner, size, time, mode.
-r reverse order

(may be others I may have missed, but these should suffice for your
beginning learning curve.)

CREATING and VIEWING FILES
============================
Besides using the 'em' (uemacs) text editor which comes with the 
Linux distribution you can use the 'cat' command to create files.

   'cat > list'
   one
   two
   three
   ctrl-d

   (type in; cat > list, hit ENTER key, type; one(ENTER),
two(ENTER),
   three(ENTER), hold down the Ctrl key and tap the d key).
   Would be using 'cat' to create the file. 

Here we are using the '>' sign to tell the shell (ash or bash) to
redirect the standard output (stdout) to a file which is called
'list' in this case.

   Now issue the 'cat' command to 'read' the file to stdout/screen;

   'cat list'
   one
   two
   three

   Using cat to list the contents of the file. 'cat' has many
helpful
   uses.

   'cat one >> two'

   Would append the filename 'one' onto the end of filename 'two'.
   Neat, huh? And this is where 'cat' gets its' name; concatenate,
   which means to append one to another. It must have been neat for
   the programmer when he/she created 'cat' to append one file to
the
   end of another to decide; "Well, if I can use it to write its'
   output to another file, why not redirect this output to stdout
   (screen) by just calling the command in a different way, without
   the 'directory' symbol ( > )!" And so it was created to be a
very 
   diverse utility command.

This brings up a good point; the '>' sign is a redirection sign as
used in this case. This sign can be used by any program that
interacts with the shell, not just the 'cat' utility. Also;
the symbols;  >, <, |, commands can be used for any program since
it is the shell that deals with them. This also applies to filename
wildcards like *, ?, {}, [], etc. Thus these features can be used
with any program, unlike DOS. The
program itself has no knowledge that they are being used -- the
shell
does it all.  cat got its name from the
ability to concatenate several files together, e.g.,
"cat one two > one+two" concatenates the contents of files one and
two
onto stdout (here the file one+two).

   You can only use 'cat' to list the contents of text files. It
won't
   work on 'binary' (executable) files.

(Actually it will work on any files. You only need to be concerned
with raw devices (which may need some specific blocksize). Of
course,
if you cat a binary file onto the screen, you may not find it very
enlightening.
**********
'cat > list'
one
two
three
ctrl-d

(type in; cat > list, hit ENTER key, type; one(ENTER), two(ENTER),
three(ENTER), hold down the Ctrl key and tap the d key).
Would be using 'cat' to create the file. 

Now issue the 'cat' command to 'read' the file to stdout/screen;

'cat list'
one
two
three

Using cat to list the contents of the file. 'cat' has many helpful
uses.

'cat one >> two'

Would append the filename 'one' onto the end of filename 'two'.
Neat, huh? And this is where 'cat' gets its' name; cancatenate,
which means to append one to another. It must have been neat for
the programmer when he/she created 'cat' to append one file to the
end of another to decide; "Well, if I can use it to write its'
output to another file, why not redirect this output to stdout
(screen) by just calling the command in a different way, without
the 'directory' symbol ( > )!" And so it was created to be a very 
diverse utility command.

You can only use 'cat' to list the contents of text files. It won't
work on 'binary' (executable) files.

There are many executable files which can be called 'command files'
in the Linux distribution, and many more that can be ported for 
usage there. I will only give examples of the basic needed command 
files to save space. One can always buy published books on the 
subject of Unix at any good bookstore. My goal here is only to get 
you off and started confidently on your way.

So, thus far we have listed the contents of a directory, and
created a file, and listed the contents of a file, and added one 
file to the end of another file.  

Now lets create directories and delete them. Remember that you are 
using this guide to learn the basic things in Linux/unix operating 
system environment, so it would make sense for you to actually try 
these examples out while reading about them. It is in the actual 
doing of them that you will see the sense involved in using them. 
It is not theory or philosophy, you must learn to use these tools.

'mkdir one' would create the directory 'one' right where you are in

your directory structure. Do an 'ls -l' and see the directory that 
you've just created. Do a 'cd one' to move into the subdirectory 
'one' that you've just created. 

Do a 'cat > two'
this is a test text file.
ctrl-d

Do an 'ls -l' and see the file 'two' listed. Do a 'cd ..' to 
(c)hange (d)irectory to the previous directory. Do a 'ls -l > 
files'. Do a 'mv files one' and the file will move into the 
subdirectory one that you previously created. 'cd one' to do an 'ls

-l' and you will now see the two files listed (two and files).

'more *' to see the contents of both files. (* is a wildcard 
placemarker and it means to include 'all' in the command). (With 
more you hit the spacebar to continue onto the next page/file, or
a 
carriage return/ENTER to move along line-by-line).

Do a 'rm -i *' and remove the two files. Do a 'cd ..' and do a
'rmdir one' and the directory that you created will be removed.
('rm' would remove/erase the files, 'rm -i' tells the shell to
prompt the users for confirmation 'delete file, yes?' which would
require an input of 'y' and ENTER, before it actually deleted the
file.)
 One somewhat useful way
to nuke directories (but dangerous): 'rm -r directoryname' will
recursively remove the contents (including subdirectories) of a
directory. 'rm -rf dirname' will silently override protections,
too.

So, that's creating and removing directories. You cannot remove a 
directory by the way until it is empty of files. Simple enough.

Next we will learn about head, tail, ln, mtools, mkdir, mkfs,
mknod, mkswap, more, mv, rm, rmdir, tar, compress/uncompress.
******************

   'head' reads to stdout the first 5 lines of a text file. Perhaps

10 lines. But head -5 for the first 5.

--More--
   use this when you don't want to waste the time filling the
entire 
   screen with text?

   'head filename' (where 'filename' is a variable provided by you 
   with the actual name of a file).

This is slightly confusing, since there are such things as shell
variables, and if you typed filename=foo (or set filename=foo in
csh),
then head $filename would do what you expect (occasionally useful).

   'tail' reads to stdout the last 10 lines of a text file.

tail -5 for five lines. tail +5 to start at line 5 and go to the
end.

   'tail filename'
*********************
'head' reads to stdout the first 5 lines of a text file. Perhaps
use this when you don't want to waste the time filling the entire 
screen with text?

'head filename' (where 'filename' is a variable provided by you 
with the actual name of a file).

'tail' reads to stdout the last 10 lines of a text file.

'tail filename'
*********************

   'ln' is the command to link one file to another. What's that?
Well,
   in the distribution you were given two command files; compress
and 
   uncompress. If you check out the file sizes with the 'ls -l' 
   command you will see that they are both exactly the same size in

   bytes. They are actually the same file. Just one is copied to
the 
   other with the 'cp' command. 

   One could have linked (ln) compress to uncompress and saved on
file 
   space because a link doesn't take up as much space as the actual

   file does in this case. Linux keeps a two byte space in a file 
   allocation table that is a place-holder for the computer to see 
   where a filename or directory actually exists on the physical
disk. 
   When you use 'ln' to link one file to another that actually
exists, 
   then the link filename is actually just a director using the 
   place-holder address, which tells the system that when this 
   filename is typed to go to the actual filename to execute the 
   command. A link only takes a few bytes. 

A good explanation, but I think slightly off. No doubt others will
correct you, but I think the actual situation is that the "file
allocation table" is in fact the directory itself, and it contains
a
list of names and corresponding inode numbers (which is what fsck
babbles about when it is trying to fix your filesystem). Each inode
corresponds to a real physical file. The inode contains a list of
disk
blocks (two bytes each until we get VFS?) which contain the data of
the file. When you create a hard link, you just create another
directory entry which points to the same inode number.

   A wild guess is that a 'ln' command for 'uncompress' to
'compress' 
   would only take up 19 bytes whereas 'compress' takes up 19000 
   bytes. If you just copied compress to uncompress you would have
two 
   19000 byte files, instead of one 19000 and one 19. (These file 
   sizes are probably not actually correct, just examples.) If in 
   compiling a program it looks/asks for 'cc' as the compiler and
you 
   have 'gcc' you can just make a link to 'gcc' for 'cc' and it
will 
   find it, and you have saved space on your disk too.

   There are two kinds of links, regular and symbolic. It is left
to 
   the reader to research this topic for more information. In fact,

   after reading this guide, one should be ready to go out and 
   purchase some text books on the subject of unix, on shell 
   programming, or other related topics as well as read other 
   newsgroups to find out more information about the subject.

As to other newsgroups, a few good ones for moving into the unix
world I could suggest are;

*****************
Hmm, well, as long as you have given this nice explanation, you
might
as well tell them how to do it! ln oldname newname (the opposite of
what I would have guessed). And ln -s to use symlinks (always
preferred, by me anyway).
******************************

'ln' is the command to link one file to another. What's that? Well,
in the distribution you were given two command files; compress and 
uncompress. If you check out the file sizes with the 'ls -l' 
command you will see that they are both exactly the same size in 
bytes. They are actually the same file. Just one is copied to the 
other with the 'cp' command. 

One could have linked (ln) compress to uncompress and saved on file

space because a link doesn't take up as much space as the actual 
file does in this case. Linux keeps a two byte space in a file 
allocation table that is a place-holder for the computer to see 
where a filename or directory actually exists on the physical disk.

When you use 'ln' to link one file to another that actually exists,

then the link filename is actually just a director using the 
place-holder address, which tells the system that when this 
filename is typed to go to the actual filename to execute the 
command. A link only takes a few bytes. 

A wild guess is that a 'ln' command for 'uncompress' to 'compress' 
would only take up 19 bytes whereas 'compress' takes up 19000 
bytes. If you just copied compress to uncompress you would have two

19000 byte files, instead of one 19000 and one 19. (These file 
sizes are probably not actually correct, just examples.) If in 
compiling a program it looks/asks for 'cc' as the compiler and you 
have 'gcc' you can just make a link to 'gcc' for 'cc' and it will 
find it, and you have saved space on your disk too.

There are two kinds of links, regular and symbolic. It is left to 
the reader to research this topic for more information. In fact, 
after reading this guide, one should be ready to go out and 
purchase some text books on the subject of unix, on shell 
programming, or other related topics as well as read other 
newsgroups to find out more information about the subject.

Mtools. Well, you can have your cake and eat it too. With Mtools 
commands you can be in your Linux Operating System and from there 
call up a listing of a directory in DOS, copy files to/from DOS 
from your Linux environment, and do all of your DOS functions 
basically right from within Linux. See 'Appendix E: Mtools' for 
examples of how to use this powerful tool.
=============================================================

================= 
COMMANDS and their USAGE
=================
   (I must admit that I too am a beginner, so I have not included
   the explanation for all of the commands available in Linux.
   You will have fun learning from other books, reading news
   discussions on the net, etc. I have given examples of the 
   utility programs that you will find most helpful and most
   useful during your first stages of learning.)

   In my examples I will give you a listing of the command to
   type and what you will type will be enclosed in single
   quote marks; 'type this'. Then always assume to hit the
   ENTER key. Also, where command affects a file for you
   to use then I will give a generic name to the file
   for the examples' sake of 'filename' where you supply
   the actual name of the file.
=================
basename
        strips path off of filename
***************
   'tail filename'

   bawk
   bigram
   bison
           part of GNU
           parser generator (yacc replacement). A 'beginner' user 
           won't usually have dealings with this.
           pattern matching language language with C like syntax. 

erk... somehow awk got mixed with bison?
*******************

bawk
bigram
bison
        part of GNU
        parser generator (yacc replacement). A 'beginner' user 
        won't usually have dealings with this.
        pattern matching language language with C like syntax. 
   
cat
             concatenate files and write them to standard output

             This means that using 'cat' you can list the contents
             of a file to your screen.         

             'cat filename'

             (you can also use the 'more' command as the standard
             file 'browser' utility. 'less' is an enhanced 'more.')

          DOS:  cat is fairly similar to the DOS command 'type'.

        two definitions/uses; 1) lists files to screen that already
        exist, and 2) creates a file. In our examples we will use
        the example of 'text.doc' to designate our filename, when 
        talking about what to do with a command line instruction. 
        In the case of 'cat', for the 1st usage example, as a way
        of writing a text file's contents to screen ('stdout' is
        the proper name of 'writing to screen', by the way) then
        we would type; 
                cat text.doc(ENTER)
        
        and we would get a displaying of the contents of 'text.doc'
        to the screen (stdout). If it is a short text file, say,
        shorter than 25 lines of text, then it just gets written
        to the screen and you are returned to your prompt. But if
        the text file is larger than 25 lines then it will just
        continue on scrolling on the screen until it gets to the
        end of the document, then return you to your prompt. The
        way to scroll it to the screen and stop it it to use the
        key sequence; 'ctrl-s' (hold down the 'ctrl' key and tap
        the 's' key. This stops it. 'ctrl-q' begins the text
        scrolling again. Do this over and over again until it 
        reaches the end. This method is okay, but someone wrote
        a utility for automatically stopping the screen text
        scrolling one page full at a time, and this executable
        program file is named 'more.' 'more' is included in the
        Linux distribution. So, use 'more text.doc' as a better
        method of reading a file. (Someone came up with another
        text browser program called 'less' and this works fine
        also.)
 
        The other usage of 'cat' is as a quick text file editor,
        creator.
 
                'cat > text.doc'
 
        would put you at the first blank line of the file you
        were about to create called 'text.doc'. Anything you
        typed after that would become the text of 'text.doc' 
        file. Use 'ctrl-d' to return to your prompt, and you
        have created a documentation file of text called
        'text.doc'.
 
        Actually, a third usage of the file 'cat' utility would
        be to 'concatenate' (this is where 'cat' comes from)
        two (or more) files together. 'Concatenate' means to
        attach two things to each other. It's kind of like hooking
        up a train car up to another one, both cars become the
        train.
 
                'cat text1.doc text2.doc > text3.doc'
 
        would copy the contents of 'text1.doc' followed by
        the contents of 'text2.doc' into a new file called
        'text3.doc'.
 
        You must actually play around with these examples, 
        typing in your own example text, to really learn
        how to use these utilities. Otherwise it's just
        theory.

   cd
             change working directory

             'cd ..' moves you backup one directory in the
directory
             tree. (branches, root).

             'cd /' moves you to the root/beginning.

             'cd /usr/bin' from anywhere that you are moves you to
             that subdirectory.

          
        DOS: Note that the slashes are the reverse of what they are
in
        DOS, UNIX path slashes are "/", not the "\" of DOS.  cd
must
        also be followed by a space before the path name, unlike
        in DOS. 

chmod
             change access modes for files, directories.

        DOS: somewhat like the 'attr' command in some DOS
extensions
        Perhaps "permissions" or "access permissions" would be
clearer.

  chgrp
        change group file read/write ownership flags

chmod 
        change file/directory read/write/execute flags

chown
        CHange OWNer
  
 comm
             print lines common to two sorted files

compress
             compress a file

             'compress filename' creates; filename.Z

             'uncompress filename.Z' creates; filename

        DOS: the UNIX alternative to DOS's (or PKWARE's) pkzip, but

        it only works on one file at a time (unless combined w/ 
        tar).  Reduce the actual size of a file.
        
        'compress text.doc'
 
        Try this, create a 'text.doc', and then compress it.
        If the file was small in the first place it probably
        will be larger after compress. I think that the compress
        program places a translation table in the file first,
        so that adds bytes to the file. If you used this example
        on a larger file, you would see the compress utility
        would actually produce a smaller file. This is what
        people use to reduce the size of a file before they
        send it through mail or news out to the alt.os.linux
        newsgroup, so that it doesn't take up so much space
        and time transfering it. Then when someone gets the
        file they must uncompress it to be able to use it.
 
        When you type;
        'compress text.doc'
 
        compress adds a '.Z' title to it. This designates it
        as a compressed file. So, in our example you would
        end up with;
        'text.doc.Z'
 
        you would then uncompress it;
 
        'uncompress text.doc.Z'
 
        and it would strip off the '.Z' filename designator and
        you would have 'text.doc' again.
 

cp
        copy a file

        'cp filename /usr/bin/filename' copies the file
        to the /usr/bin directory.
        DOS: similar to the DOS command copy

cut
        cut out columns in a file

dd
        disk dumper
        Low-level copying using specified blocksizes (useful for
raw
        devices).

        Usage: dd if=infile of=outfile ibs=inputblocksize
        obs=outputblocksize
        count=nblocks skip=nblocks

The order of params doesn't matter; all can be omitted (defaults to

stdin, stdout, 512, 512, until EOF, 0, respectively). If ibs=obs, 
you can just use bs (but warning, be sure ibs=obs since no 
buffering is done).

df
             report free disk space and i-nodes

             You can use just 'df' to see a report of how much free
             disk space you have.

du
        print disk usage
        print disk usage of the current and all subdirectories
        (recursive)
        Prints a tree of directory space usage. du <filename>, 
        defaults to ".". 

egrep 
        grep but with expanded regular expressions (which is the 
        basis for other regexp-using programs, like awk, sed, 
        emacs, less, etc).

em 
        GNU micro-emacs type of editor
        (this isn't GNU.  Just MicroEMACS.)

expand
        expand tabs to spaces 

fdisk
        in Linux, report hard drive disk partition sizes, in DOS
        and Unix and Minix; and change the partition size, type.
 
        Using fdisk alone;
 
        fdisk(ENTER)
 
        Reports the available hard drive partitons and sizes.
        You would use this information it reports to mount
        that partition to a directory-mounting-point.
 
file
        guess at file's type by contents.

find
        find files meeting a given condition

fiz
        fix zoo archives
flex
        GNU lex, lexical anylyzer
fold
        wrap each input line to fit in a specified width
        wrap long lines
fsck
        file system check, check the partition status

grep
        search a file for lines containing a given pattern

        'grep anything filename' will find each occurance
        of 'anything' in the file 'filename.'
 
        'grep word text.doc'
 
        Would search for the word 'word' in the document
        'text.doc'. If it finds it, it will print the line
        that the searched for word (word) onto the screen
        (stdout).

group
        group identity

head
        print the first few lines of a file.

        'head filename' prints the first 5 lines of the file.

issue
        system identification file

kill
        send a signal to a process

ln
             (link)
             link a file
             using 'link' you can save file space in bytes. You
issue
             a command line command to make a link in this
directory,
             to a file which resides in another directory. The file
             in the other directory stays there. A 'name-marker' in
             the inode table is given a number and a filename in
the 
             current directory that you are in. The new
'name-marker
             filename' link runs the file in the linked from file/
             directory.

             So;
             'ln /usr/lib/gcc cc'

             would give you a link in this current directory called
             'cc' to an actual file in /usr/lib named 'gcc'.

             The benefit of this is that the link filename is only
             the length in bytes as the filename place marker is.
             That's usually about 18 bytes. If /usr/lib/gcc was 180

             thousand bytes, then this would be a huge savings in 
             disk spaced used/saved. Thus the benefit of 'link'
which 
             in Linux is 'ln'.

             As in the example, 'ln' can also be used to make a
second
             name for a file that is actually pointing to the first
             filename. (In the root floppy image of Linux
distribution
             in /usr/bin directory 'uncompress' is actually linked
to
             'compress', in the same directory. They both 'call'
the
             same program at run time.

ls
             list the contents of the directory. (Show all files)
             (list contents of directory tree with files to
standard
             out), (standard out is another name for the terminal,
             or monitor screen). (standard out in computerese is 
             referred to as 'stdout', so one may find that title
             referred to in a description.)

             'ls(ENTER)'   gives;.....

             file1   file2   file3   file4   readme  file6
             file7   file8   file9   file10  file11  file12
             file13  file14

             output to stdout.

             'ls -l(ENTER)' gives;.....
             f.....rwxr--r--    01234    Mar2 10:00  file1
             f.....rwx------      443    Mar3  1:39  file2
             f.....rw-rw-rw-     8930    ----6:00    file3

             etc. (output on down listed vertically on the screen. 
             (Scrolls).

             'ls -lFR(ENTER)' gives.....

             /bin
                      /docs
                               file1
                               file2
                               file3
                               file4
                               file6
                               file7
                               file8
                               file9
                               file10
                               file11
                               file12
                               file13
                               file14
                               readme

                                    /bin/docs/old
                                                 file1
                                                 orchestrate.1
                                                 moonbeams.txt

             etc.....

             You can fit the output of the directory listing
command
             through the use of a director (greater-than symbol
key)
             and put it into a file instead of to stdin/stdout 
             (keyboard, screen). 'ls > filenames'
             Would save the output of the 'ls' command to a file
             named 'filenames.' Then you can type the contents of
             'filenames' to screen (stdout).
        DOS: ls is like the 'dir /w' command, while 'ls -l' is more
        like 'dir'

make
         maintain and updated sets of files for compilation
purposes 
         a program to run a 'Makefile' which is a script file
         to run a 'compile' process on a group of files to
         compile a program.

man
        the "help" function for any given command; display manual
        display manual pages
        DOS: What the /? command should have been in DOS

mkdir
         make a directory.

         'mkdir dirname' creates a directory called 'dirname.'
         DOS: just like the DOS command 'mkdir'

mkfs
         make a file system

             You use this on a pre-formatted DOS disk to render
             it readable by the Linux Operating System. Or use
             it on a hard drive partition. You have to supply the
             size for mkfs to setup the drive/disk to. On floppies
             it's;

             'mkfs /dev/at0 1200' for 5 1/4" 1.2M disks -and-

             'mkfs /dev/at1 1400' for 3 1/2" 1.4M disks.

             For a hard drive partition you would first issues
             the command 'fdisk' to get a readout of the sizes
             on your partitions that fdisk reports. Then mkfs
             your partition size using that reported information.

             'mkfs /dev/hda2 20000' if it were the 2nd partition
             on your first/only hard drive and fdisk had reported
             the 20000 size.
        DOS: analogous, but not actually like the DOS 'format' 
        command

mknod
        make a special file (/dev/***).

more
        pager; displays any size document a page at a time on the
        screen. More also allows you to skip multiple pages, go 
        backwards, and search for keywords in the document. 

        DOS: like DOS's 'more', but infinitely more useful

mount
         mount a file system

         You mount a file system so that you can access it.

         'mount /dev/at0 /mnt' would mount the disk in 
         the floppy drive to the filesystem name '/mnt'
         (which is provided for you on the distribution as
         an empty filesystem for this purpose.)
         'mount /dev/hda2 /usr' to set up second partition
         on first hard drive mounted to the '/usr' file
         system.

mtab
         mount table

mv
         move or rename a file

         'mv filename newfilename' would rename 'filename'
         to 'newfilename'.
         DOS: somewhat like DOS's 'ren(ame)' command

od
        octal (and other base) dump. Sort of like DOS debug.

paste
        paste a b c d ... Put several files together line-by-line, 
        separated by a tab, making several columns. paste -d" " to 
        use space as a separator. cut does the inverse.

printenv 
        from within BASH command shell, print the
        automatically searched directories, prompt style, aliases, 
        etc. Print all environment variables. (This is a shell 
        thing.)

patch
        patches up a file from the original and a diff

pr
        print a file

printenv
        from within BASH command shell, print the
        automatically searched directories, prompt style, aliases, 
rm
        remove a file
        'rm filename' would erase the file.
        DOS: like 'del(ete)' or 'erase'

rmdir
        remove a directory

        'rm dirname' would erase the directory only if it is
        first empty of any files. (You would have to remove
        all of the files first).
        DOS: like 'rmdir'

sed
        Stream editor.

sort
        sort lines or records. Fields are separated by whitespace; 
        field 0 is the first field. Use the n switch for numeric 
        order rather than ascii string collating; r for reverse; M 
        for monthnames (I think). So sort +2r +3n +4n +5 +7nr +0 
        means sort with precedence on fields (2,3,4,5,7,0), some 
        numeric, some reversed, etc.

sh
        shell

        When you boot up Linux 0.95a you are in the shell.
        The shell in 0.95a is 'ash'. You can get 'bash'.
        Bash is larger but has more features.


stty
        set terminal parameters
        DOS: allows you not to put the information in a CONFIG.SYS
        driver

sync
        flush the cache to disk
        !You must do this every time in LINUX before you turn off 
        the machine!!

tail
        print the last few lines of a file


        'tail filename' would print to stdout/screen the last
        ten lines of 'filename'.

tar
        tape archiver/files w/sub-directories attached into
        a compressed 'tar' file.

        'tar cvf tarnamefile dirname' would compress and
        keep in order all directories and files in the
        directories into the tar file 'tarnamefile' from
        the directory name you supplied 'dirname'.

        ('tar xvf tarname.tar' would uncompress it back
        to its original form.)

tty
        print the device name of this tty

umount
        unmount a mounted file system

        'umount /dev/at0' unmounts the filesystem and
        drive a: (remember the name does 'not' include
        an 'n' in it. It's not 'unmount' but 'umount').

updatedb
        Update the fast-find database (usually run once a day by 
        root's crontab). (Should be in /usr/lib/find, right?)

utmp
        user accounting data



=====================
APPENDIX A: ERROR CODES and their MEANINGS
=====================
You can find these by looking in /usr/include/errno.h and in 
/usr/src/lib/estdio/errlist.h . However this will be a problem if
you can't get you system up and running. (by the way, most programs
report "ENOENT" instead of "error 2", which just depends on how
one compiled the program. 
 
Here comes  /usr/src/lib/estdio/errlist.h:
 
/* EUNKNOWN          0 */ "Unknown error",
/* EPERM             1 */ "Not owner",
/* ENOENT            2 */ "No such file or directory",
/* ESRCH             3 */ "No such process",
/* EINTR             4 */ "Interrupted system call",
/* EIO               5 */ "I/O error",
/* ENXIO             6 */ "No such device or address",
/* E2BIG             7 */ "Arg list too long",
/* ENOEXEC           8 */ "Exec format error",
/* EBADF             9 */ "Bad file number",
/* ECHILD           10 */ "No children",
/* EAGAIN           11 */ "No more processes",
/* ENOMEM           12 */ "Not enough core",
/* EACCES           13 */ "Permission denied",
/* EFAULT           14 */ "Bad address",
/* ENOTBLK          15 */ "Block device required",
/* EBUSY            16 */ "Mount device busy",
/* EEXIST           17 */ "File exists",
/* EXDEV            18 */ "Cross-device link",
/* ENODEV           19 */ "No such device",
/* ENOTDIR          20 */ "Not a directory",
/* EISDIR           21 */ "Is a directory",
/* EINVAL           22 */ "Invalid argument",
/* ENFILE           23 */ "File table overflow",
/* EMFILE           24 */ "Too many open files",
/* ENOTTY           25 */ "Not a typewriter",
/* ETXTBSY          26 */ "Text file busy",
/* EFBIG            27 */ "File too large",
/* ENOSPC           28 */ "No space left on device",
/* ESPIPE           29 */ "Illegal seek",
/* EROFS            30 */ "Read-only file system",
/* EMLINK           31 */ "Too many links",
/* EPIPE            32 */ "Broken pipe",
/* EDOM             33 */ "Math argument",
/* ERANGE           34 */ "Result too large",
/* EDEADLK          35 */ "Resource deadlock avoided",
/* ENAMETOOLONG     36 */ "Filename too long",
/* ENOLCK           37 */ "No locks available",
/* ENOSYS           38 */ "Function not implemented",
/* ENOTEMPTY        39 */ "Directory not empty"
-----------------------------------------

=============================
APPENDIX B: COMMANDS/SUMMARY: (QUICK LISTING)
=============================================
bawk
        pattern matching language
cat
        concatenate files and write them to standard output
cd
        change working directory
chmod
        change access permissions for files, directories.
comm
        print lines common to two sorted files
compress
        compress a file using adaptive Lempel-Ziv coding
cp
        copy a file
cut
        cut out columns in a file
dd
        disk dumper
df
        report free disk space and i-nodes
du
        print disk usage of the current and all subdirectories  
file
        guess at file's type by contents
find
        find files meeting a given condition
grep
        search a file for lines containing a given pattern
head
        print the first few lines of a file.
kill
        send a signal to a process
ln
        creates a link to another file
ls
        list the contents of the directory. (Show all files)
make
          maintain and updated sets of files for compilation
purposes 
man
        the "help" function for any given command; display manual
pages
          DOS: What the /? command should have been in DOS
mkdir 
        make a directory.
mkfs
        make a file system
mknod
        make a special file (/dev/***).
more
        pager; displays any size document a page at a time on the
        screen
mount
        mount a file system
mv
        move or rename a file
patch
        patches up a file from the original and a diff
pr
        print a file
rm
        remove a file
rmdir
        remove a directory
sh
        shell
stty
        set terminal parameters
sync
        flush the cache to disk
tail
        print the last few lines of a file
tar
        tape archiver/files w/sub-directories attached into
        a compressed 'tar' file.
tty
        print the device name of this tty
umount
        unmount a mounted file system

SPECIAL FILES
-------------
group
        group identity
issue
        system identification file
motd
          message of the day; is displayed on login
mtab
        mount table
passwd
          holds passwords and user ids
termcap
          hold information for properly setting terminal type
utmp
        user accounting data
wtmp 
          more user accounting data


APPENDIX C: BACKUP.
========================

You have all kinds of things on your Linux hard-drive partition.
At some time you are going to want to backup everything that is
important to you. It would be important if you lost it due to 
some unforseen accident, and you wouldn't want to download it
again, or some file/program that you have created, or utilities
that you have that have been changed. Also, it is useful to just
backup everything that you have. To backup you would simply copy
the file(s) from the hard-drive partition to a floppy disk.
(I assume, though maybe wrongly, that one would be using 1.2Mb,
5 1/4" HD, high-density, disks. If not, you will just have to
save everything in smaller portions and on more disks.)

Let's use as the example; backing up all utility files in /bin. (I 
only am using a single-user system/machine, so I have put almost 
all of my utilities that would have been broken up between /bin 
and /usr/bin directories into the one /bin directory.)

You would 1st mount a floppy disk. 

'mount /dev/at0 /mnt'

Then you would/could;

'cd /bin'
'mkdir /mnt/bin'
'cp cat /mnt/bin'

That would copy the 'cat' utility file from the hard-disk Linux 
partition directory '/bin' to the '/bin' directory on '/mnt' which 
is the floppy drive/disk mount point.

There are shorter methods of doing this. You have no way of knowing

how many of the files will fit onto the floppy disk. Concerning 
this insight one could;

'cp [a-m]* /mnt/bin'

This is a neat trick. What it tells the system to do is to copy 
each file that has 'a, b, c, d, .... through m' as the first letter

of the filename ('*' is a wildcard that means 'all/everything' else

from the directory that you are presently in (/bin) to the floppy 
disk drive /mnt/bin directory.

Then you would just issue the same type command for letters 'n-z' 
in the alphabet, which would cover all of the files. Perhaps you 
would use two disks for this.

Another method would be to back up one directory from the 
subdirectory /bin ('cd ..') which would be the '/' directory, or 
the root directory. Then from there you could pack the entire 
directory with its' files into a single file using the 'tar'
command;

'cd ..'
'tar cvf bin.tar /bin'

That would create a file named 'bin.tar' which would include every 
file in the /bin directory. You can also cut the contents of the 
/bin directory to half in the tar file by issuing the same kind of 
switch in the command line;

'tar cvf bin1.tar /bin/[a-m]*'
and
'tar cvf bin2.tar /bin/[n-z]*'

would give you two, smaller 'bin#.tar' files..... Next we would 
want to shrink the size of each file. This is what 'compress' is 
for. So, issue the command 'compress filename' and get these two 
files (or one, as you choose to do...) down to half their current 
size;

'compress bin1.tar'

creates;

bin1.tar.Z

'compress bin2.tar'

creates;

bin2.tar.Z


Also, even quicker you could include the compress step into the
'tar' command and it would work also;

'tar cvfz /usr/bin/[a-m]*'

Now copy each of these two files to floppy disks. Now you have 
your /bin utility files compressed and collected into one or two 
files and have put a copy of them onto a floppy disk. This disk is 
your backup copies of your files. Put 'tar' and 'uncompress' onto 
separate disks by themselves so that you have these utilities in 
case of a total system crash. You wouldn't want to have everything 
backed up on disks and then not be able to access them because you 
don't have the silly utility that unpacks them for you.

To uncompress a file;

'uncompress bin2.tar.Z'

would uncompress the file and leave you with;

bin2.tar

'tar xvf bin2.tar' would unpack the contents of 'bin2.tar' creating

a /bin directory and placing all of the packed files into it.

(quicker; 'tar cvfz bin2.tar.Z')

(keep notes handy, that's 'tar xvf' for unpacking, and 'tar cvf'
for packing into the archive.)

===================
APPENDIX D: MTOOLS:
===================

You have with 'mtools' a program that will let you, from within 
your Linux Operating System environment, deal with 
files/directories in the DOS Operating System environment. From 
within Linux you can get a listing of directories and files, copy 
the files to Linux, or to DOS from Linux, make directories, move 
directories, move files, erase/delete files and directories... 
etc., all kinds of useful things.

All that I find at present very useful with 'mtools' is to copy 
files from my DOS hard-drive partition to my Linux hard-drive 
partition.

'mdir c:'

would list the directory of C:.

'mcopy c:/docs/one /usr/docs'

would copy the filename 'one' from the docs directory in drive C: 
to my docs directory in directory /usr/docs as the filename of 
'one.' 

This is useful for copying over 'gcc2.tar.Z' for instance. You have

gotten the file 'gcc2.tar.Z' onto your DOS drive C: in the 
directory 'C:\DL\GCC2TAR.Z' for instance. Now you want to copy it 
over to the Linux partition into the directory '/usr'. So you
would;

'mcopy c:/dl/gcc2tar.z /usr/gcc2.tar.Z'

and you would have it. Don't forget to look closely at the lines to

type in letter-for-letter.... In DOS the directory separator symbol

is '\', but in Linux it is '/'. So, take note.

Read the documentation that comes with 'mtools' for more usage 
notes and examples of what other capabilities it has for you to
use. Also, the documentation specifically states that you must have
the 'mtools' text file that is the initialization file for mtools
in the /etc directory. Follow it's format, in the documentation,
and edit it to suit your drives' needs.

========================
APPENDIX F: EXTRA HINTS:
========================
1)
Reading a compressed tar from a rawrite floppy is quit fast and a 
good way to install the abc-banjo Release:
          cd /
          tar -xZf /dev/floppy0
I also used the -k option, to prevent the abc over-writing the 
existing tsx-11 root files, but I'm quite paranoid, it's probably 
not necessary (and maybe a bad idea).

2)
*** The whole kernel is on the boot floppy.  If you make a new
kernel and you are still booting from floppy, you need to create a 
new floppy, e.g.

   dd if=/usr/src/linux/Image of=/dev/floppy0

*** To build a new kernel, you should setup the Makefiles in
/dev/src/linux for your system.
*** You can rebuild the kernel with 4MB of memory and NO swap
space.

This takes somthing in the order of 15 to 20 minutes on a 20 MHz
386DX with 4MB of memory and no swap space (I didn't actually time 
it, but it seemed about that long).

located in /dev;
PS0 is the device of floppy drive a:, 1.2M in PS/2 systems
PS1 is the device name of floppy drive b:, 1.4M in PS/2 systems.
at0 is the device name of floppy drive a:, 1.2 in at clones.
hd0 is device name of 'all' of 1st hard drive.
hd1 is device name of first partition of 1st hard drive.
hd2 is device name of second partition of 1st hard drive.
hd3 is device name of third partition of 1st hard drive.
hd4 is device name of fourth partition of 1st hard drive.

hd5 is device name of 'all' of 2nd hard drive.
hd6 is device name of 1st partition of 2nd hard drive.
hd7 is device name of 2nd partition of 2nd hard drive.
hd8 is device name of 3rd partition of 2nd hard drive.
hd9 is device name of 4th partition of 2nd hard drive.

this is the usual Unix, Minix, Linux 0.12 operating systems.
Linux 0.95 has different names;

hda is device name of 'all' of 1st hard drive.
hda1 is device name of 1st partition of 1st hard drive.
hda2
hda3
hda4... etc.

hdb is device name of 'all' of 2nd hard drive.
hdb1 is device name of 1st partition of 2nd hard drive. and etc....

>An explanation of the above files' listing;
>-rwxr-xr-x 
>are the 'permissions' settings for the files/directories.
>1 root 
>is the owner of the file (root in this case.)

The '1' part of the above field is actually a separate field 
standing for the number of links to the file (Or, in the case of a 
directory, the number of subdirectories within that directory + 2 
(The extra two being "." and ".."))

>sys
>        is the kind of file (a system file.)

This is really the "group" to which the file belongs, I believe. 
(You mention groups later in the permissions part.)  Beware saying 
that there are different "kind [types] of files", as a key point of

UNIX is that there are no file types (like com, exe, bat,
etc...)!!!

>29700
>        is the size of the file in bytes.
>Mar 7
>        is the date the file was created (or last modified.)
>23:58
>        is the time the file was created (or last modified.)
>chmod
>        is the filename.
>====================
>EXPLANATIONS:
>====================
>Given the above example again of a directory listing of the
>file 'chmod' in the directory '/usr/bin':
>====================
>-rwxr-xr-x   1 root     sys         29700 Mar  7 23:58 chmod
> 
>        The 'permissions' settings for the files/directories.
>        'r' means 'read' permission (can read the file).
>        'w' means 'write' permission (can write to the file, i.e.
>                edit/change it.)
>        'x' means 'execute' permission (can execute the file,
>                if it is an executable/binary file.)
> 
>-rwxr-xr-x
>0123456789
>        There are nine place holders for settings in 'all' 
>        cases of permission settings on all files.
>        The '0' place is for the type; file, or directory.
>        The '1' place is for 'read' for 'sysadm/root'.
>        The '2' place is for 'write' for 'sysadm/root'.
>        The '3' place is for 'execute' for 'sysadm/root'.

I would phrase this much differently; say "owner" or "user" and 
then mention that on Linux, the "owner" is often sysadmin/root if 
necessary:
  The '1' place is for 'read' for 'owner'. (or 'sysadm/root')

(Hm, "user" might be better, as it will mesh with the term used 
later in chmod (eg, chmod "u"+r).)  I'd hate to see someone misread

your statement as meaning that the 123 places are used for root's 
priveleges to read the file. Since this is geared towards 
Linux/UNIX users, I wouldn't advise being too Linux-specific about 
always having root priveleges.

>        The '4' place is for 'r' for 'group'.
>        The '5' place is for 'w' for 'group'.
>        The '6' place is for 'x' for 'group'.
>        The '7' place is for 'r' for 'all/anybody'.
>        The '8' place is for 'w' for 'all/anybody'.
>        The '9' place is for 'x' for 'all/anybody'.
> 
>The idea here is that a file can be set for security reasons
>to be readable by some, all, nobody, writeable by some, all, 
>nobody, executable by ..... etc. It is for system security 
>reasons that the system administrator has the ability to set
>file attributes/permissions so that only she/he can run certain
>system routines, as well as other things. Also, any other user
>can open up a directory and its files (or only certain files)
>for others to read, others to write to (group that they all
>belong to, for instance), or others to execute. So everybody
>gets to set/change file attributes in one fashion or another.

You should mention in passing that the sysadmin/root can read any 
file on the system.  People on normal UNIXes forget how un-private 
their stuff really is to the root user (especially unauthorized 
root users!) Although it won't matter on LINUX, where most people 
are root, it might just be handy to remember if they start on LINUX

and subsequently move to a multi-user non-root environement.



NOT ADDRESSED ISSUES:

1)
... mention how to set up new users (put them in the passwd file, 
make and chown their directory, copy in startup files). I know this

is a little premature, but soon won't be, and may not be obvious to

people who haven't been system administrators. Also how to setup to

accept calls from a modem. I don't know these answers. 

=============================
APPENDIX G: FILES LISTINGS:
=============================
After grabbing the Linux 0.95a rootimage and bootimage and setting 
up my hard drive partitions I then got about everything I felt that

I needed as a beginner (except for Kermit, as I don't have any 
experience using that, instead I use 'pcomm12b' which is more like 
traditional DOS telecommunications' programs) and here is a 
complete listing of all of my directories and files using the 'ls
- 
laFR > files' command. This is the 'files' file (with comments):

This listing is provided, even though it takes up much space in 
this file, for three reasons; 1) to give you a listing so that you 
can check file sizes of the basic setup, 2) to show you 'where' 
everything is supposed to go, and 3) to explain what they are. This

listing pertains to my system built 3/30/92 with gcc2.1, and Linux 
0.95a.

============================
total 33
drwxr-xr-x  12 root     root          320 Mar 30 10:16 ./
drwxr-xr-x  12 root     root          320 Mar 30 10:16 ../
-rw-r--r--   1 root     root         2964 Mar 29 16:26
.bash_history
-rw-r--r--   1 root     root          220 Mar 29 13:42 .profile
drwxr-xr-x   9 root     root          272 Mar 30 10:14 1/
drwxr-xr-x   3 root     root          960 Mar 30 10:14 bin/
drwxr-xr-x   2 root     root         1232 Mar 29 14:39 dev/
drwxr-xr-x   2 root     root          288 Mar 29 16:25 etc/
drwxr-xr-x   2 root     root           32 Mar 28 17:20 home/
drwxr-xr-x   2 root     root          432 Mar 29 23:03 lib/
drwxr-xr-x   2 root     root           32 Mar 28 09:01 mnt/
drwxr-xr-x   2 root     root           64 Mar 28 18:18 source/
drwxr-xr-x   2 root     root           48 Mar 30 10:12 tmp/
drwxr-xr-x  13 root     root          240 Mar 28 20:00 usr/
-rw-r--r--   1 root     root         5484 Mar 28 18:12 zfiles

(this is the basic 'standard' root directory setup, except for '1/'

which is where I put all other subdirectories that I create, 
'source/' which is where presently I am keeping any source code 
that I write that I wish to compile, and 'zfiles' which is my 
listing of all files on my system that I can 'more' any time to see

what is what and where is where...)

('.bash_history' is a 'dot' file that keeps the 'specified in your 
.profile file' listing of previously issued commands by you).

('.profile' this is the 'users' setup file with specifications at 
bootup into the system. You can edit this file to change things. It

is covered in 'Appendix F: Bash')

1:
total 9
drwxr-xr-x   9 root     root          272 Mar 30 10:14 ./
drwxr-xr-x  12 root     root          320 Mar 30 10:16 ../
drwxr-xr-x   2 root     root           32 Mar 30 10:06 1/
drwxrwxrwx   7 root     root          112 Mar 29 22:46 2/
drwxrwxrwx   2 root     root          144 Mar 29 22:52 docs/
drwxrwxrwx   2 root     root          368 Mar 28 10:15 joe/
drwxrwxrwx   4 root     root          176 Mar 29 16:14 pcomm/
drwxrwxrwx   2 root     root          448 Mar 28 11:13 rzsz/

(joe/ is an editor that I'm trying to compile, it's easier than
'vile' (vi), or 'em' (emacs) to use...)

(pcomm is the telecommunications program I choose to use instead of
Kermit, it is more DOS-like).

(rzsz is a transfer protocol/method which is the fastest, trying to
compile it so that pcomm can use it..)
drwxrwxrwx   2 root     root          128 Mar 29 13:30
selection-1.0/

1/1:
total 2
drwxr-xr-x   2 root     root           32 Mar 30 10:06 ./
drwxr-xr-x   9 root     root          272 Mar 30 10:14 ../
1/2:
total 7
drwxrwxrwx   7 root     root          112 Mar 29 22:46 ./
drwxr-xr-x   9 root     root          272 Mar 30 10:14 ../
drwxr-xr-x   2 root     root           64 Mar 29 22:50 1/
drwxr-xr-x   2 root     root          160 Mar 29 22:51 2/
drwxr-xr-x   3 root     root           64 Mar 29 22:53 3/
drwxr-xr-x   2 root     root           32 Mar 29 22:46 4/
drwxr-xr-x   2 root     root           32 Mar 29 22:46 5/

(these directories are where I put downloaded stuff and where I
uncompress and un-tar them, so that they don't expand out into the
basic directory structure and become garbage that I've got to
remove, etc. I do it here first, if it needs un-tarring into a
specific directory I move the '.tar' file there and un tar it and
erase all of it here.)
1/2/1:
total 2
drwxr-xr-x   2 root     root           64 Mar 29 22:50 ./
drwxrwxrwx   7 root     root          112 Mar 29 22:46 ../

1/2/2:
total 2
drwxr-xr-x   2 root     root          160 Mar 29 22:51 ./
drwxrwxrwx   7 root     root          112 Mar 29 22:46 ../

1/2/3:
total 4
drwxr-xr-x   3 root     root           64 Mar 29 22:53 ./
drwxrwxrwx   7 root     root          112 Mar 29 22:46 ../
drwxr-xr-x   3 root     root          800 Mar 29 22:53 libcurses/

1/2/3/libcurses:
total 396
drwxr-xr-x   3 root     root          800 Mar 29 22:53 ./
drwxr-xr-x   3 root     root           64 Mar 29 22:53 ../
-r--r--r--   1 root     root          971 Dec 17 23:50 Makefile
drwxr-xr-x   2 root     root          144 Mar 29 22:53 RCS/
-r--r--r--   1 root     root         4192 Apr 20  1991 addbytes.c
-r--r--r--   1 root     root         2085 Apr 20  1991 addch.c
-r--r--r--   1 root     root         2168 Apr 20  1991 addstr.c
-r--r--r--   1 root     root         2524 Apr 20  1991 box.c
-r--r--r--   1 root     root         2067 Apr 20  1991 clear.c
-r--r--r--   1 root     root         2480 Apr 20  1991 clrtobot.c
-r--r--r--   1 root     root         2616 Apr 20  1991 clrtoeol.c
-r--r--r--   1 root     root         9790 Apr 20  1991 cr_put.c
-r--r--r--   1 root     root         6982 Dec 17 23:50 cr_tty.c
-r--r--r--   1 root     root         6001 Apr 20  1991 curses.3
-r--r--r--   1 root     root         3242 Dec 17 23:50 curses.c
-r--r--r--   1 root     root         2251 Dec 20 14:00 curses.ext
-r--r--r--   1 root     root         9093 Dec 20 14:00 curses.h
-r--r--r--   1 root     root         2368 Apr 20  1991 delch.c
-r--r--r--   1 root     root         2677 Dec 20 13:51 deleteln.c
-r--r--r--   1 root     root         2818 Apr 20  1991 delwin.c
-r--r--r--   1 root     root         2159 Dec 17 23:49 endwin.c
-r--r--r--   1 root     root         2515 Apr 20  1991 erase.c
-r--r--r--   1 root     root         2458 Apr 20  1991 fullname.c
-r--r--r--   1 root     root         2630 Dec 17 23:49 getch.c
-r--r--r--   1 root     root         2203 Apr 20  1991 getstr.c
-r--r--r--   1 root     root         2512 Apr 20  1991 id_subwins.c
-r--r--r--   1 root     root         2156 Apr 20  1991 idlok.c
-r--r--r--   1 root     root         2922 Apr 20  1991 initscr.c
-r--r--r--   1 root     root         2527 Apr 20  1991 insch.c
-r--r--r--   1 root     root         2689 Apr 20  1991 insertln.c
-rw-r--r--   1 root     root        38584 Dec 20 13:58 libcurses.a
-r--r--r--   1 root     root         2261 Apr 20  1991 longname.c
-r--r--r--   1 root     root         2258 Apr 20  1991 move.c
-r--r--r--   1 root     root         2839 Jun 19  1991 mvprintw.c
-r--r--r--   1 root     root         2833 Apr 20  1991 mvscanw.c
-r--r--r--   1 root     root         2658 Apr 20  1991 mvwin.c
-r--r--r--   1 root     root         6313 Apr 20  1991 newwin.c
-r--r--r--   1 root     root         2986 Apr 20  1991 overlay.c
-r--r--r--   1 root     root         2905 Dec 20 13:55 overwrite.c
-r--r--r--   1 root     root         3546 Dec 17 23:49 printw.c
-r--r--r--   1 root     root         2055 Apr 20  1991 putchar.c
-r--r--r--   1 root     root         7913 Apr 20  1991 refresh.c
-r--r--r--   1 root     root         2992 Apr 20  1991 scanw.c
-r--r--r--   1 root     root         2378 Apr 20  1991 scroll.c
-r--r--r--   1 root     root         2332 Apr 20  1991 standout.c
-r--r--r--   1 root     root         2667 Jul  1  1991 tags
-r--r--r--   1 root     root         3079 Apr 20  1991 toucholap.c
-r--r--r--   1 root     root         2869 Apr 20  1991 touchwin.c
-r--r--r--   1 root     root         2824 Dec 20 14:00 tstp.c
-r--r--r--   1 root     root         2738 Apr 20  1991 unctrl.c

1/2/3/libcurses/RCS:
total 69
drwxr-xr-x   2 root     root          144 Mar 29 22:53 ./
drwxr-xr-x   3 root     root          800 Mar 29 22:53 ../
-r--r--r--   1 root     root         1328 Dec 17 23:50 Makefile,v
-r--r--r--   1 root     root         7314 Dec 17 23:50 cr_tty.c,v
-r--r--r--   1 root     root         3660 Dec 17 23:50 curses.c,v
-r--r--r--   1 root     root         2557 Dec 20 14:00 curses.ext,v
-r--r--r--   1 root     root        10051 Dec 20 14:00 curses.h,v
-r--r--r--   1 root     root         3850 Dec 17 23:49 printw.c,v
-r--r--r--   1 root     root         3282 Dec 20 14:00 tstp.c,v

(I don't know how to implement libcurses or curses yet, but here it
is for when a program calls for it and I can then move it to where
it is supposed to go.)

1/2/4:
total 2
drwxr-xr-x   2 root     root           32 Mar 29 22:46 ./
drwxrwxrwx   7 root     root          112 Mar 29 22:46 ../

1/2/5:
total 2
drwxr-xr-x   2 root     root           32 Mar 29 22:46 ./
drwxrwxrwx   7 root     root          112 Mar 29 22:46 ../

1/docs:
total 257
drwxrwxrwx   2 root     root          144 Mar 29 22:52 ./
drwxr-xr-x   9 root     root          272 Mar 30 10:14 ../
-rwxrwxrwx   1 root     root        51036 Mar 29 13:28 095a.faq*
-r-xr-xr-x   1 bin      bin         47004 Dec 19 18:54 less.man*
-r-xr-xr-x   1 bin      bin           774 Dec 19 19:12 less.txt*
-r-xr-xr-x   1 bin      bin          6842 Dec 19 18:54 lesskey.man*
-rwxrwxrwx   1 root     root            0 Mar 29 15:15 pcomm.dump*
-rwxrwxrwx   1 root     root          220 Mar 29 13:42 profile*
-rw-r--r--   1 root     root        23500 Oct  3 18:02 zip.doc

1/joe:
total 316
drwxrwxrwx   2 root     root          368 Mar 28 10:15 ./
drwxr-xr-x   9 root     root          272 Mar 30 10:14 ../
-rw-------   1 424      101         12488 Aug 27  1991 COPYING
-rw-------   1 424      101          1220 Feb 11 06:54 Makefile
-rw-------   1 424      101          5312 Aug 27  1991 NEWS
-rw-------   1 424      101           648 Aug 27  1991 README
-rw-------   1 424      101          2602 Aug 27  1991 async.h
-rw-------   1 424      101          4438 Aug 27  1991 asyncbsd.c
-rw-------   1 424      101          3758 Aug 27  1991 asynchpux.c
-rw-------   1 424      101          3146 Aug 27  1991 asyncxenix.c
-rw-------   1 424      101          3086 Aug 27  1991 blocks.c
-rw-------   1 424      101          1005 Aug 27  1991 blocks.h
-rw-------   1 424      101          1931 Aug 27  1991 cruddy.c
-rw-------   1 424      101          2671 Aug 27  1991 j.1
-rw-------   1 424      101         58525 Aug 27  1991 j.c
-rw-------   1 424      101         17736 Aug 27  1991 j.h
-rwx------   1 424      101          1018 Feb 11 05:05
joe.editor.hel*
-rwxr-xr-x   1 424      101           262 Feb 10 17:13
joe.instructio*
-rwxr-xr-x   1 424      101          7738 Feb 11 06:34 joerc*
-rw-------   1 424      101          8899 Feb 11 06:56 keymap.j
-rw-------   1 424      101          8899 Aug 27  1991 keymapbsd
-rw-------   1 424      101          8949 Aug 27  1991 keymapxenix
-rw-------   1 424      101           101 Aug 27  1991 patch0.0.1

(These are the sources for the editor 'joe'. One would look at the
'Makefile' and edit changes if necessary to compile on your system.
Then just type 'make joe' and if it will compile it will. The
'Makefile' takes care of telling the compiler where to find certain
things that 'joe' needs while compiling the program.)


1/pcomm:
total 512
drwxrwxrwx   4 root     root          176 Mar 29 16:14 ./
drwxr-xr-x   9 root     root          272 Mar 30 10:14 ../
drwxr-xr-x   2 root     root          112 Mar 28 18:10 Config/
drwxr-xr-x   2 root     root          144 Mar 28 18:10 Doc/
-rw-r--r--   1 root     root         5784 Mar  1 13:38 Makefile
-rw-r--r--   1 root     root         2363 Mar  1 12:46 Readme.linux
-rwxr-xr-x   1 root     root        20152 Mar  1 13:10 matches*
-rwxr-xr-x   1 root     root        15612 Mar  1 13:10 modem_break*
-rwxr-xr-x   1 root     root       149091 Mar  1 13:10 pcomm*
-rwxr-xr-x   1 root     root        40010 Mar  1 13:10 pcomm_input*
-rwxr-xr-x   1 root     root        24924 Mar  1 13:10 waitfor*

1/pcomm/Config:
total 9
drwxr-xr-x   2 root     root          112 Mar 28 18:10 ./
drwxrwxrwx   4 root     root          176 Mar 29 16:14 ../
-rw-r--r--   1 root     root           81 Mar 29 14:23
pcomm.dial_dir
-rw-r--r--   1 root     root           79 Mar  1 12:15 pcomm.extrnl
-rw-r--r--   1 root     root          232 Mar  1 12:18 pcomm.modem
-rw-r--r--   1 root     root          513 Mar 29 14:27 pcomm.param
-rw-r--r--   1 root     root          994 Feb  8 21:11 sample

1/pcomm/Doc:
total 178
drwxr-xr-x   2 root     root          144 Mar 28 18:10 ./
drwxrwxrwx   4 root     root          176 Mar 29 16:14 ../
-rw-r--r--   1 root     root        61175 Feb  8 21:11 Doc
-rw-r--r--   1 root     root          635 Feb  8 21:11 Matches.1
-rw-r--r--   1 root     root          836 Feb  8 21:11
Modem_break.1
-rw-r--r--   1 root     root         8649 Feb  8 21:11 Pcomm.1
-rw-r--r--   1 root     root         7963 Feb  8 21:11 Readme
-rw-r--r--   1 root     root         8624 Feb  8 21:11
Release.notes
-rw-r--r--   1 root     root          871 Feb  8 21:11 Waitfor.1

1/rzsz:
total 362
drwxrwxrwx   2 root     root          448 Mar 28 11:13 ./
drwxr-xr-x   9 root     root          272 Mar 30 10:14 ../
-rw-r--r--   1 240      25           2936 May 17  1989 Makefile
-rw-r--r--   1 240      25           2630 May 19  1989 README
-rw-r--r--   1 240      25            884 Feb 27  1989 crc.1
-rw-r--r--   1 240      25           8566 Apr 26  1988 crc.c
-rw-r--r--   1 240      25           8737 Apr  4  1988 crctab.c
-rw-r--r--   1 240      25           1959 May 25  1989 genie.c
-rw-r--r--   1 240      25             19 Oct 22  1987 gz
-rw-r--r--   1 240      25            167 Apr 22  1988 init.com
-rw-r--r--   1 240      25           1241 Jan  7  1988 minirb.1
-rw-r--r--   1 240      25           4057 May 25  1987 minirb.c
-rw-r--r--   1 240      25            119 May 25  1987 ptest.sh
-rw-r--r--   1 240      25           6924 May 10  1989 rbsb.c
-rw-r--r--   1 240      25           9410 May 25  1989 rz.1
-rw-r--r--   1 240      25          32265 May 25  1989 rz.c
-rw-r--r--   1 240      25          12484 Apr 22  1989 sz.1
-rw-r--r--   1 240      25          44056 May 18  1989 sz.c
-rw-r--r--   1 240      25            882 Apr 17  1988 vmodem.h
-rw-r--r--   1 240      25           4440 May  8  1988 vrzsz.c
-rw-r--r--   1 240      25            618 May 19  1989 vupl.t
-rw-r--r--   1 240      25            274 Apr 30  1988 vuplfile.t
-rw-r--r--   1 240      25           6120 Sep  4  1988 vvmodem.c
-rw-r--r--   1 240      25          17939 May 25  1989 zm.c
-rw-r--r--   1 240      25           6137 May 20  1989 zmodem.h
-rw-r--r--   1 240      25           3942 Apr 24  1989 zmr.c
-rw-r--r--   1 240      25            734 May  5  1989 zupl.t

1/selection-1.0:
total 30
drwxrwxrwx   2 root     root          128 Mar 29 13:30 ./
drwxr-xr-x   9 root     root          272 Mar 30 10:14 ../
-rw-r--r--   1 root     root          155 Mar 25 00:30 Makefile
-rw-r--r--   1 root     root         2950 Mar 27 11:36 README
-rw-r--r--   1 root     root         6131 Mar 26 09:27 kernel.cdif
-rw-r--r--   1 root     root         1939 Mar 25 00:30 mouse.c
-rw-r--r--   1 root     root          287 Mar 25 00:30 mouse.h
-rw-r--r--   1 root     root         1948 Mar 25 23:52 stuff.c

(this, if I would choose to use it, is a program that allows you to
mark and cut with the mouse from one terminal window to another
terminal window. To use it calls for patching a change to the
kernel source with 'kernel.cdif' and I'm not prepared to do that
just yet, so here it sits...)

bin:
total 6193
drwxr-xr-x   3 root     root          960 Mar 30 10:14 ./
drwxr-xr-x  12 root     root          320 Mar 30 10:16 ../
-rwxr-xr-x   1 root     root        78852 Mar 27 21:51 ash*
-rwxr-xr-x   1 root     root       300036 Mar 28 09:11 bash*
-rw-r--r--   1 root     root         2105 Mar 28 10:41 bash.help
-rwxr-xr-x   1 root     root        29700 Mar 27 21:50 cat*
-rwxr-xr-x   1 root     root        31380 Feb 22 21:56 chgrp*
-rwxr-xr-x   1 root     root        30618 Feb 22 21:56 chmod*
-rwxr-xr-x   1 root     root        36070 Feb 22 21:56 chown*
-rwxr-xr-x   1 root     root        37892 Mar 27 21:50 compress*
-rwxr-xr-x   1 root     root        37892 Mar 27 21:50 cp*
-rwxr-xr-x   1 root     root        30140 Feb 22 21:56 dd*
-rwxr-xr-x   1 root     root        40221 Mar 28 09:11 df*
-rwxr-xr-x   1 root     root        54947 Feb 22 21:56 dir*
-rwxr-xr-x   1 root     root        30878 Feb 22 21:56 du*
drwxr-xr-x   2 root     root          144 Mar 28 18:02 emacs/
-rwxr-xr-x   1 root     root        41988 Mar 27 21:50 fdisk*
-rwxr--r--   1 root     root        98216 Mar 28 21:11 find*
-rwxr-xr-x   1 root     root        37892 Mar 27 21:50 fsck*
-rw-r--r--   1 root     root       103428 Mar 30 10:08 gawk
-rwxr-xr-x   1 root     root        29700 Mar 27 21:50 getty*
-rwxr-xr-x   1 root     root        36535 Feb 22 21:56 install*
-rwxr-xr-x   1 root     root        33796 Mar 27 21:50 ln*
-rwxr-xr-x   1 root     root        46084 Mar 27 21:50 login*
-rwxr-xr-x   1 root     root        50180 Mar 27 21:50 ls*
-rwxr-xr-x  14 root     root        70656 Mar 28 10:30 mattrib*
-rwxr-xr-x  14 root     root        70656 Mar 28 10:30 mcd*
-rwxr-xr-x  14 root     root        70656 Mar 28 10:30 mcopy*
-rwxr-xr-x  14 root     root        70656 Mar 28 10:30 mdel*
-rwxr-xr-x  14 root     root        70656 Mar 28 10:30 mdir*
-rwxr-xr-x  14 root     root        70656 Mar 28 10:30 mformat*
-rwxr-xr-x   1 root     root        29700 Mar 27 21:51 mkdir*
-rwxr-xr-x   1 root     root        37892 Mar 27 21:51 mkfs*
-rwxr-xr-x   1 root     root        21508 Mar 27 21:51 mknod*
-rwxr-xr-x   1 root     root        21508 Mar 27 21:51 mkswap*
-rwxr-xr-x  14 root     root        70656 Mar 28 10:30 mlabel*
-rwxr-xr-x  14 root     root        70656 Mar 28 10:30 mmd*
-rwxr-xr-x   1 root     root        21508 Mar 27 21:51 mount*
-rwxr-xr-x  14 root     root        70656 Mar 28 10:30 mrd*
-rwxr-xr-x  14 root     root        70656 Mar 28 10:30 mread*
-rwxr-xr-x  14 root     root        70656 Mar 28 10:30 mren*
-rwxr-xr-x  14 root     root        70656 Mar 28 10:30 mtools*
-rw-r--r--   1 root     root          116 Mar 28 10:31
mtools.script
-rwxr-xr-x  14 root     root        70656 Mar 28 10:30 mtype*
-rwxr-xr-x   1 root     root        33796 Mar 27 21:51 mv*
-rwxr-xr-x  14 root     root        70656 Mar 28 10:30 mwrite*
-rwxr-xr-x   1 root     root        50180 Mar 27 21:51 pfdisk*
-rwxr-xr-x   1 root     root        29700 Mar 27 21:51 rm*
-rwxr-xr-x   1 root     root        25604 Mar 27 21:51 rmdir*
-rwxr-xr-x   1 root     root        25604 Mar 27 21:51 rootdev*
-rw-r--r--   1 root     root        66564 Mar 30 10:08 sed
-rwxr-xr-x   1 root     root       300036 Mar 28 09:13 sh*
-rwxr-xr-x   1 root     root        21508 Mar 27 21:51 swapon*
-rwxr-xr-x   1 root     root         9220 Mar 27 21:51 sync*
-rwxr-xr-x   1 root     root       140292 Mar 27 21:51 tar*
-rwxr-xr-x   1 root     root        49062 Feb 22 21:56 touch*
-rwxr-xr-x   1 root     root        21508 Mar 27 21:51 umount*
-rwxr-xr-x   1 root     root        37892 Mar 27 21:51 uncompress*

('ash' came with 0.95a distribution, 'bash' came with 0.12. I got
used to 'bash' right away and here I have copied 'sh' to 'ash'
which is what it is, and then copied 'bash' to 'sh' so that now
'sh' is really 'bash'.
Also, I am running Linux as a single-user only system, in which
I am the user and the system administrator/root id member. So, I
have put just about every command utility program into '/bin'
directory... this 'IS NOT' the suggested 'standard' to be using,
but as it is, it's what I 'am' using.)

bin/emacs:
total 752
drwxr-xr-x   2 root     root          144 Mar 28 18:02 ./
drwxr-xr-x   3 root     root          960 Mar 30 10:14 ../
-rw-------   1 754      root          844 Feb  7 22:18 Readme
-rw-------   1 754      root        11277 Nov 29 11:09 dif311a.zip
-rwx------   1 754      root       167640 Feb  6 20:56 emacs*
-rw-------   1 754      root         4558 Feb  7 06:56
estruct.cdiff
-rw-------   1 754      root         2449 Feb  7 06:55
makegcc.cdiff
-rw-r--r--   1 root     root       194560 Mar 28 17:16 uem.tar
-rw-------   1 754      root          876 Feb  7 06:27 unix.cdiff

(Just wanted to point out a 'usual' directory with files structure 
as you might get with each 'ported' package to Linux. Here you have

the first most important file in the group, the 'Readme' file. You,

as a beginner, should 'always' read these files 'FIRST.' Print them

out if you can/care to, otherwise jot down important notes about 
the program, 'how to install', 'where to install', and 'notes' 
about its' usage... ALWAYS, if you are having trouble with a 
program, read this file FIRST before posting news to the netnews 
groups because more than likely it has been covered in this 
documentation. Nothing is quite as irresponible as posting a news 
article to the 'world' when the readers realize that the answer is 
in the documentation and that you would have gotten it if you just 
would have read it. Perhaps nobody will answer you because of this?

The second file of importance is 'emacs*'. This 'is' the 'emacs'
executable program.)

dev:
total 13
drwxr-xr-x   2 root     root         1232 Mar 29 14:39 ./
drwxr-xr-x  12 root     root          320 Mar 30 10:16 ../
brw-rw-rw-   1 root     root       2,  28 Mar 27 21:51 PS0
brw-rw-rw-   1 root     root       2,  29 Mar 27 21:51 PS1
brw-rw-rw-   1 root     root       2,   8 Mar 27 21:51 at0
brw-rw-rw-   1 root     root       2,   9 Mar 27 21:51 at1
crw-rw-rw-   1 root     root       4,   1 Mar 27 21:51 console
brw-rw-rw-   1 root     root       3,   0 Mar 27 21:51 hda
brw-rw-rw-   1 root     root       3,   1 Mar 27 21:51 hda1
brw-rw-rw-   1 root     root       3,   2 Mar 27 21:51 hda2
brw-rw-rw-   1 root     root       3,   3 Mar 27 21:51 hda3
brw-rw-rw-   1 root     root       3,   4 Mar 27 21:51 hda4
brw-rw-rw-   1 root     root       3,   5 Mar 27 21:51 hda5
brw-rw-rw-   1 root     root       3,   6 Mar 27 21:51 hda6
brw-rw-rw-   1 root     root       3,   7 Mar 27 21:51 hda7
brw-rw-rw-   1 root     root       3,   8 Mar 27 21:51 hda8
brw-rw-rw-   1 root     root       3,  64 Mar 27 21:51 hdb
brw-rw-rw-   1 root     root       3,  65 Mar 27 21:51 hdb1
brw-rw-rw-   1 root     root       3,  66 Mar 27 21:51 hdb2
brw-rw-rw-   1 root     root       3,  67 Mar 27 21:51 hdb3
brw-rw-rw-   1 root     root       3,  68 Mar 27 21:51 hdb4
brw-rw-rw-   1 root     root       3,  69 Mar 27 21:51 hdb5
brw-rw-rw-   1 root     root       3,  70 Mar 27 21:51 hdb6
brw-rw-rw-   1 root     root       3,  71 Mar 27 21:51 hdb7
brw-rw-rw-   1 root     root       3,  72 Mar 27 21:51 hdb8
crw-rw-rw-   1 root     root       1,   2 Mar 27 21:51 kmem
crw-rw-rw-   1 root     root       1,   1 Mar 27 21:51 mem
crw-rw-rw-   1 root     root       1,   3 Mar 27 21:51 null
crw-rw-rw-   1 root     root       1,   4 Mar 27 21:51 port
crw-rw-rw-   1 root     root       4, 128 Mar 27 21:51 ptyp0
crw-rw-rw-   1 root     root       4, 129 Mar 27 21:51 ptyp1
crw-rw-rw-   1 root     root       4, 130 Mar 27 21:51 ptyp2
crw-rw-rw-   1 root     root       4, 131 Mar 27 21:51 ptyp3
crw-rw-rw-   1 root     root       4, 132 Mar 27 21:51 ptyp4
crw-rw-rw-   1 root     root       4, 133 Mar 27 21:51 ptyp5
crw-rw-rw-   1 root     root       4, 134 Mar 27 21:51 ptyp6
crw-rw-rw-   1 root     root       4, 135 Mar 27 21:51 ptyp7
crw-rw-rw-   1 root     root       4, 136 Mar 27 21:51 ptyp8
crw-rw-rw-   1 root     root       4, 137 Mar 27 21:51 ptyp9
crw-rw-rw-   1 root     root       4, 138 Mar 27 21:51 ptypa
crw-rw-rw-   1 root     root       4, 139 Mar 27 21:51 ptypb
crw-rw-rw-   1 root     root       4, 140 Mar 27 21:51 ptypc
crw-rw-rw-   1 root     root       4, 141 Mar 27 21:51 ptypd
crw-rw-rw-   1 root     root       4, 142 Mar 27 21:51 ptype
crw-rw-rw-   1 root     root       4, 143 Mar 27 21:51 ptypf
brw-rw-rw-   1 root     root       1,   1 Mar 27 21:51 ram
crw-rw-rw-   1 root     root       5,   0 Mar 27 21:51 tty
crw--w--w-   1 root     other      4,   1 Mar 27 21:51 tty1
crw--w--w-   1 root     root       4,   2 Mar 27 21:51 tty2
crw--w--w-   1 root     root       4,   3 Mar 27 21:51 tty3
crw--w--w-   1 root     root       4,   4 Mar 27 21:51 tty4
crw-rw-rw-   1 root     root       4,   5 Mar 27 21:51 tty5
crw-rw-rw-   1 root     root       4,   6 Mar 27 21:51 tty6
crwxrwxrwx   2 root     root       4,  64 Mar 29 14:39 tty64
crw-rw-rw-   1 root     root       4,   7 Mar 27 21:51 tty7
crw-rw-rw-   1 root     root       4,   8 Mar 27 21:51 tty8
crw-rw-rw-   1 root     root       4, 192 Mar 27 21:51 ttyp0
crw-rw-rw-   1 root     root       4, 193 Mar 27 21:51 ttyp1
crw-rw-rw-   1 root     root       4, 194 Mar 27 21:51 ttyp2
crw-rw-rw-   1 root     root       4, 195 Mar 27 21:51 ttyp3
crw-rw-rw-   1 root     root       4, 196 Mar 27 21:51 ttyp4
crw-rw-rw-   1 root     root       4, 197 Mar 27 21:51 ttyp5
crw-rw-rw-   1 root     root       4, 198 Mar 27 21:51 ttyp6
crw-rw-rw-   1 root     root       4, 199 Mar 27 21:51 ttyp7
crw-rw-rw-   1 root     root       4, 200 Mar 27 21:51 ttyp8
crw-rw-rw-   1 root     root       4, 201 Mar 27 21:51 ttyp9
crw-rw-rw-   1 root     root       4, 202 Mar 27 21:51 ttypa
crw-rw-rw-   1 root     root       4, 203 Mar 27 21:51 ttypb
crw-rw-rw-   1 root     root       4, 204 Mar 27 21:51 ttypc
crw-rw-rw-   1 root     root       4, 205 Mar 27 21:51 ttypd
crw-rw-rw-   1 root     root       4, 206 Mar 27 21:51 ttype
crw-rw-rw-   1 root     root       4, 207 Mar 27 21:51 ttypf
crw-rw-rw-   1 root     root       4,  64 Mar 27 21:51 ttys1
crw-rw-rw-   1 root     root       4,  65 Mar 27 21:51 ttys2
crw-rw-rw-   1 root     root       4,  66 Mar 27 21:51 ttys3
crw-rw-rw-   1 root     root       4,  67 Mar 27 21:51 ttys4
-rw-r--r--   1 root     root         4480 Mar 29 14:38 zfiles

(/dev directory files, ugh...: These seem to change with every
major release of Linux. For beginners, all that is important is to
realize/know that;

/dev/at0 is a 5 1/4" high density 1.2Mb floppy disk in drive a:
/dev/at1 is a 3 1/2" high density 1.4Mb floppy disk in drive b:

/dev/tty64 is your usual comm port #1 which you call out from
   to run your telecommunications program.)

etc:
total 127
drwxr-xr-x   2 root     root          288 Mar 29 16:25 ./
drwxr-xr-x  12 root     root          320 Mar 30 10:16 ../
-rw-r--r--   1 root     root          204 Mar 27 21:52 group
-rwxr-xr-x   1 root     root        29700 Mar 27 21:52 init*
-rw-r--r--   1 root     root          128 Mar 27 21:52 inittab
-rw-r--r--   1 root     root           68 Mar 27 21:52 issue
-rw-r--r--   1 root     root          365 Mar 27 21:52 motd
-rw-r--r--   1 root     root           12 Mar 30 10:06 mtab
-rw-r--r--   1 root     root           34 Mar 28 17:47 mtools
-rw-r--r--   1 root     root          152 Mar 27 21:52 passwd
-rw-r--r--   1 root     root          316 Mar 29 16:25 rc
-rw-r--r--   1 root     root          654 Mar 27 21:52 rc.orig1
-rw-r--r--   1 root     root           51 Mar 27 21:52 securetty
-rw-r--r--   1 root     root        14322 Mar 27 21:52 termcap
-rwxr-xr-x   1 root     root         9220 Mar 27 21:52 update*
-rw-r--r--   1 root     root          224 Mar 30 10:06 utmp
-rw-r--r--   1 root     root         3304 Mar 30 10:06 wtmp

(For beginner's, the 'rc' is about the only file worth noting
here. It is your initialization file at start up, it is a text
file, and you can change anything in here that you want to reflect
things that you want at setup/startup of your Linux system.)


===========================================================
So, there you have it, a basic 'beginner's guide' for Linux.
If you have found errors in this guide and would like me to
implement the changes then please send me the 'corrected text'
section from this guide so that it would be easy for me to drop
that section in to replace the incorrect section.  Comments,
suggestions should be addressed to;
boyer@sumax.seattleu.edu
chuck boyer
*****************************

   dd
           disk dumper
           Low-level copying using specified blocksizes (useful for
raw
           devices).

           Usage: dd if=infile of=outfile ibs=inputblocksize
           obs=outputblocksize
           count=nblocks skip=nblocks
I recognize my typing :-). Might be good to put in some indication
of
line wrapping (perhaps some backslashes?), otherwise people might
think that you're typing these parameters as input to dd, rather
than
all part of one command line.

   head
           print the first few lines of a file.

           'head filename' prints the first 5 lines of the file.

10 lines...

   ln
                (link)
                link a file
                using 'link' you can save file space in bytes. You
issue
                a command line command to make a link in this
directory,
                to a file which resides in another directory. The
file
                in the other directory stays there. A 'name-marker'
in
                the inode table is given a number and a filename in
the 
                current directory that you are in. The new
'name-marker
                filename' link runs the file in the linked from
file/
                directory.

I see you already have the explanation I typed above... I think
this
one is slightly confusing, though :-)

                'ls -l(ENTER)' gives;.....
                f.....rwxr--r--    01234    Mar2 10:00  file1
                f.....rwx------      443    Mar3  1:39  file2
                f.....rw-rw-rw-     8930    ----6:00    file3

I'm not sure what's going on here with the dots. I think you used
to
have a listing that looked correct last time.

                etc. (output on down listed vertically on the
screen. 
                (Scrolls).

                'ls -lFR(ENTER)' gives.....

This looks like ls -FR.

                /bin
                         /docs
                                  file1
                                  file2
                                  file3
                                  file4
                                  file6
                                  file7
                                  file8
                                  file9
                                  file10
                                  file11
                                  file12
                                  file13
                                  file14
                                  readme

                                       /bin/docs/old
                                                    file1
                                                    orchestrate.1
                                                    moonbeams.txt

                etc.....

                You can fit the output of the directory listing
command
                through the use of a director (greater-than symbol
key)
                and put it into a file instead of to stdin/stdout 
                (keyboard, screen). 'ls > filenames'
                Would save the output of the 'ls' command to a file
                named 'filenames.' Then you can type the contents
of
                'filenames' to screen (stdout).

Well, slightly off, the file filenames is stdout here. We would
say,
stdout has been redirected to that file, rather than the terminal,
as
is usual. Then when you cat filenames, stdout is the screen again.
The
usefulness of stdin/stdout is for programming: in the ls program,
you
just print the output to stdout. Then users can just type ls (not
redirecting) or ls and redirect with >; the ls program doesn't know
or
need to know about this, but now the user is able to put the output
into a file. BTW, I haven't seen any examples of redirecting stdin:
this would be done with cat < filename. And you can do both: 

cat < infile > outfile

I'm not sure why you would do this here, but it is useful for
programs
that do some operation on stdin and print it to stdout (such
programs
are called filters), such as grep, sed, awk, etc.

   mtab
            mount table

This isn't a program, so it is a bit confusing to find it here.
Perhaps spell it out: /etc/mtab, a data file containing a list of
mounted filesystems.

   mv
            move or rename a file

            'mv filename newfilename' would rename 'filename'
            to 'newfilename'.
            DOS: somewhat like DOS's 'ren(ame)' command

Note you can also mv between different directories, and mv
directories
(I don't think that DOS can do this). This is possible because you
are
just changing a name in a directory, leaving the inode the same.

   tar
           tape archiver/files w/sub-directories attached into
           a compressed 'tar' file.

           'tar cvf tarnamefile dirname' would compress and
           keep in order all directories and files in the
           directories into the tar file 'tarnamefile' from
           the directory name you supplied 'dirname'.

           ('tar xvf tarname.tar' would uncompress it back
           to its original form.)

Actually you need the 'z' key (zcvf, and zxvf) to do compression.
Otherwise the files are all rolled into one tar file, but not
compressed. 

   utmp
           user accounting data

I think this is just a file (/etc/utmp), and not a command. Use w
to
find out who is logged on what terminals and when.

   To uncompress a file;

   'uncompress bin2.tar.Z'

   would uncompress the file and leave you with;

   bin2.tar
   'tar xvf bin2.tar' would unpack the contents of 'bin2.tar'
creating 
   a /bin directory and placing all of the packed files into it.

   (keep notes handy, that's 'tar xvf' for unpacking, and 'tar cvf'
   for packing into the archive.)

Actually you can also do tar xzvf bin2.tar.Z, and tar zcvf
bin2.tar.Z
to create it. This can be important if you have very little disk
space. For example, compress works by first creating the compressed
file, then erasing the original. This means that you need enough
space
for both the compressed and uncompressed versions of the file. tar
does it on the fly, on the other hand.

Something went wrong down here -- the file listing disappeared:

   >An explanation of the above files' listing;
   >-rwxr-xr-x 
   >are the 'permissions' settings for the files/directories.
   >1 root 
   >is the owner of the file (root in this case.)

OK. A very good introduction otherwise -- thanks for all the work!

Raj
***********************************
end of suggestions.
***********************************

BASH initialization file.
This file is named '.profile' and is a text file. It includes
instructions for BASH to follow at login time that initializes it
for the duration of the login. (of course things can be changed,
but you want to include things in here that will be useful for you,
time saving, etc.) The initialization file '.profile' is alike the
'autoexec.bat' file and 'config.sys' files in DOS.

In the '.profile' file (it belongs in the home directory for each
user, by the way, or in '/' for a one-person system where you are
the system administrator) you can set up what the prompt will look
like, aliases, the length of the history save file list (how many
lines of command line instructions you have issued that you can
call back with the history command), and other nifty things.

Let's address some of these.
The alias function.
'alias' is a function that allows you to use one keystroke to call
a string of keystrokes for you. For instance, I use the alias;
'll' to issue the command 'ls -l' for me. So, instead of typing
'ls -l', I only have to type 'll' and the alias tells the shell to
type in 'ls -l'. It says to the shell "'ll' means 'ls -l', okay?,
do it!"
=====
BASH/
=====
Bash is a shell. It is the interpreter between the operator and
the Operating System. (csh, sh, bash, ash, tcsh, ksh are all
different shells, in DOS it is command.com, or 4DOS.)

Like the autoexec.bat and config.sys system initialization files
in DOS that get read at boot up time there are usually the same
kind of initialization files in the shells in unix/Linux.

.profile is the initialization file in Linux using Bash (Bourne
Again Shell).
