\entry{UNIX}{5}{UNIX} \entry{UNIX history}{5}{UNIX history} \entry{DOS}{5}{DOS} \entry{shell}{6}{shell} \entry{perl}{6}{perl} \entry{C}{6}{C} \entry{Windows on PC}{6}{Windows on PC} \entry{MacIntosh}{6}{MacIntosh} \entry{PC windows}{6}{PC windows} \entry{AT&T}{7}{AT&T} \entry{BSD}{7}{BSD} \entry{System V}{7}{System V} \entry{System 5}{7}{System 5} \entry{Making directories}{8}{Making directories} \entry{mkdir}{8}{mkdir} \entry{apropos}{8}{apropos} \entry{Finding commands}{8}{Finding commands} \entry{Help function for commands}{8}{Help function for commands} \entry{Never do in unix}{8}{Never do in unix} \entry{undelete}{9}{undelete} \entry{delete}{9}{delete} \entry{core}{9}{core} \entry{test programs}{9}{test programs} \entry{test, don't call your program this}{9}{test, don't call your program this} \entry{Commands as files}{9}{Commands as files} \entry{Built in commands}{9}{Built in commands} \entry{shell}{9}{shell} \entry{Commands path}{9}{Commands path} \entry{PATH}{9}{\code {PATH}} \entry{path}{9}{\code {path}} \entry{kernel}{9}{kernel} \entry{shell}{9}{shell} \entry{Bourne shell}{10}{Bourne shell} \entry{sh}{10}{\file {sh}} \entry{C shell}{10}{C shell} \entry{csh}{10}{\file {csh}} \entry{tcsh}{10}{tcsh} \entry{bash}{10}{bash} \entry{ksh}{10}{ksh} \entry{Role of C in unix}{10}{Role of C in unix} \entry{C, role in unix}{10}{C, role in unix} \entry{Wrapper functions}{10}{Wrapper functions} \entry{C library calls and shell commands}{10}{C library calls and shell commands} \entry{Shell commands and C library calls}{10}{Shell commands and C library calls} \entry{Debugger for C}{10}{Debugger for C} \entry{make}{10}{make} \entry{lex}{10}{lex} \entry{yacc}{10}{yacc} \entry{rpcgen}{10}{rpcgen} \entry{I/O streams}{10}{I/O streams} \entry{Standard input}{10}{Standard input} \entry{Standard output}{10}{Standard output} \entry{Standard error}{10}{Standard error} \entry{. directory}{11}{. directory} \entry{.. directory}{11}{.. directory} \entry{Error messages}{11}{Error messages} \entry{root user}{11}{root user} \entry{superuser}{11}{superuser} \entry{nobody}{11}{nobody} \entry{File hierarchy}{11}{File hierarchy} \entry{Hierarchy, file}{11}{Hierarchy, file} \entry{Kernel}{12}{Kernel} \entry{. directory}{12}{. directory} \entry{.. directory}{12}{.. directory} \entry{Hard links}{12}{Hard links} \entry{Soft links}{13}{Soft links} \entry{Symbolic links}{13}{Symbolic links} \entry{ln -s}{13}{\code {ln -s}} \entry{Hard links}{13}{Hard links} \entry{inodes}{13}{inodes} \entry{Index nodes}{13}{Index nodes} \entry{telnet}{15}{telnet} \entry{Logging on}{15}{Logging on} \entry{Environment, unix user}{19}{Environment, unix user} \entry{User environment}{19}{User environment} \entry{Login environment}{19}{Login environment} \entry{X-windows}{19}{X-windows} \entry{Command interpreter}{19}{Command interpreter} \entry{init}{19}{\emph {init}} \entry{Environment variables}{19}{Environment variables} \entry{Wildcards}{19}{Wildcards} \entry{path}{21}{path} \entry{Command path}{21}{Command path} \entry{which command}{21}{which command} \entry{Environment variables}{21}{Environment variables} \entry{Global variables}{22}{Global variables} \entry{Variables, global}{22}{Variables, global} \entry{Local variables}{22}{Local variables} \entry{Variables, local}{22}{Variables, local} \entry{env command}{22}{\code {env} command} \entry{Wildcards}{22}{Wildcards} \entry{Joker notation}{22}{Joker notation} \entry{Matching filenames}{22}{Matching filenames} \entry{Matching filenames}{22}{Matching filenames} \entry{Matching strings}{23}{Matching strings} \entry{Regular expressions}{23}{Regular expressions} \entry{Expressions, regular}{23}{Expressions, regular} \entry{egrep command}{23}{\code {egrep} command} \entry{. in regular expressions}{24}{. in regular expressions} \entry{{\tt\hat} in regular expressions}{24}{^ in regular expressions} \entry{$ in regular expressions}{24}{$ in regular expressions} \entry{[] in regular expressions}{24}{[] in regular expressions} \entry{* in regular expressions}{24}{* in regular expressions} \entry{{\tt\char 43} in regular expressions}{24}{+ in regular expressions} \entry{? in regular expressions}{24}{? in regular expressions} \entry{Inserting a command into a string}{25}{Inserting a command into a string} \entry{Result of a command into a string}{25}{Result of a command into a string} \entry{Getting command output into a string}{25}{Getting command output into a string} \entry{CTRL-A}{25}{\key {CTRL-A}} \entry{CTRL-C}{25}{\key {CTRL-C}} \entry{CTRL-D}{25}{\key {CTRL-D}} \entry{CTRL-E}{25}{\key {CTRL-E}} \entry{CTRL-L}{25}{\key {CTRL-L}} \entry{CTRL-Z}{25}{\key {CTRL-Z}} \entry{Shells, various}{25}{\key {Shells, various}} \entry{bash}{25}{bash} \entry{csh}{25}{csh} \entry{jsh}{25}{jsh} \entry{ksh}{25}{ksh} \entry{sh}{25}{sh} \entry{sh5}{25}{sh5} \entry{tcsh}{25}{tcsh} \entry{zsh}{25}{zsh} \entry{Terminals}{26}{Terminals} \entry{Command window}{26}{Command window} \entry{xterm}{26}{\samp {xterm}} \entry{shelltool}{26}{\samp {shelltool}} \entry{cmdtool}{26}{\samp {cmdtool}} \entry{screen}{26}{\samp {screen}} \entry{rlogin}{26}{\samp {rlogin}} \entry{rsh}{26}{\samp {rsh}} \entry{telnet}{26}{\samp {telnet}} \entry{ed}{26}{\samp {ed}} \entry{vi}{26}{\samp {vi}} \entry{emacs}{26}{\samp {emacs}} \entry{xemacs}{26}{\samp {xemacs}} \entry{pico}{26}{\samp {pico}} \entry{xedit}{26}{\samp {xedit}} \entry{textedit}{26}{\samp {textedit}} \entry{ls command}{26}{\samp {ls command}} \entry{cp command}{26}{\samp {cp} command} \entry{mv command}{26}{\samp {mv} command} \entry{Renaming files}{26}{Renaming files} \entry{Moving files}{26}{Moving files} \entry{touch command}{26}{\samp {touch} command} \entry{Creating files}{26}{Creating files} \entry{Time stamp, updating}{26}{Time stamp, updating} \entry{Date stamp, updating}{26}{Date stamp, updating} \entry{Updating file time stamp}{26}{Updating file time stamp} \entry{rm command}{26}{\samp {rm} command} \entry{unlink command}{26}{\samp {unlink} command} \entry{mkdir command}{26}{\samp {mkdir} command} \entry{Creating directories}{26}{Creating directories} \entry{Directories, creating}{26}{Directories, creating} \entry{Directories, deleting}{26}{Directories, deleting} \entry{rmdir command}{26}{\samp {rmdir} command} \entry{cat command}{27}{\samp {cat} command} \entry{PRINTER variable}{27}{\samp {PRINTER} variable} \entry{lp command}{27}{\samp {lp} command} \entry{lpr command}{27}{\samp {lpr} command} \entry{Printing a file}{27}{Printing a file} \entry{lpq}{27}{\samp {lpq}} \entry{Printer queue}{27}{Printer queue} \entry{Printer status}{27}{Printer status} \entry{lpstat}{27}{\samp {lpstat}} \entry{more command}{27}{\samp {more} command} \entry{Viewing a file}{27}{Viewing a file} \entry{Browsing through a file}{27}{Browsing through a file} \entry{type in DOS}{27}{\samp {type} in DOS} \entry{less command}{27}{\samp {less} command} \entry{nc}{27}{nc} \entry{mc}{27}{mc} \entry{Access control}{27}{Access control} \entry{Granting permission}{27}{Granting permission} \entry{chmod command}{27}{\samp {chmod} command} \entry{Changing file mode}{27}{Changing file mode} \entry{File mode, changing}{27}{File mode, changing} \entry{chown command}{27}{\samp {chown} command} \entry{chgrp command}{27}{\samp {chgrp} command} \entry{Access control lists}{27}{Access control lists} \entry{ACLs}{27}{ACLs} \entry{fmgr file manager}{27}{\samp {fmgr} file manager} \entry{cut command}{27}{\samp {cut} command} \entry{paste command}{27}{\samp {paste} command} \entry{sed editor}{27}{\samp {sed} editor} \entry{awk}{27}{\samp {awk}} \entry{find command}{27}{\samp {find} command} \entry{locate command}{27}{\samp {locate} command} \entry{whereis command}{27}{\samp {whereis} command} \entry{Disk usage.}{28}{Disk usage.} \entry{du command}{28}{\samp {du} command} \entry{df command}{28}{\samp {df} command} \entry{users command}{28}{\samp {users} command} \entry{finger service}{28}{\samp {finger} service} \entry{who command}{28}{\samp {who} command} \entry{w command}{28}{\samp {w} command} \entry{Sending messages}{28}{Sending messages} \entry{Messages}{28}{Messages} \entry{write command}{28}{\samp {write} command} \entry{mesg}{28}{\samp {mesg}} \entry{talk service}{28}{\samp {talk} service} \entry{IRC}{28}{\samp {IRC}} \entry{Internet relay chat}{28}{Internet relay chat} \entry{Mail clients}{28}{Mail clients} \entry{elm mailer}{28}{\samp {elm} mailer} \entry{pine mailer}{28}{\samp {pine} mailer} \entry{rmail in emacs}{28}{\samp {rmail} in emacs} \entry{zmail client}{28}{\samp {zmail} client} \entry{File transfer}{28}{File transfer} \entry{ftp program}{28}{\samp {ftp} program} \entry{ncftp program}{28}{\samp {ncftp} program} \entry{Compilers}{29}{Compilers} \entry{cc}{29}{\samp {cc}} \entry{CC}{29}{\samp {CC}} \entry{gcc}{29}{\samp {gcc}} \entry{g{\tt\char 43}{\tt\char 43}}{29}{\samp {g++}} \entry{ld loader/linker}{29}{\samp {ld} loader/linker} \entry{ar archiver}{29}{\samp {ar} archiver} \entry{dbx debugger}{29}{\samp {dbx} debugger} \entry{Debugger}{29}{Debugger} \entry{gdb debugger}{29}{\samp {gdb} debugger} \entry{xxgdb}{29}{\samp {xxgdb}} \entry{Debugger GUI}{29}{Debugger GUI} \entry{TCL}{29}{\samp {TCL}} \entry{scheme}{29}{scheme} \entry{Mercury}{29}{Mercury} \entry{ps command}{29}{\samp {ps} command} \entry{vmstat virtual memory stats}{29}{\samp {vmstat} virtual memory stats} \entry{netstat network statistics}{29}{\samp {netstat} network statistics} \entry{rpcinfo}{29}{\samp {rpcinfo}} \entry{showmount}{29}{\samp {showmount}} \entry{Mounted file systems}{29}{Mounted file systems} \entry{System details}{29}{\samp {System details}} \entry{Operating system name}{29}{Operating system name} \entry{System name}{29}{System name} \entry{hostname command}{29}{\samp {hostname} command} \entry{domainname command}{29}{\samp {domainname} command} \entry{Domainname}{29}{Domainname} \entry{nslookup command}{29}{\samp {nslookup} command} \entry{Internet resources}{30}{Internet resources} \entry{archie program}{30}{\samp {archie} program} \entry{FTP resources, finding}{30}{FTP resources, finding} \entry{Finding FTP files}{30}{Finding FTP files} \entry{xarchie client}{30}{\samp {xarchie} client} \entry{xrn news reader}{30}{\samp {xrn} news reader} \entry{fnews news reader}{30}{\samp {fnews} news reader} \entry{mosaic}{30}{\samp {mosaic}} \entry{Postscript viewers}{30}{Postscript viewers} \entry{Text formatting}{30}{Text formatting} \entry{tex}{30}{\samp {tex}} \entry{latex}{30}{\samp {latex}} \entry{Hypertext}{30}{Hypertext} \entry{texinfo system}{30}{\samp {texinfo} system} \entry{dvi to postscript}{30}{dvi to postscript} \entry{ghostview postscript previewer}{30}{\samp {ghostview} postscript previewer} \entry{ghostscript {\tt\char 34}GNU postscript{\tt\char 34} interpreter}{30}{\samp {ghostscript} "GNU postscript" interpreter} \entry{Picture processing}{30}{Picture processing} \entry{xv picture processor}{30}{\samp {xv} picture processor} \entry{gif}{30}{gif} \entry{jpg}{30}{jpg} \entry{tiff}{30}{tiff} \entry{xpaint program}{30}{\samp {xpaint} program} \entry{Painting program}{30}{Painting program} \entry{xfig drawing program}{30}{\samp {xfig} drawing program} \entry{Drawing program}{30}{Drawing program} \entry{Background picture}{30}{\samp {Background picture}} \entry{date command}{30}{\samp {date} command} \entry{Time and date}{30}{Time and date} \entry{Spelling checker}{30}{Spelling checker} \entry{Calculator, X windows}{30}{Calculator, X windows} \entry{Calculator, shell}{30}{Calculator, shell} \entry{Sonar ping}{30}{\samp {Sonar} ping} \entry{Testing reponse from other hosts.}{30}{Testing reponse from other hosts.} \entry{tty}{31}{tty} \entry{Teletype terminal}{31}{Teletype terminal} \entry{xterm program}{31}{xterm program} \entry{rlogin program}{31}{rlogin program} \entry{X window system}{31}{X window system} \entry{X protocol}{32}{X protocol} \entry{X display}{32}{X display} \entry{Display, X}{32}{Display, X} \entry{.xsession file}{32}{.xsession file} \entry{Setting up the x environment}{32}{Setting up the x environment} \entry{DISPLAY variable}{33}{DISPLAY variable} \entry{X display}{33}{X display} \entry{X windows authentification}{33}{X windows authentification} \entry{X windows access}{33}{X windows access} \entry{xhost mechanism}{33}{xhost mechanism} \entry{Xauthority mechanism}{34}{Xauthority mechanism} \entry{X access control}{34}{X access control} \entry{Screens}{34}{Screens} \entry{Multiple screens}{34}{Multiple screens} \entry{Access to files}{37}{Access to files} \entry{Permissions on files}{37}{Permissions on files} \entry{Access rights}{37}{Access rights} \entry{File access permission}{37}{File access permission} \entry{groups}{37}{groups} \entry{/etc/group}{37}{\file {/etc/group}} \entry{File protection bits}{37}{File protection bits} \entry{Protection bits}{37}{Protection bits} \entry{Access bits}{37}{Access bits} \entry{Long file listing}{37}{Long file listing} \entry{ls -l}{37}{\code {ls -l}} \entry{Text form of access bits}{38}{Text form of access bits} \entry{Access bits, text form}{38}{Access bits, text form} \entry{Access bits, octal form}{38}{Access bits, octal form} \entry{chmod command}{38}{\code {chmod} command} \entry{umask variable}{39}{\code {umask} variable} \entry{s-bit}{39}{s-bit} \entry{setuid bit}{39}{setuid bit} \entry{setgid bit}{39}{setgid bit} \entry{umask variable}{39}{\code {umask} variable} \entry{Masking programs executable}{39}{Masking programs executable} \entry{Executable, making programs}{39}{Executable, making programs} \entry{chown command}{39}{\code {chown} command} \entry{chgrp command}{39}{\code {chgrp} command} \entry{Sticky bit}{40}{Sticky bit} \entry{s-bit}{40}{s-bit} \entry{t-bit}{40}{t-bit} \entry{.cshrc file}{41}{\file {.cshrc} file} \entry{.login file}{41}{\file {.login} file} \entry{Login evironment}{41}{Login evironment} \entry{C shell setup files}{41}{C shell setup files} \entry{Setting up the C shell}{41}{Setting up the C shell} \entry{Setting the prompt}{41}{Setting the prompt} \entry{Prompt, redefining}{41}{Prompt, redefining} \entry{set command}{42}{\code {set} command} \entry{Local variables in csh}{42}{Local variables in csh} \entry{setenv command}{42}{\code {setenv} command} \entry{Global variables in csh}{42}{Global variables in csh} \entry{unset command}{42}{\code {unset} command} \entry{Undefining variables}{42}{Undefining variables} \entry{Arrays in csh}{43}{Arrays in csh} \entry{() operators to make array in csh}{43}{() operators to make array in csh} \entry{Pipes}{43}{Pipes} \entry{{\tt\char 124} symbol}{43}{\samp {|} symbol} \entry{Redirection of stdio}{43}{Redirection of stdio} \entry{Standard I/O, redirection}{43}{Standard I/O, redirection} \entry{Output, sending to a file}{43}{Output, sending to a file} \entry{noclobber variable}{44}{\code {noclobber} variable} \entry{Protecting files from overwrite with {\tt\gtr}}{44}{Protecting files from overwrite with \samp {>}} \entry{noclobber overwrite protection}{44}{\code {noclobber} overwrite protection} \entry{Appending to a file with {\tt\gtr}{\tt\gtr}}{44}{Appending to a file with \samp {>>}} \entry{Formatting text in a file}{45}{Formatting text in a file} \entry{Printing multiple lines}{45}{Printing multiple lines} \entry{Input over many lines}{45}{Input over many lines} \entry{Pipe}{45}{Pipe} \entry{{\tt\char 124} symbol}{45}{\samp {|} symbol} \entry{Piping to more to prevent scrolling}{45}{Piping to more to prevent scrolling} \entry{tee command}{45}{\samp {tee} command} \entry{Splitting output to several files}{45}{Splitting output to several files} \entry{Copy of output to file}{45}{Copy of output to file} \entry{Output to file}{45}{Output to file} \entry{Command history}{46}{Command history} \entry{Up arrow}{46}{Up arrow} \entry{Filename completion}{46}{Filename completion} \entry{Command completion}{46}{Command completion} \entry{TAB completion key}{46}{\key {TAB} completion key} \entry{Single and double quotes}{47}{Single and double quotes} \entry{' and {\tt\char 34}}{47}{\key {'} and \key {"}} \entry{Backwards quotes}{47}{Backwards quotes} \entry{` symbol and embedded shells}{47}{\key {`} symbol and embedded shells} \entry{Embedded shell}{47}{Embedded shell} \entry{Job control}{47}{Job control} \entry{Foreground process}{47}{Foreground process} \entry{Background process}{47}{Background process} \entry{find command}{48}{\samp {find} command} \entry{Processes}{48}{Processes} \entry{Background process}{48}{Background process} \entry{Starting shell jobs}{50}{Starting shell jobs} \entry{fg command}{50}{\samp {fg} command} \entry{bg command}{50}{\samp {bg} command} \entry{Job numbers in csh}{50}{Job numbers in csh} \entry{kill command}{50}{\samp {kill} command} \entry{Suspending a job}{50}{Suspending a job} \entry{Moving a job to the background}{50}{Moving a job to the background} \entry{Job, moving to background}{50}{Job, moving to background} \entry{Process. moving to background}{50}{Process. moving to background} \entry{Break key}{51}{Break key} \entry{Panic button}{51}{Panic button} \entry{Script, making}{51}{Script, making} \entry{Making a script}{51}{Making a script} \entry{Writing a script}{51}{Writing a script} \entry{#!program sequence}{51}{\samp {#!program} sequence} \entry{Command line arguments}{51}{Command line arguments} \entry{Argument vector in csh}{51}{Argument vector in csh} \entry{argv}{51}{\samp {argv}} \entry{Arguments, command line}{51}{Arguments, command line} \entry{foreach example}{52}{\code {foreach} example} \entry{write example}{52}{\code {write} example} \entry{Subshells and ()}{52}{Subshells and ()} \entry{() and subshells}{52}{() and subshells} \entry{Continuing long lines}{53}{Continuing long lines} \entry{Long lines, continuing}{53}{Long lines, continuing} \entry{Tests and conditions in csh}{53}{Tests and conditions in csh} \entry{if..then..else in csh}{53}{\code {if..then..else} in csh} \entry{switch..case in csh}{53}{\code {switch..case} in csh} \entry{Testing files}{53}{Testing files} \entry{Comparison operators in csh}{54}{Comparison operators in csh} \entry{Operators in csh}{54}{Operators in csh} \entry{uname command}{55}{\samp {uname} command} \entry{System identity and uname}{55}{System identity and \samp {uname}} \entry{sed, search and replace}{55}{\samp {sed}, search and replace} \entry{Swapping text strings}{55}{Swapping text strings} \entry{Make software script}{55}{Make software script} \entry{Build software script}{55}{Build software script} \entry{Compiler script}{55}{Compiler script} \entry{Loops in csh}{56}{Loops in csh} \entry{foreach}{56}{\code {foreach}} \entry{repeat}{56}{\code {repeat}} \entry{while}{56}{\code {while}} \entry{continue in csh}{57}{\samp {continue} in csh} \entry{Input in csh}{57}{Input in csh} \entry{${\tt\less} operator}{57}{\samp {$<} operator} \entry{breaksw}{57}{\samp {breaksw}} \entry{Parts of a filename}{58}{Parts of a filename} \entry{Extracting filename components}{58}{Extracting filename components} \entry{Arithemtic operations in csh}{59}{Arithemtic operations in csh} \entry{whoami command}{61}{\samp {whoami} command} \entry{sleep command}{62}{\samp {sleep} command} \entry{Bourne shell}{63}{Bourne shell} \entry{.profile set up in sh}{63}{\file {.profile} set up in sh} \entry{Global variables in sh}{63}{Global variables in sh} \entry{Local variables in sh}{63}{Local variables in sh} \entry{EXPORT command in sh}{63}{\samp {EXPORT} command in sh} \entry{Standard I/O in sh}{64}{Standard I/O in sh} \entry{Redirecting stdio in sh}{64}{Redirecting stdio in sh} \entry{1{\tt\gtr} in sh}{64}{\samp {1>} in sh} \entry{2{\tt\gtr} in sh}{64}{\samp {2>} in sh} \entry{2{\tt\gtr}&1 in sh}{64}{\samp {2>&1} in sh} \entry{Arithemtic in sh}{65}{Arithemtic in sh} \entry{Scripts in sh, making}{65}{Scripts in sh, making} \entry{Making scripts in sh}{65}{Making scripts in sh} \entry{#!program sequence}{65}{\samp {#!program} sequence} \entry{Command line arguments in sh}{65}{Command line arguments in sh} \entry{for loop in sh}{65}{\code {for} loop in sh} \entry{while loop in sh}{65}{\code {while} loop in sh} \entry{shift operator on strings}{65}{\code {shift} operator on strings} \entry{Return codes}{66}{Return codes} \entry{Decisions and return codes in sh}{66}{Decisions and return codes in sh} \entry{Tests in sh}{66}{Tests in sh} \entry{test in sh}{67}{\samp {test} in sh} \entry{[] for test in sh}{67}{\samp {[]} for test in sh} \entry{if..then..else..fi in sh}{67}{\code {if..then..else..fi} in sh} \entry{Input in sh}{68}{Input in sh} \entry{Loops in sh}{69}{Loops in sh} \entry{while in sh}{69}{\samp {while} in sh} \entry{until}{69}{\samp {until}} \entry{IFS variable in sh}{70}{\samp {IFS} variable in sh} \entry{Redefining list separator in sh}{70}{Redefining list separator in sh} \entry{Loops and list separators}{70}{Loops and list separators} \entry{CTRL-D and EOF}{70}{\key {CTRL-D} and EOF} \entry{End of file CTRL-D}{70}{End of file \key {CTRL-D}} \entry{Procedures and subroutines in sh}{71}{Procedures and subroutines in sh} \entry{Signal handler in sh}{71}{Signal handler in sh} \entry{Interrupt handler in sh}{71}{Interrupt handler in sh} \entry{Traps in sh}{71}{Traps in sh} \entry{SetUID scripts}{73}{SetUID scripts} \entry{Root privileges}{73}{Root privileges} \entry{Limitations of shell programs}{73}{Limitations of shell programs} \entry{batch command}{74}{\samp {batch} command} \entry{at command}{74}{\samp {at} command} \entry{Perl}{75}{Perl} \entry{sed batch editor}{75}{\samp {sed} batch editor} \entry{awk pattern extractor}{75}{\samp {awk} pattern extractor} \entry{cut}{75}{\samp {cut}} \entry{paste}{75}{\samp {paste}} \entry{Perl variables and types}{76}{Perl variables and types} \entry{Types in perl}{76}{Types in perl} \entry{Arrays in perl}{76}{Arrays in perl} \entry{Argument vector in perl}{76}{Argument vector in perl} \entry{Command line arguments in perl}{76}{Command line arguments in perl} \entry{Environment variables in perl}{76}{Environment variables in perl} \entry{`..` in perl}{76}{\samp {`..`} in perl} \entry{Scalar variables in perl}{77}{Scalar variables in perl} \entry{Strings in perl}{77}{Strings in perl} \entry{Perl, strings and scalar}{77}{Perl, strings and scalar} \entry{Interpretation of values in perl}{77}{Interpretation of values in perl} \entry{eq and == in perl}{77}{\samp {eq} and \samp {==} in perl} \entry{Arrays (normal) in perl}{78}{Arrays (normal) in perl} \entry{Argument vector in perl}{78}{Argument vector in perl} \entry{Command line arguments in perl}{78}{Command line arguments in perl} \entry{shift and arrays in perl}{79}{\samp {shift} and arrays in perl} \entry{shift and arrays}{79}{\samp {shift} and arrays} \entry{split command}{79}{\samp {split} command} \entry{split and arrays}{79}{\samp {split} and arrays} \entry{Arrays and split}{79}{Arrays and \samp {split}} \entry{Arrays (associated) in perl}{79}{Arrays (associated) in perl} \entry{Environment variables in perl}{79}{Environment variables in perl} \entry{For loops in perl}{81}{For loops in perl} \entry{for loop in perl}{81}{\code {for} loop in perl} \entry{foreach loop in perl}{81}{\code {foreach} loop in perl} \entry{if in perl}{81}{\samp {if} in perl} \entry{unless in perl}{81}{\samp {unless} in perl} \entry{while in perl}{81}{\samp {while} in perl} \entry{do..while in perl}{81}{\samp {do..while} in perl} \entry{For loop}{82}{For loop} \entry{Foreach loop}{82}{Foreach loop} \entry{Iteration over arrays}{82}{Iteration over arrays} \entry{Associated arrays, iteration}{83}{Associated arrays, iteration} \entry{Iterating over files}{83}{Iterating over files} \entry{Files, iterating over lines}{83}{Files, iterating over lines} \entry{Files in perl}{84}{Files in perl} \entry{Standard I/O in perl}{84}{Standard I/O in perl} \entry{open command in perl}{84}{\samp {open} command in perl} \entry{close command in perl}{84}{\samp {close} command in perl} \entry{{\tt\less}{\tt\gtr} filehandle in perl}{84}{\samp {<>} filehandle in perl} \entry{File handles in perl}{84}{File handles in perl} \entry{Cut as a perl script}{84}{Cut as a perl script} \entry{Paste as a perl script}{84}{Paste as a perl script} \entry{Truncating strings in perl}{86}{Truncating strings in perl} \entry{Perl, truncating strings}{86}{Perl, truncating strings} \entry{chop command in perl}{86}{\samp {chop} command in perl} \entry{Subroutines in perl}{86}{Subroutines in perl} \entry{Local variables in perl}{87}{Local variables in perl} \entry{Parameters in perl functions}{87}{Parameters in perl functions} \entry{Exiting on errors in perl}{87}{Exiting on errors in perl} \entry{die}{87}{\samp {die}} \entry{Errors in perl}{87}{Errors in perl} \entry{passwd file}{88}{\file {passwd} file} \entry{Encryption}{88}{Encryption} \entry{stty and switching off term echo}{88}{\samp {stty} and switching off term echo} \entry{Terminal echo and stty}{88}{Terminal echo and \samp {stty}} \entry{Forking new processes}{89}{Forking new processes} \entry{Database support}{90}{Database support} \entry{User database support}{90}{User database support} \entry{sed as a perl script}{93}{\samp {sed} as a perl script} \entry{Pattern matching in perl}{93}{Pattern matching in perl} \entry{Pattern replacement in perl}{93}{Pattern replacement in perl} \entry{Searching and replacing in perl (example)}{94}{Searching and replacing in perl (example)} \entry{Pattern matching in perl}{95}{Pattern matching in perl} \entry{CGI protocol}{103}{CGI protocol} \entry{Mime types in W3}{103}{Mime types in W3} \entry{Forms in HTML}{103}{Forms in HTML} \entry{Script aliases in W3}{104}{Script aliases in W3} \entry{C programming}{115}{C programming} \entry{Wrappers}{115}{Wrappers} \entry{Curses}{115}{Curses} \entry{X windows}{115}{X windows} \entry{Tk library}{115}{Tk library} \entry{lex}{115}{\samp {lex}} \entry{yacc}{115}{\samp {yacc}} \entry{ANSI C}{116}{ANSI C} \entry{Kernighan and Ritchie C}{116}{Kernighan and Ritchie C} \entry{Splitting C into many files.}{117}{Splitting C into many files.} \entry{extern variables}{117}{\code {extern} variables} \entry{POSIX standard}{117}{POSIX standard} \entry{Compiling programs}{117}{Compiling programs} \entry{Multiple C files, compiling}{117}{Multiple C files, compiling} \entry{a.out}{117}{\file {a.out}} \entry{libc}{117}{libc} \entry{libm}{117}{libm} \entry{libcurses}{117}{libcurses} \entry{Library path for C loader}{117}{Library path for C loader} \entry{-L option to cc}{117}{\samp {-L} option to \code {cc}} \entry{Include files}{118}{Include files} \entry{-I option to cc}{118}{\samp {-I} option to \code {cc}} \entry{Include file search path}{118}{Include file search path} \entry{Static linking}{118}{Static linking} \entry{Shared libraries}{118}{Shared libraries} \entry{ld.so.cache}{119}{\file {ld.so.cache}} \entry{ldconfig}{119}{\file {ldconfig}} \entry{Compiling huge programs}{120}{Compiling huge programs} \entry{Suffix rules in Makefiles}{121}{Suffix rules in Makefiles} \entry{Dependencies in Makefiles}{121}{Dependencies in Makefiles} \entry{C{\tt\char 43}{\tt\char 43} suffix rules}{124}{C++ suffix rules} \entry{Make rules for C{\tt\char 43}{\tt\char 43}}{124}{Make rules for C++} \entry{The arguement vector in C}{125}{The arguement vector in C} \entry{Command line arguments in C}{125}{Command line arguments in C} \entry{envp in C}{125}{\code {envp} in C} \entry{Environment variables in C}{125}{Environment variables in C} \entry{Environment variables in C}{125}{Environment variables in C} \entry{getenv() function}{125}{\code {getenv() function}} \entry{opendir command}{126}{\code {opendir} command} \entry{closedir command}{126}{\code {closedir} command} \entry{readdir command}{126}{\code {readdir} command} \entry{dirent directory interface}{126}{dirent directory interface} \entry{Information about file properties}{127}{Information about file properties} \entry{Statistics about a file}{127}{Statistics about a file} \entry{stat()}{127}{\code {stat()}} \entry{lstat()}{127}{\code {lstat()}} \entry{readlink()}{127}{\code {readlink()}} \entry{Links, where do they point?}{127}{Links, where do they point?} \entry{Links in C}{127}{Links in C} \entry{Macros for stat}{128}{Macros for stat} \entry{Permissions, determining in C}{128}{Permissions, determining in C} \entry{File type, determining in C}{128}{File type, determining in C} \entry{Starting}{132}{Starting} \entry{Waiting for child processes}{135}{Waiting for child processes} \entry{wait.h}{135}{\file {wait.h}} \entry{WTERMSIG(status)}{135}{\code {WTERMSIG(status)}} \entry{popen()}{135}{\code {popen()}} \entry{Pipes in C}{135}{Pipes in C} \entry{Opening a pipe in C}{135}{Opening a pipe in C} \entry{ioctl()}{145}{\code {ioctl()}} \entry{Lexer}{147}{Lexer} \entry{Parser}{147}{Parser} \entry{yacc}{147}{\samp {yacc}} \entry{Sockets}{151}{Sockets} \entry{TCP/IP}{151}{TCP/IP} \entry{INADDR{\_}ANY}{151}{\code {INADDR_ANY}} \entry{Byte order}{151}{Byte order} \entry{Network byte order}{151}{Network byte order} \entry{Big endian}{151}{Big endian} \entry{Little endian}{151}{Little endian} \entry{gethostbyname()}{153}{\code {gethostbyname()}} \entry{socket()}{153}{\code {socket()}} \entry{connect()}{153}{\code {connect()}} \entry{send()}{154}{\code {send()}} \entry{recv()}{154}{\code {recv()}} \entry{bind()}{155}{\code {bind()}} \entry{listen()}{155}{\code {listen()}} \entry{accept()}{155}{\code {accept()}} \entry{Reliable socket protocol}{157}{Reliable socket protocol} \entry{NIS}{159}{NIS} \entry{Network information service}{159}{Network information service} \entry{Network databases}{159}{Network databases} \entry{Database maps}{159}{Database maps} \entry{getpwnam()}{160}{\code {getpwnam()}} \entry{getpwuid()}{160}{\code {getpwuid()}} \entry{getgrnam()}{160}{\code {getgrnam()}} \entry{gethostent()}{160}{\code {gethostent()}} \entry{getnetgrent()}{160}{\code {getnetgrent()}} \entry{getservbyname()}{160}{\code {getservbyname()}} \entry{getservbyport()}{160}{\code {getservbyport()}} \entry{DNS}{160}{DNS} \entry{The domain name service}{160}{The domain name service} \entry{BIND}{160}{BIND} \entry{Berkeley Internet Name Domain (BIND)}{160}{Berkeley Internet Name Domain (BIND)} \entry{Fully qualified name}{161}{Fully qualified name} \entry{gethostbyname()}{161}{\code {gethostbyname()}} \entry{NFS and C support}{162}{NFS and C support}