'\" 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"