Copy Link
Add to Bookmark
Report
H-Net Magazine Vol 1 Issue 1 File 03
H-NET H-NET H-NET H-NET H-NET H-NET H-NET H
N N
E ** H-Net Magazine ** E
T T
H Volume One, Issue 1, File #03 of 20 H
N N
E An Introduction to UNIX, by MINOTAUR. E
T T
H-NET H-NET H-NET H-NET H-NET H-NET H-NET H
UNIX is widely-touted as 'the operating sustem of the future', though in fact
it dates from 1969 (it was developed originally by Bell Laboratories, which
runs most of the telephone systems in the USA). Since then it's been under
continuous development; so it's not so much an old operating system as a fairly
mature one, if you see what I mean. Hackernet BBS has many unix files for you.
Unix gets brownie points straight off because it was conceived by a user of
computers rather than a software specialist or some other sort of software
designer. So it is relatively easy to use; which nearly all other software the
prime goal often seems to be to make money, or to sell more hardware and
software, or whatever.
In brief, UNIX is a general-purpose, multi-user operarting system with a clever
method of holding files. It's a complex system, which means both that it is
rich in facilities and difficult to get to grip with - until now!.....
BEGINNER'S GUIDE TO THE WONDERFUL WORLD OF UNIX
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The aim of this first textfile is to give an insight into the fundamentals of
UNIX. Subsequent textfiles will delve into all areas of UNIX in greater depth.
WHAT IS UNIX?
~~~~~~~~~~~~~
The UNIX operating system can be divided into a number of distinct parts. First
there is the part of the system which performs all of the interface to the
hardware, scheduling disks, managing memory, handling terminal I/O and
generallu handling any requests to and from the devices on the system. This
part of UNIX is called the UNIX Kernel. It is in fact one large, compiled 'C'
program which is kept on the hard disk and loaded into memory when the system
is booted up. The UNIX Kernel is always kept in memory because practically
everything that is done on UNIX uses the Kernel. Buts on its own, it is of
little use. There is no point in just having an interface to the hardware - an
itnerface to the user is also required. This is provided by the UNIX shell.
The shell is another name for a TIP (Terminal Interface Program) or a JCL (Job
Control Language). Its job is to read input from the terminal and execute the
right programs, depending on the input. A program which is executing in UNIX
is called a process. In fact, the shell is also a 'C' program which is
executing for each terminal which is logged on. It reads input from the
terminal, interprets the input in various ways and starts the appropriate
processes.
As well as interpreting input and executing processes, the shell has its own
control-flow constructs and it can therefore be used as a programming language.
It also handles pipes and redirection of I/O which will be the subject of a
later textfile.
The way the UNIX shell works is much the same as other operating systems. It
displays a prompt, normally '$' the user types in the command to execute and
the shell reads the command, searches for the program which is the same name as
the command typed in and it then executes this file, if it found it. When the
program finishes executing, the shell redisplays the prompt to the terminal.
OK, so we have a Kernel to handle the devices and a Shell to interpret input
form the users terminal. The final and by far the largest part of UNIX is the
Programs. There are many Programs in UNIX which form a part of the operating
system. In UNIX jargon, these are called Utilities.
There are Utilities to look at directories, edit files, semd files to the line
printer, perform backups, look at files, delete files, the list is endless.
These Utilities are, to the user, commands which are typed in at the terminal
prompt. For example; 'ls' is the UNIX Utility to list the directory; 'cd' is
the Utility to change directory. In some systems the Utilities form a part of
the terminal interface program which interacts with the user. In UNIX, very
few Utilities are a part of the Shell, the majority of them are external to the
Shell and are called up whenever they are needed.
This is because there are 200-300 UNIX Utilities, and including all of them in
the shell would obviously increase the size of the Shell to an unreasonable
level. It is much neater to keep them on the disk to be called as and when
they are needed.
On a typical UNIX system, as well as the operating system, there would also be
some other packages, word processing, spreadsheets, etc. These are necessary
because UNIX does not include any of these - UNIX is only an Operating System.
THE UNIX FILE STRUCTURE
~~~~~~~~~~~~~~~~~~~~~~~
The above description of UNIX is very conceptual. You never actually se the
UNIX Kernel, excpept perhaps as a process on the system. The Shell too, is
just always there when you login. The file structure, however, has to be
manipulated and managed by the user all the time. The UNIX file structure is
hierarchical.
Within the file structure there are files and there are directories - as shown
in the diagram below :-
/(root)
|
_________________________________________________
| | | | | | |
bin dev etc lib tmp unix usr
| | | | | | |
----- ----- ----- ----- ----- ----- -----
| | | | | | | | | | | | | | | | | | | | |
--- ---
||| |||
Files contain data and directories contain either files and/or directories. At
the top of the hierarchy is the ROOT directory, this is sometimes referred to
as /(slash). Below the root directory are the system files and directories.
When a user logs into the system, he logs into his HOME directory. Every user
of the system has a HOME directory where he can create and delete files and
directories. This part of the system belongs to him. User directories are
usually kept in the directory 'usr' which is directly below the root directory.
For example, say the user Fred has the directory structure as shown below :-
/(root)
|
usr
|
fred
|
----------------------------------
| | | | |
cprogs memos wpfles sprdsht pending
| | | | |
----- ----- ----- ----- -----
| | | | | | | | | | | | | | |
1990
When Fred logs on he will automatically go to the directory 'fred'. If
however, Fred wants to examine his spreadsheets, he may want to go to the
spreadsheet directory. He would do this by using the 'cd' command to change
directory, i.e:
$cd sprdsht
This command would make his CURRENT DIRECTORY the spreadsheets directory but
his HOME directory wouls remain the same. If he wanted to move to his 1988
directory from his home directory the command would be :
$cd sprdsht/1990
The '/' between the two directory names is the delimiter.
The construct 'sprdsht/1990' is called a Pathname. Infact this particular type
of Pathname is called a Relative Pathname because it is relative to the
directory the user is currently in. That is, the path 'sprdsht/1990' would be
meaningless if the users current directory was 'wpfls'.
Another type of pathname is an Absolute Pathname. This, as the name suggests,
is a path from the root directory and is therefore independent of the user's
current directory. Absolute pathnames are represented by using a '/' as the
first character of a path. For example, the Absolute Pathname of the directory
mentioned would be '/usr/fred/sprdsht/1990'.
The command :-
$cd /usr/fred/sprdsht/1990
would take Fred right to the directory regardless of his current directory. the
command to find the Absolute Directory is :-
$pwd
The stands for 'print working directory'. As mentioned above, the command to
look at the contents of a directory is 'ls'. By simply typing :-
$ls
a list of filenames is output. This looks like :-
cprogs
memos
wpfls
sprdsht
pending
This is fine if just the names is required but, it is impossible to tell from
this information which are files and which are directories. As with a lot of
UNIX commands, the 'ls' command performs a mimimum function.
UNIX commands, generally speaking, have a number of options which can be used
with them, depending on exactly what the user wants. For example the 'ls'
command just lists directories, if you want extra information, you have to ask
for it. UNIX must have either been written by a mimimalist or someone who
didn't like typing!!! It does no more and no less than it is asked to, this is
something that users find quite difficult to understand.
The 'ls' command is the perfect example of this. In most other systems it
would be called 'dir' or 'list'. The most commonly used option with 'ls' is
'ls -l'. In this case the 'l' stands for 'long'. The command therefore
produces a long listing of the current directory. The output looks soemthing
like that shown below :-
drwxr_xr_x 4 Fred 96 Jun 1 10:00 cprogs
drwxr_xr_x 4 Fred 195 Jul 25 09:34 memos
drwxr-xr_x 2 Fred 167 Aug 14 17:29 wpfls
drwxr_xr_x 2 Fred 84 May 7 07:56 sprdsht
drwxr_xr_x 2 Fred 952 Jun 16 13:51 pending
This will tell you whether the entry is a file or a directory. The permissions
(r is for read, w is for write, x is for execute), the number of links to the
file, the owner, the size (in bytes), the date it was last modified, and the
name of the entry. Options for the commands are sometimes (not always)
preceeded with a minus sign and they usually consist of a letter which usually
stands for something. The reason for this vagueness in the format of UNIX is
that UNIX has evolved through time and commands have been written by a variety
of people from a variety of places so there are no hard and fast rules - this
is another thing that newcomers to UNIX find frustrating. It would be true to
say that for each one of the 'rules' mentioned above, there are exceptions.
There are also special commands for adding and removing directories from the
directory structure. They are 'rmdir' for removing directories and 'mkdir' for
making directories. They both expect a Pathname as a parameter which is the
name of the directory to be created or removed. For example, to create the
directory 'letters' below the directory 'wpfls' from Fred's HOME directory :-
$mkdir wpfls/letters
To remove this directory :-
$rmdir wpfls/letters
The command 'rmdir' will only remove empty directories, that is directories
which do not contain files or sub-directories.
Every directory in UNIX has two hidden entries, these are '.'(dot) and '..'
(dot-dot). These are created when the directory is created. '.' references
the current directory and '..' references the directory above the current
directory (called the Parent directory). These two directories are in fact the
key to the way the whole file system is put together. They can be seen by
using the '-a' option in the 'ls' command (i.e. 'ls -al') and they can also be
used in relative pathnames. For example :-
$cd ../wpfls
from the directory 'sprdsht' in Fred's HOME directory is a perfectly acceptable
command.
With these commands many generations of UNIX users have had their first
foot-hold on UNIX. If you have any UNIX problems or comments to make then
please leave me (MINOTAUR) a message on the Hackernet BBS.
Minotaur.
===============================================================================
[Hackernet BBS,LEEDS,UK(0532)557739, 24hrs. Home of H-Net Hacking magazine]