SysIII/usr/src/man/docs/road_map

'\" To get a copy of this road map on your terminal, type:
'\"     mm /usr/man/docs/roadmap
'\" To get a typeset copy, type:
'\"     mmt /usr/man/docs/roadmap
'\"
'\" System administrators, see all lines that begin with '.
'\"
.ds :? UNIX Documentation Road Map
.if t .PH "''''"
.if t .OH "'\s9\f2\*(:?\^\fP''\\\\nP\s0'"
.if t .EH "'\s9\\\\nP''\f2\*(:?\^\fP\s0'"
.if n .PH "''- % -''"
.if n .nr a 5
.if t .nr a 4
.nr Si \na
.if n .ds ` ""\"
.if t .ds ` ``\"
.if n .ds ' ""\"
.if t .ds ' ''\"
.if n .ds HF 2 1 1 1 1 1 1
.TL
U\s-2NIX\s+2 Documentation Road Map
.AU "G.\ A.\ Snyder" GAS MH
.AU "J.\ R.\ Mashey" JRM MH
.MT 4
.H 1 "INTRODUCTION"
A great deal of documentation exists for
\s-1UNIX\s+1.\(dg
.FS \(dg
UNIX is a Trademark of Bell Laboratories.
.FE
New users are often overcome by the volume and distributed
nature of the documentation.
This \*`road map\*' attempts to be a terse, up-to-date outline of
important documents and information sources.
.P
.I
.in +\w'\|\(rh\|\ 'u
.ti -\w'\|\(rh\|\ 'u
\|\(rh\|\ The information in this road map
is
accurate only for \s-1UNIX\s+1 Edition 3.0; it may
not apply to other versions of \s-1UNIX\s+1.
.R
.in -\w'\|\(rh\|\ 'u
.H 2 "Things \|to \|Do"
See a local \s-1UNIX\s+1 \*`system administrator\*' to obtain a
\*`login name\*' and
get other appropriate system \%information.
'\"
'\"	System administrators should put here local information about
'\"	getting a login ID, etc.
'\"
.H 2 "Notation \|Used \|in \|This \|Road \|Map"
.if n .VL 10 \na 1
.if t .VL 9 \na 1
.LI {\f2N\|\fP}
\(->\ \ Section N in this road map.
.LI \(bu\(bu
\(->\ \ Item required for everyone.
.LI \(bu
\(->\ \ Item recommended for most users.
.LE 1
All other items are optional and depend on specific interests.
Most of the documents mentioned in this road map can
be found in
.I "Documents for U\s-1NIX\s+1" .
.P
Entries in Section
.I n\^
of the \f2U\s-1NIX\s+1 User's Manual\^\fP
are referred to by
.I name (n).
.H 2 "Prerequisite \|Structure \|of \|Following \|Sections"
.DS 1
.in +10
.if n .in +10
.if t .in +4
{2}
.if n \& |
.if t \&  |
.if n .in -10
.if t .in -4
.if t .sp -.5v
.if n \&   ----------------
.if t \&    ----------------
.if t .sp -0.2v
.if t \&    |       |     |     |
.if n \&   |      |   |   |
  {3}    {6} {7} {9}
.if n \&  \(sl \e      \e \(sl
.if t \&  \(sl  \e      \e  \(sl
.if t {4} {5}  {8,10}
.if n {4} {5}   {8,10}
.in -10
.DE
.H 1 "BASIC \|INFORMATION"
You won't be able to do much until you have learned most of the material
in {2.1}, {2.2}, and {2.3}.
You must know how to log into the system, make
your terminal work correctly, enter and edit files, and perform
basic operations
on directories and files.
.H 2 "U\s-1NIX\s+1 \|User's \|Manual \|\(bu\(bu"
.BL "" 1
.LI
Read
.I Introduction\^
and
.I "How to Get Started" .
.LI
Read the
.I intro\^
entry in each section.
.LI
Look through Section 1
to become familiar
with command names.
.LI
Note the existence of the
.I "Table of Contents\^"
and of the
.I "Permuted Index" .
.LE 1
Section 1 will be especially needed for reference use.
.br
.if t .ne 6v
.H 2 "U\s-1NIX\s+1 \|for \|Beginners \|(Second \|Edition) \|\(bu\(bu"
.H 2 "A \|Tutorial \|Introduction \|to \|the \|U\s-1NIX\s+1 \|Text \|Editor \|\(bu\(bu"
.H 2 "Advanced \|Editing \|on \|U\s-1NIX\s+1 \|\(bu"
.H 2 "The \|Bell \|System \|Technical \|Journal, \|Vol.\ \|57, \|No.\ \|6, \|Part\ \|2 \|\(bu"
Contains several articles on \s-1UNIX\s+1.
In particular, the first
paper gives a good overview of \s-1UNIX\s+1.
.H 2 "Things \|to \|Do"
.BL "" 1
.LI
Do all the exercises found in {2.2} and {2.3}, and maybe {2.4}.
.LI
If you want some sequence of commands
to be executed each time you log in,
create a file named
.B .profile
in your login directory.\*F\ 
.FS
The directory you are in right after logging into the system.
.FE
A sample
.B .profile
can be found in
.I profile (5).
.LI
Files in directory
.B /usr/news
contain recent information
on various topics.
To print all the news items that have been added since you last
looked, type:
.DS 1
news
.DE
.LE 1
.H 2 "Manual \|Entries \|to \|Be \|Studied"
The following commands are described in Section 1
of the \f2U\s-1NIX\s+1 User's Manual\^\fP and are used for creating,
editing, moving (i.e., renaming), and removing files:
.VL 15 \na 1
.LI cat(1)
concatenate and print files (no pagination).
.LI cd(1)
change working (current) directory.
.LI chmod(1)
change the mode of a file.
.LI cp(1)
copy (\f2cp\^\fP), move (\f2mv\^\fP) or link (\f2ln\^\fP) files.
.LI ed(1)
edit a file.
.LI ls(1)
list a directory;
file names beginning with \f3.\fP are not listed unless
the
.B \-a
flag is used.
.LI mkdir(1)
make a (new) directory.
.LI pr(1)
print files (paginated listings).
.LI pwd(1)
print working directory.
.LI rm(1)
remove (delete) file(s);
.I rmdir\^
removes the named directories, which must be empty.
.LE 1
The following help you communicate with other users,
make proper use of different kinds of terminals,
and print manual entries \%on-line:
.VL 15 \na 1
.LI login(1)
sign on.
.LI mail(1)
send mail to other users or inspect mail from them.
.LI man(1)
print entries of \f2U\s-1NIX\s+1 User's Manual.\^\fP
.LI mesg(1)
permit or deny messages to your terminal.
.LI news(1)
print news items:
.B "news \-n"
prints a list of recent items.
.LI passwd(1)
change your login password.
.LI stty(1)
set terminal options;
i.e., inform the system about the hardware characteristics
of your terminal.
.LI tabs(1)
set tab stops on your terminal.
.LI term(7)
a list of commonly-used terminals.
.LI who(1)
print list of currently logged-in users.
.LI write(1)
communicate with another (logged-in) user.
.LE 1
Several useful status commands also exist:
.VL 15 \na 1
.LI date(1)
print time and date.
.LI du(1)
summarize disk usage.
.LI ps(1)
report active process status.
.LI sum(1)
sum and count blocks in a file.
.LE 1
.H 1 "BASIC \|TEXT \|PROCESSING \|AND \|DOCUMENT \|PREPARATION"
You should read this section if you want to
.I use\^
existing text processing tools to write letters,
memoranda, manuals, etc.
.H 2 "P\s-1WB/MM\s+1\*(EMProgrammer's \|Workbench \|Memorandum \|Macros \|\(bu\(bu"
This is a reference manual, and can be moderately heavy going for a beginner.
Try out some of the examples,
and stick close to the default options.
.H 2 "Typing \|Documents \|with \|P\s-1WB/MM\s+1 \|\(bu\(bu"
A handy fold-out.
.H 2 "N\s-1ROFF/TROFF\s+1 \|User's \|Manual \|\(bu"
Describes the text formatting language in great detail;
look at the \s-1REQUEST\s+1 \s-1SUMMARY\s+1,
but don't try to digest the whole manual on first reading.
.H 2 "Document \|Preparation \|\(bu"
This overview of \s-1UNIX\s+1 text processing
methods is one of
the articles in the BSTJ.
(See {2.5} above).
.H 2 "Manual \|Entries \|to \|Be \|Studied"
.VL 15 \na 1
.LI mm(1)
print a document using the memorandum macros.
.LI nroff(1)
format or typeset (\f2troff\^\fP)
text files;
read this to become familiar with options.
.LI spell(1)
identify possible spelling errors.
.LE 1
To obtain some special functions (e.g., reverse
paper
motion, subscripts, superscripts),
you must either indicate the terminal type to
.I nroff\^
or post-process
.I nroff\^
output through one of the following:
.VL 15 \na 1
.LI 300(1)
handle special functions of \s-1DASI\s+1 300, \s-1DASI\s+1 300s terminals.
.LI 4014(1)
paginate output of Tektronix 4014 terminal.
.LI 450(1)
handle special functions of \s-1DASI\s+1 450 (Diablo 1620) terminal.
.LI col(1)
process text for
terminals lacking physical reverse vertical motion,
such as the Texas Instrument 700 series,
Model 43 \s-1\f2TELETYPE\^\fP\s+1\(rg,
etc.
.LI greek(1)
select terminal filter.
.LI hp(1)
handle special functions of
Hewlett-Packard 2621, 2640, and 2645 series terminals.
.LI tc(1)
simulate phototypesetter.
.LE 1
.H 1 "SPECIALIZED \|TEXT \|PROCESSING"
The tools listed here are of a more specialized nature than those
in {3}.
.H 2 "T\s-1BL\s+1\*(EMA \|Program \|to \|Format \|Tables \|\(bu"
Great help in formatting tabular data
(see
also
.I tbl (1)).
.H 2 "Typesetting \|Mathematics\*(EMUser's \|Guide \|(Second \|Edition) \|\(bu"
Read this if you need to produce mathematical equations.
It describes the use of the equation-setting command
.I eqn (1).
.H 2 "A \|T\s-1ROFF\s+1 \|Tutorial"
An introduction to formatting text with the phototypesetter.
.H 2 "Manual \|Entries \|to \|Be \|Studied"
.if t .VL 15 \na 1
.if n .VL 17 \na 1
.LI cw(1)
use a special
constant-width
\*`example\*' font.
.LI diffmk(1)
mark changes between versions of a file,
using output of
.I diff (1)
to produce \*`revision bars\*' in the right margin.
.LI eqn(1)
preprocessor for
mathematical equations.
.LI eqnchar(7)
special character definitions for
.I eqn (1).
.LI gcat(1)
send phototypesetter output to a central typesetter (site-dependent).
.LI mmt(1)
typeset documents, view graphs, and slides.
.LI tbl(1)
preprocessor for
tabular data.
.LE 1
.H 1 "ADVANCED \|TEXT \|PROCESSING"
You should read this section if you
need
to
.I design\^
your own package of formatting macros or
perform other actions beyond the capabilities of existing tools;
{3} is a prerequisite,
and familiarity with {4} is very helpful,
as is an experienced advisor.
.H 2 "N\s-1ROFF/TROFF\s+1 \|User's \|Manual \|\(bu\(bu"
Look at this in detail and try
modifying the examples.
Read \f2A T\s-1ROFF\s+1 Tutorial\^\fP (see {4.3} above).
.H 2 "Things \|to \|Do"
It is fairly easy to use the text formatters for simple purposes.
A typical application is that of writing simple macros that print
standard headings in order to eliminate repetitive
keying of such headings.
It is extremely difficult to set up general-purpose
macro packages for use by large numbers of people.
Don't re-invent what you can borrow from an existing package
(such as \s-1PWB/MM\s+1\-see {3.1} and {3.2}).
.H 2 "Manual \|Entries \|to \|Be \|Studied"
All entries mentioned in {3.5} and {4.4}.
.H 1 "COMMAND \|LANGUAGE \|(SHELL) \|PROGRAMMING"
The shell provides a powerful programming language
for combining existing commands.
This section should be especially useful to those
who want to automate manual procedures
and build data bases.
.H 2 "The \|U\s-1NIX\s+1 \|Time-Sharing \|System \|\(bu\(bu"
.H 2 "U\s-1NIX\s+1 \|Shell \|Tutorial \|\(bu\(bu"
.H 2 "An \|Introduction \|to \|the \|U\s-1NIX\s+1 \|Shell"
.H 2 "Things \|to \|Do"
If you want to create your own library of commands, for example
.B /usr/gas/bin ,
set the
.B \s-1PATH\s+1
parameter in your
.B .profile
so that
your own library is searched when a command is invoked.
For example:
.DS 1
PATH=\f3:\fP$HOME\f3/\fPbin\f3:/\fPbin\f3:/\fPusr\f3/\fPbin
.DE
The
.B \s-1HOME\s+1
parameter is described in
.I sh (1).
.H 2 "Manual \|Entries \|to \|Be \|Studied"
Read
.I sh (1)
first;
the following entries give further details on commands that are
most frequently used within command language programs:
.VL 15 \na 1
.LI echo(1)
echo arguments (typically to terminal).
.LI env(1)
set environment for command execution.
.LI expr(1)
evaluate an algebraic expression; includes some string operations.
.LI line(1)
read a line from the standard input.
.LI nohup(1)
run a command immune to communications line hang-up.
.LI sh(1)
shell (command interpreter and programming language).
.LI test(1)
evaluate a logical expression.
.LE 1
.if t .ne 10v
.H 1 "FILE \|MANIPULATION"
In addition to the basic commands of {2},
many \s-1UNIX\s+1 commands exist to perform various kinds
of file manipulation.
Small data bases can often be managed quite simply
by combining text processing {5},
command language programming {6},
and the commands listed below in {7.4}.
.H 2 "Things \|to \|Do"
This road map notes only the most frequently-used commands.
It is wise to scan Section 1 of the \f2U\s-1NIX\s+1 User's Manual\^\fP periodically\*(EMyou
will often discover new uses for commands.
.H 2 "S\s-1ED\s+1\*(EMA \|Non-Interactive \|Text \|Editor"
.H 2 "Awk\*(EMA \|Pattern \|Scanning \|and \|Processing \|Language"
.H 2 "Manual \|Entries \|to \|Be \|Studied"
The starred items below are especially useful for
dealing with \*`fielded data\*', i.e., data where each line is a sequence
of delimiter-separated fields.
The following are used to search or edit files in a single pass:
.VL 15 \na 1
.LI awk(1)*
perform actions on lines matching specified patterns.
.LI grep(1)
search a file for a pattern;
more powerful and specialized versions include
.I egrep\^
and
.I fgrep .
.LI sed(1)*
stream editor.
.LI tr(1)
transliterate (substitute or delete specified characters).
.LE 1
The following compare files in different ways:
.VL 15 \na 1
.LI cmp(1)
compare files (byte by byte).
.LI comm(1)
print lines common to two files, or lines that appear in only
one of the two files.
.LI diff(1)
differential file comparator (minimal editing for conversion).
.LE 1
The following combine files and/or split them apart:
.VL 15 \na 1
.LI ar(1)
archiver and library maintainer.
.LI cpio(1)
general file copying and archiving.
.LI cut(1)*
cut out selected fields of each line of a file.
.LI paste(1)*
merge lines from several files.
.LI split(1)
split file into chunks of specified size.
.LE 1
The following interrogate files and print information about them:
.VL 15 \na 1
.LI file(1)
determine file type (best guess).
.LI od(1)
octal dump (and other kinds also).
.LI wc(1)
word (and line and character) count.
.LE 1
Miscellaneous commands:
.VL 15 \na 1
.LI find(1)
search directory structure for specified kinds of files.
.LI sort(1)*
sort or merge files.
.LI tee(1)
copy single input to several output files.
.LI uniq(1)*
report repeated lines in a file, or obtain unique ones.
.LE 1
.H 1 "C \|PROGRAMMING"
Try to use existing tools first,
before writing C programs at all.
.H 2 "The \|C \|Programming \|Language"
By B.\ W.\ Kernighan and D.\ M.\ Ritchie; published by
Prentice Hall (1978).
Comprehensive text, includes a tutorial and a reference manual.
Read the tutorial; try the examples.
Check for updates to the reference manual {8.2} from time to time.
.H 2 "The \|C \|Programming \|Language\-Reference \|Manual \|\(bu\(bu"
.H 2 "U\s-1NIX\s+1 \|Programming \|\(bu"
.H 2 "YACC\*(EMYet \|Another \|Compiler \|Compiler"
.H 2 "LEX\*(EMA \|Lexical \|Analyzer \|Generator"
.H 2 "Lint, a \|C \|Program \|Checker"
.H 2 "Make\*(EMA \|Program \|for \|Maintaining \|Computer \|Programs"
.H 2 "Things \|to \|Do"
Read {8.1} and do some of the exercises.
A good way to become
familiar with
C is to look at the source code of existing
programs,
especially ones whose functions are well known to you.
Much code can be found in directory
.B /usr/src .
In particular, the directory
.B cmd
contains the
source
for most of the commands.
Also, investigate directory
.B /usr/include .
.H 2 "Manual \|Entries \|to \|Be \|Studied"
.VL 15 \na 1
.LI adb(1)
debug C programs on the PDP-11 series of machines.
.LI cc(1)
compile C programs.
.LI ld(1)
link edit object files; you must know about some of its flags.
.LI lex(1)
generate lexical analyzers.
.LI lint(1)
verify C programs.
.LI make(1)
automate program (re)generation procedures.
.LI nm(1)
print name (i.e., symbol) list.
.LI prof(1)
display profile data; used for program optimization.
.LI ps(1)
report active process status.
.LI sdb(1)
debug C programs symbolically on the VAX 11/780.
.LI strip(1)
remove symbols and relocation bits from executable files.
.LI time(1)
time a command.
.LI yacc(1)
parser generator.
.LE 1
.H 1 "NUMERICAL \|COMPUTATION"
.H 2 "DC\*(EMAn \|Interactive \|Desk \|Calculator"
.H 2 "BC\*(EMAn \|Arbitrary \|Precision \|Desk-Calculator \|Language"
.H 2 "Awk\*(EMA \|Pattern \|Scanning \|and \|Processing \|Language"
.H 2 "A \|Portable \|Fortran \|77 \|Compiler"
.H 2 "Ratfor\*(EMA \|Preprocessor \|for \|a \|Rational \|Fortran"
.H 2 "Manual \|Entries \|to \|Be \|Studied"
.VL 15 \na 1
.LI awk(1)
perform actions on lines matching specified patterns.
.LI bc(1)
an
interactive language,
acts as front end for
.I dc (1).
.LI bs(1)
a compiler/interpreter for modest-sized programs.
.LI dc(1)
a
desk calculator.
.LI f77(1)
a Fortran compiler.
.LI ratfor(1)
a
rational Fortran dialect.
.LE 1
.H 1 "INTER-SYSTEM \|COMMUNICATION"
'\"
'\"	Many of the following commands are site-dependent.
'\"	System administrators should alter this information to
'\"	reflect their respective system.
'\"
.H 2 "A \|Dial\-Up \|Network \|of \|U\s-1NIX\s+1 \|Systems"
.H 2 "Manual \|Entries \|to \|Be \|Studied"
The following commands
(most of which are site-dependent)
are useful in communicating with other \s-1UNIX\s+1
systems:
.br
.if t .ne 2v
.VL 15 \na 1
.LI cu(1)
call another system.
.LI dpr(1)
print files off-line at a specified destination.
.LI fget(1)
retrieve files from the \s-1MH HONEYWELL\s+1 6000.
.LI fsend(1)
send files to the \s-1MH HONEYWELL\s+1 6000.
.LI gcat(1)
send phototypesetter output to the \s-1MH HONEYWELL\s+1 6000.
.LI uucp(1)
copy files from one \s-1UNIX\s+1 system to another.
.LI uux(1)
execute command(s) on another \s-1UNIX\s+1 system.
.LE 1
.sp
.I "May 1979"