%!PS %%Version: 3.3.2 %%DocumentFonts: (atend) %%Pages: (atend) %%EndComments % % Version 3.3.2 prologue for troff files. % /#copies 1 store /aspectratio 1 def /formsperpage 1 def /landscape false def /linewidth .3 def /magnification 1 def /margin 0 def /orientation 0 def /resolution 720 def /rotation 1 def /xoffset 0 def /yoffset 0 def /roundpage true def /useclippath true def /pagebbox [0 0 612 792] def /R /Times-Roman def /I /Times-Italic def /B /Times-Bold def /BI /Times-BoldItalic def /H /Helvetica def /HI /Helvetica-Oblique def /HB /Helvetica-Bold def /HX /Helvetica-BoldOblique def /CW /Courier def /CO /Courier def /CI /Courier-Oblique def /CB /Courier-Bold def /CX /Courier-BoldOblique def /PA /Palatino-Roman def /PI /Palatino-Italic def /PB /Palatino-Bold def /PX /Palatino-BoldItalic def /Hr /Helvetica-Narrow def /Hi /Helvetica-Narrow-Oblique def /Hb /Helvetica-Narrow-Bold def /Hx /Helvetica-Narrow-BoldOblique def /KR /Bookman-Light def /KI /Bookman-LightItalic def /KB /Bookman-Demi def /KX /Bookman-DemiItalic def /AR /AvantGarde-Book def /AI /AvantGarde-BookOblique def /AB /AvantGarde-Demi def /AX /AvantGarde-DemiOblique def /NR /NewCenturySchlbk-Roman def /NI /NewCenturySchlbk-Italic def /NB /NewCenturySchlbk-Bold def /NX /NewCenturySchlbk-BoldItalic def /ZD /ZapfDingbats def /ZI /ZapfChancery-MediumItalic def /S /S def /S1 /S1 def /GR /Symbol def /inch {72 mul} bind def /min {2 copy gt {exch} if pop} bind def /show {show} bind def % so later references don't bind /widthshow {widthshow} bind def /stringwidth {stringwidth} bind def /setup { counttomark 2 idiv {def} repeat pop landscape {/orientation 90 orientation add def} if /scaling 72 resolution div def linewidth setlinewidth 1 setlinecap pagedimensions xcenter ycenter translate orientation rotation mul rotate width 2 div neg height 2 div translate xoffset inch yoffset inch neg translate margin 2 div dup neg translate magnification dup aspectratio mul scale scaling scaling scale addmetrics 0 0 moveto } def /pagedimensions { useclippath userdict /gotpagebbox known not and { /pagebbox [clippath pathbbox newpath] def roundpage currentdict /roundpagebbox known and {roundpagebbox} if } if pagebbox aload pop 4 -1 roll exch 4 1 roll 4 copy landscape {4 2 roll} if sub /width exch def sub /height exch def add 2 div /xcenter exch def add 2 div /ycenter exch def userdict /gotpagebbox true put } def /addmetrics { /Symbol /S null Sdefs cf /Times-Roman /S1 StandardEncoding dup length array copy S1defs cf } def /pagesetup { /page exch def currentdict /pagedict known currentdict page known and { page load pagedict exch get cvx exec } if } def /decodingdefs [ {counttomark 2 idiv {y moveto show} repeat} {neg /y exch def counttomark 2 idiv {y moveto show} repeat} {neg moveto {2 index stringwidth pop sub exch div 0 32 4 -1 roll widthshow} repeat} {neg moveto {spacewidth sub 0.0 32 4 -1 roll widthshow} repeat} {counttomark 2 idiv {y moveto show} repeat} {neg setfunnytext} ] def /setdecoding {/t decodingdefs 3 -1 roll get bind def} bind def /w {neg moveto show} bind def /m {neg dup /y exch def moveto} bind def /done {/lastpage where {pop lastpage} if} def /f { dup /font exch def findfont exch dup /ptsize exch def scaling div dup /size exch def scalefont setfont linewidth ptsize mul scaling 10 mul div setlinewidth /spacewidth ( ) stringwidth pop def } bind def /changefont { /fontheight exch def /fontslant exch def currentfont [ 1 0 fontheight ptsize div fontslant sin mul fontslant cos div fontheight ptsize div 0 0 ] makefont setfont } bind def /sf {f} bind def /cf { dup length 2 idiv /entries exch def /chtab exch def /newencoding exch def /newfont exch def findfont dup length 1 add dict /newdict exch def {1 index /FID ne {newdict 3 1 roll put}{pop pop} ifelse} forall newencoding type /arraytype eq {newdict /Encoding newencoding put} if newdict /Metrics entries dict put newdict /Metrics get begin chtab aload pop 1 1 entries {pop def} for newfont newdict definefont pop end } bind def % % A few arrays used to adjust reference points and character widths in some % of the printer resident fonts. If square roots are too high try changing % the lines describing /radical and /radicalex to, % % /radical [0 -75 550 0] % /radicalex [-50 -75 500 0] % % Move braceleftbt a bit - default PostScript character is off a bit. % /Sdefs [ /bracketlefttp [201 500] /bracketleftbt [201 500] /bracketrighttp [-81 380] /bracketrightbt [-83 380] /braceleftbt [203 490] /bracketrightex [220 -125 500 0] /radical [0 0 550 0] /radicalex [-50 0 500 0] /parenleftex [-20 -170 0 0] /integral [100 -50 500 0] /infinity [10 -75 730 0] ] def /S1defs [ /underscore [0 80 500 0] /endash [7 90 650 0] ] def % % Tries to round clipping path dimensions, as stored in array pagebbox, so they % match one of the known sizes in the papersizes array. Lower left coordinates % are always set to 0. % /roundpagebbox { 7 dict begin /papersizes [8.5 inch 11 inch 14 inch 17 inch] def /mappapersize { /val exch def /slop .5 inch def /diff slop def /j 0 def 0 1 papersizes length 1 sub { /i exch def papersizes i get val sub abs dup diff le {/diff exch def /j i def} {pop} ifelse } for diff slop lt {papersizes j get} {val} ifelse } def pagebbox 0 0 put pagebbox 1 0 put pagebbox dup 2 get mappapersize 2 exch put pagebbox dup 3 get mappapersize 3 exch put end } bind def %%EndProlog %%BeginSetup mark /linewidth 0.5 def /#copies 1 store /landscape false def /resolution 720 def % % Encoding vector and redefinition of findfont for the ISO Latin1 standard. % The 18 characters missing from ROM based fonts on older printers are noted % below. % /ISOLatin1Encoding [ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright /parenleft /parenright /asterisk /plus /comma /minus /period /slash /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /dotlessi /grave /acute /circumflex /tilde /macron /breve /dotaccent /dieresis /.notdef /ring /cedilla /.notdef /hungarumlaut /ogonek /caron /space /exclamdown /cent /sterling /currency /yen /brokenbar % missing /section /dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron /degree % missing /plusminus % missing /twosuperior % missing /threesuperior % missing /acute /mu % missing /paragraph /periodcentered /cedilla /onesuperior % missing /ordmasculine /guillemotright /onequarter % missing /onehalf % missing /threequarters % missing /questiondown /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Eth % missing /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply % missing /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute % missing /Thorn % missing /germandbls /agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis /eth % missing /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide % missing /oslash /ugrave /uacute /ucircumflex /udieresis /yacute % missing /thorn % missing /ydieresis ] def /NewFontDirectory FontDirectory maxlength dict def % % Apparently no guarantee findfont is defined in systemdict so the obvious % % systemdict /findfont get exec % % can generate an error. So far the only exception is a VT600 (version 48.0). % userdict /@RealFindfont known not { userdict begin /@RealFindfont systemdict begin /findfont load end def end } if /findfont { dup NewFontDirectory exch known not { dup %dup systemdict /findfont get exec % not always in systemdict dup userdict /@RealFindfont get exec dup /Encoding get StandardEncoding eq { dup length dict begin {1 index /FID ne {def}{pop pop} ifelse} forall /Encoding ISOLatin1Encoding def currentdict end /DummyFontName exch definefont } if NewFontDirectory 3 1 roll put } if NewFontDirectory exch get } bind def setup 2 setdecoding %%EndSetup %%Page: 1 1 /saveobj save def mark 1 pagesetup 12 B f (README)2614 1220 w 10 I f (Brian W. Kernighan)2 814 1 2473 1480 t 10 R f (AT&T Bell Laboratories)2 993 1 2383 1680 t (Murray Hill, New Jersey 07974)4 1267 1 2246 1820 t ( a casual Plan 9)4 641( is written by)3 537( It)1 115(This brief document is intended to help you get started using Plan 9.)12 2777 4 970 2336 t (user who is not in any way part of the Plan 9 group, and is aimed at ordinary users with a Unix background.)22 4305 1 720 2456 t 10 B f ( Started)1 341(1. Getting)1 447 2 720 2696 t 10 R f ( has read, understood, and performed the instructions in)8 2272(I'm assuming that you or someone you trust)7 1798 2 970 2852 t ( at least looked at the Plan 9 overview)8 1576( also assuming that you have)5 1192( I'm)1 202(the Plan 9 installation procedure.)4 1350 4 720 2972 t ( what Plan 9 is and how it goes about it.)10 1627(paper in Computing Science Technical Report 158, which explains)8 2693 2 720 3092 t ( the paper ``The Use of Name Spaces in Plan 9,'')10 1984(There are also some helpful explanations and examples in)8 2336 2 720 3212 t ( further assuming that you have the Plan 9 manual near to hand,)12 2597( am)1 150( I)1 86(which is also part of the distribution.)6 1487 4 720 3332 t (and are willing to read manual pages for commands as their names appear here.)13 3175 1 720 3452 t ( terminal on depends on how your Plan 9 system is set up; the)13 2487(How you get started after you turn your)7 1583 2 970 3608 t ( The)1 208( system or a terminal connected to a file server and a CPU server.)13 2655(details are different for a standalone)5 1457 3 720 3728 t (latter is mostly what I'll talk about.)6 1408 1 720 3848 t ( 9 boots, it runs a very dumb terminal program, so dumb that it doesn't even know how to)18 3628(When Plan)1 442 2 970 4004 t ( much the same way that)5 1005( In)1 136( much of anything.)3 764( won't want to use that for)6 1078( You)1 226(scroll a screen.)2 603 6 720 4124 t 10 CW f (.profile)4560 4124 w 10 R f (is executed by the shell on Unix systems, the file)9 1990 1 720 4244 t 10 CW f (lib/profile)2739 4244 w 10 R f ( on Plan 9 when)4 664(is executed by the shell)4 948 2 3428 4244 t ( The)1 213(you log in.)2 447 2 720 4364 t 10 CW f (newuser)1413 4364 w 10 R f (command normally creates a few directories \()6 1870 1 1865 4364 t 10 CW f (bin)3735 4364 w 10 R f (,)3915 4364 w 10 CW f (bin/rc)3972 4364 w 10 R f (,)4332 4364 w 10 CW f (lib)4389 4364 w 10 R f (, and)1 201 1 4569 4364 t 10 CW f (tmp)4802 4364 w 10 R f (\),)4982 4364 w (then sets up a profile)4 832 1 720 4484 t 10 CW f (lib/profile)1577 4484 w 10 R f (that looks like this, though with some more frills:)8 1976 1 2262 4484 t 9 CW f (bind \255a $home/bin/rc /bin)3 1350 1 1008 4654 t (font = /lib/font/bit/pelm/euro.9.font)2 1998 1 1008 4764 t (switch\($service\){)1008 4874 w (case terminal)1 702 1 1008 4984 t ( '\))1 432(prompt=\('term% ' ')2 972 2 1440 5094 t (exec 8\275)1 378 1 1440 5204 t (case cpu)1 432 1 1008 5314 t (bind \255b /mnt/term/mnt/8\275 /dev)3 1566 1 1440 5424 t ( '\))1 486(prompt=\('cpu% ' ')2 918 2 1440 5534 t (})1008 5644 w 10 R f (Many of the interesting bits of Plan 9 are implicit in this file.)12 2430 1 720 5824 t 10 B f (2. Commands)1 614 1 720 6064 t 10 R f ( form on Plan 9; this includes standbys)7 1567(Most of the standard Unix commands exist in almost the same)10 2503 2 970 6220 t (like)720 6340 w 10 CW f (cat)900 6340 w 10 R f (,)1080 6340 w 10 CW f (ls)1135 6340 w 10 R f (,)1255 6340 w 10 CW f (cd)1310 6340 w 10 R f (,)1430 6340 w 10 CW f (pwd)1485 6340 w 10 R f (,)1665 6340 w 10 CW f (cp)1720 6340 w 10 R f (,)1840 6340 w 10 CW f (mv)1894 6340 w 10 R f (,)2014 6340 w 10 CW f (diff)2068 6340 w 10 R f (,)2308 6340 w 10 CW f (grep)2362 6340 w 10 R f (,)2602 6340 w 10 CW f (awk)2656 6340 w 10 R f ( notice minor differences in behav\255)5 1419( You'll)1 315(, and so on.)3 470 3 2836 6340 t (ior but for the most part you don't have to think about this.)12 2352 1 720 6460 t 10 B f ( rc Shell)2 350(3. The)1 292 2 720 6700 t 10 R f ( uses a different shell, called)5 1146(One big difference: Plan 9)4 1057 2 970 6856 t 10 CW f (rc)3200 6856 w 10 R f ( running commands interactively, it's)4 1504(. For)1 216 2 3320 6856 t (almost the same as the Bourne shell, so filename metacharacters like)10 2782 1 720 6976 t 10 CW f (*)3531 6976 w 10 R f (and)3620 6976 w 10 CW f (?)3793 6976 w 10 R f ( same, and simple)3 725(behave the)1 433 2 3882 6976 t (redirections with)1 684 1 720 7096 t 10 CW f (>)1439 7096 w 10 R f (and)1534 7096 w 10 CW f (>>)1713 7096 w 10 R f ( is simpler)2 439( Quoting)1 389(are the same \(but not redirection of streams by number\).)9 2344 3 1868 7096 t ( and single quotes quote)4 1006(than in the Bourne shell: double quotes and backslash have no special meaning,)12 3314 2 720 7216 t (October 14, 1992)2 696 1 2532 7680 t cleartomark showpage saveobj restore %%EndPage: 1 1 %%Page: 2 2 /saveobj save def mark 2 pagesetup 10 R f (\255 2 \255)2 166 1 2797 480 t ( get a single quote into a quoted string, double the quote:)11 2271(anything. To)1 536 2 720 840 t 9 CW f (echo '''')1 486 1 1008 1010 t 10 R f (prints a single quote.)3 833 1 720 1190 t (For programming,)1 733 1 970 1346 t 10 CW f (rc)1728 1346 w 10 R f ( shell scripts have to begin with)6 1266( All)1 178(is almost unrelated, which is a nuisance.)6 1609 3 1873 1346 t 9 CW f (#!/bin/rc)1008 1516 w 10 R f (Environment variables are set by)4 1314 1 970 1732 t 9 CW f (var = ')2 378 1 1008 1902 t 9 I f (anything)1386 1902 w 9 CW f (')1701 1902 w 10 R f ( can be omitted if)4 751(where the quotes)2 700 2 720 2082 t 10 I f (anything)2209 2082 w 10 R f ( variables are accessed as)4 1064( Environment)1 585(contains no spaces.)2 794 3 2597 2082 t 10 CW f ($var)720 2202 w 10 R f ( are initialized when your process begins, including)7 2058(; certain variables)2 711 2 960 2202 t 10 CW f (user)3754 2202 w 10 R f (\(your name\),)1 515 1 4019 2202 t 10 CW f (home)4559 2202 w 10 R f (\(your)4824 2202 w (home directory\), and)2 834 1 720 2322 t 10 CW f (service)1579 2322 w 10 R f (, which is)2 386 1 1999 2322 t 10 CW f (terminal)2410 2322 w 10 R f (when you are running on your terminal.)6 1589 1 2915 2322 t 10 B f ( and Search Paths)3 770(4. Directories)1 595 2 720 2562 t 10 R f ( to this is)3 368( Central)1 345(One of the unifying ideas in Plan 9 is that all resources are accessed as file systems.)16 3357 3 970 2718 t (management of the name space so that you can select and arrange the resources you want to use.)17 3851 1 720 2838 t (The)970 2994 w 10 CW f (bind)1150 2994 w 10 R f (and)1415 2994 w 10 CW f (mount)1584 2994 w 10 R f ( particular, the command)3 998( In)1 133(commands manipulate the name space.)4 1561 3 1909 2994 t 9 CW f (bind \255a $home/bin/rc /bin)3 1350 1 1008 3164 t 10 R f (in the profile binds the directory)5 1350 1 720 3344 t 10 CW f ($home/bin/rc)2107 3344 w 10 R f (after the directory)2 738 1 2864 3344 t 10 CW f (/bin)3639 3344 w 10 R f ( a)1 82(, forming)1 384 2 3879 3344 t 10 I f (union directory.)1 657 1 4383 3344 t 10 R f (\(More precisely, it makes)3 1050 1 720 3464 t 10 CW f (/bin)1805 3464 w 10 R f ( shell searches only)3 806( The)1 214(an alias for the union\).)4 937 3 2080 3464 t 10 CW f (/bin)4071 3464 w 10 R f (for commands to)2 695 1 4345 3464 t ( convention, your personal shell)4 1299( By)1 172( all the directories that have been unioned together.)8 2083(run, but it searches)3 766 4 720 3584 t (scripts are placed in)3 795 1 720 3704 t 10 CW f ($home/bin/rc)1540 3704 w 10 R f (.)2260 3704 w ( in, several directories are bound to)6 1459(When you first log)3 776 2 970 3860 t 10 CW f (/bin)3239 3860 w 10 R f (, including)1 437 1 3479 3860 t 10 CW f (/rc/bin)3950 3860 w 10 R f (, which contains)2 670 1 4370 3860 t (shell scripts, and)2 683 1 720 3980 t 10 CW f (/$cputype/bin)1435 3980 w 10 R f (, which contains binaries for your current cpu type.)8 2096 1 2215 3980 t 10 CW f (cputype)4368 3980 w 10 R f (is the)1 220 1 4820 3980 t ( typically one of)3 679(type of processor you are running on,)6 1542 2 720 4100 t 10 CW f (68020)2975 4100 w 10 R f (,)3275 4100 w 10 CW f (sparc)3334 4100 w 10 R f (,)3634 4100 w 10 CW f (mips)3693 4100 w 10 R f (, or)1 142 1 3933 4100 t 10 CW f (386)4109 4100 w 10 R f ( you run a)3 429(. When)1 322 2 4289 4100 t (program like)1 524 1 720 4220 t 10 CW f (ls)1280 4220 w 10 R f ( you subsequently)2 742( If)1 126( be found and executed.)4 990(, the version for your current cpu type will)8 1782 4 1400 4220 t (execute the)1 454 1 720 4340 t 10 CW f (cpu)1202 4340 w 10 R f (command to access a cpu server, in that process and those started by it,)13 2875 1 1410 4340 t 10 CW f (cputype)4313 4340 w 10 R f (will be)1 279 1 4761 4340 t (the type of the cpu server, and the)7 1352 1 720 4460 t 10 CW f (ls)2097 4460 w 10 R f (command you run there will be the right binary for that cpu.)11 2402 1 2242 4460 t ( replaces the search path of)5 1097(If you think about it, you can see that this mechanism of union directories)13 2973 2 970 4616 t ( far as you are concerned,)5 1023( As)1 161(conventional Unix shells.)2 1019 3 720 4736 t 10 I f (all)2948 4736 w 10 R f (executable programs are in)3 1077 1 3079 4736 t 10 CW f (/bin)4181 4736 w 10 R f (. Try)1 219 1 4421 4736 t 9 CW f (lc /bin)1 378 1 1008 4906 t 10 R f (to see the names of all executable programs.)7 1768 1 720 5086 t 10 B f ( File Systems)2 555(5. Interesting)1 591 2 720 5326 t 10 R f ( Plan)1 229( that devices like disks and tapes are part of the file system.)12 2383(Unix users are familiar with the idea)6 1458 3 970 5482 t ( you look at the directory)5 1007( If)1 116(9 carries that idea a lot further.)6 1227 3 720 5602 t 10 CW f (/dev)3095 5602 w 10 R f ( Try)1 194(, you will see some familiar names.)6 1415 2 3335 5602 t 9 CW f (cat /dev/time)1 702 1 1008 5772 t 10 R f ( after you have snarfed some text using the button 2 menu item, try)13 2680( Or,)1 180(a couple of times, for example.)5 1239 3 720 5952 t 9 CW f (cat /dev/snarf)1 756 1 1008 6122 t 10 R f (Note that some files like)4 977 1 720 6302 t 10 CW f (cons)1722 6302 w 10 R f (and)1988 6302 w 10 CW f (mouse)2158 6302 w 10 R f (occur more than once.)3 889 1 2484 6302 t 10 CW f (/dev)3424 6302 w 10 R f (is a union directory, and these are)6 1350 1 3690 6302 t ( first)1 193( The)1 212(multiple occurrences of the same file.)5 1537 3 720 6422 t 10 CW f (/dev/mouse)2694 6422 w 10 R f ( and the next)3 531(refers to the current window,)4 1183 2 3326 6422 t ( Try)1 194(one to the enclosing window \(which is probably the whole screen at this point\).)13 3174 2 720 6542 t 9 CW f (cat /dev/mouse)1 756 1 1008 6712 t 10 R f (then move the mouse around inside and outside of the current window.)11 2835 1 720 6892 t (The shell environment is kept in a directory called)8 2008 1 970 7048 t 10 CW f (/env)3004 7048 w 10 R f (; each shell environment variable is stored in)7 1796 1 3244 7048 t ( Try)1 194(a file.)1 227 2 720 7168 t (October 14, 1992)2 696 1 2532 7680 t cleartomark showpage saveobj restore %%EndPage: 2 2 %%Page: 3 3 /saveobj save def mark 3 pagesetup 10 R f (\255 3 \255)2 166 1 2797 480 t 9 CW f (cat /env/font)1 702 1 1008 830 t 10 R f (for example.)1 504 1 720 1010 t ( are found in)3 537(Running processes)1 761 2 970 1166 t 10 CW f (/proc)2303 1166 w 10 R f (; each process is a directory, and each file in that directory)11 2437 1 2603 1166 t ( example, the)2 537( For)1 190( of the process.)3 607(accesses some aspect)2 851 4 720 1286 t 10 CW f (status)2931 1286 w 10 R f (file contains \(all ASCII\) status information)5 1723 1 3317 1286 t ( Try)1 194(about the process.)2 718 2 720 1406 t 9 CW f (awk '{print $1}' /proc/*/status)3 1674 1 1008 1576 t 10 R f (to get a list of the names of the running processes.)10 2000 1 720 1756 t (You might also find it interesting to poke around in)9 2112 1 970 1912 t 10 CW f (/net)3113 1912 w 10 R f ( network connections are managed as)5 1528(; all)1 159 2 3353 1912 t ( its clients, although)3 809( all of these cases, the service presents a file\255system interface to)11 2565( In)1 135(file systems as well.)3 811 4 720 2032 t (the implementation behind is not generally a traditional file system.)9 2704 1 720 2152 t 10 B f ( 8\275 Window System)3 867(6. The)1 292 2 720 2392 t 10 R f (The window system for Plan 9 is called 8\275; the)9 1904 1 970 2548 t 10 CW f (terminal)2899 2548 w 10 R f (case in the profile starts 8\275 with the line)8 1623 1 3404 2548 t 9 CW f (exec 8\275)1 378 1 1008 2718 t 10 R f ( far fewer features than)4 927(8\275 provides much less of the ``flexibility'' and certainly)8 2266 2 720 2898 t 10 CW f (xterm)3939 2898 w 10 R f (on X terminals, but)3 775 1 4265 2898 t (I much prefer it.)3 648 1 720 3018 t ( is that 8\275 treats all text on the screen alike; with the mouse you can)15 2835(The most important difference)3 1235 2 970 3174 t ( can fix up and resubmit commands, fiddle the output of a program or its)14 2961(edit anything you can see, so you)6 1359 2 720 3294 t ( ability to edit the past is liberating to such a degree that once you use)15 2798( This)1 229( it, and so on.)4 543(input and resubmit)2 750 4 720 3414 t (it, you'll never want to go back to something like)9 2025 1 720 3534 t 10 CW f (xterm)2776 3534 w 10 R f ( is an implementation of an X server so)8 1618(. \(There)1 346 2 3076 3534 t (you can run it if you want, but I never have.\))10 1785 1 720 3654 t ( means)1 290( That)1 243( curses.)1 309(8\275 does not provide any of the terminal\255handling mechanisms like termcap or)11 3228 4 970 3810 t ( of\) old favorites like)4 859(that there is no support for \(nor indeed implementation)8 2232 2 720 3930 t 10 CW f (vi)3840 3930 w 10 R f (,)3960 3930 w 10 CW f (emacs)4014 3930 w 10 R f (, and)1 198 1 4314 3930 t 10 CW f (ksh)4541 3930 w 10 R f ( my)1 157(. In)1 162 2 4721 3930 t ( need for)2 364(experience, the ability to cut, paste, and edit what's on all the windows on the screen obviates the)17 3956 2 720 4050 t (many of the mechanisms in these programs, so it's not as big a loss as you might think.)17 3485 1 720 4170 t ( a new window, run 8\275 in it, and everything you do there)12 2318(8\275 can be called recursively: you can make)7 1752 2 970 4326 t ( of,)1 135( does not provide any analog of the virtual window management)10 2604( 8\275)1 178(is insulated from the surroundings.)4 1403 4 720 4446 t ( even a few\) icons, but you can move a window)10 2014(for example, VTWM, nor does it provide zillions of \(or)9 2306 2 720 4566 t (almost off the screen, and you can hide it and then recall it from a popup menu.)16 3172 1 720 4686 t ( to run when it starts, which most people put into their pro\255)12 2393(You can also give 8\275 a file of commands)8 1677 2 970 4842 t (file:)720 4962 w 9 CW f (exec 8\275 \255i lib/windows)3 1188 1 1008 5132 t 10 R f (Normally this is used to set up windows that you always use:)11 2441 1 720 5312 t 9 CW f (#!/bin/rc)1008 5482 w (window ')1 432 1 1008 5592 t 9 I f (x0 y0 x1 y1)3 409 1 1440 5592 t 9 CW f (')1849 5592 w 9 I f (command line)1 508 1 1957 5592 t (...)1008 5702 w 10 R f (where)720 5882 w 10 I f (x0,y0)999 5882 w 10 R f (and)1248 5882 w 10 I f (x1,y1)1428 5882 w 10 R f ( \(and)1 214(are the coordinates of the window in question)7 1899 2 1677 5882 t 10 I f (x)3827 5882 w 10 R f (increases down the screen\).)3 1132 1 3908 5882 t (The)720 6002 w 10 CW f (window)901 6002 w 10 R f ( command)1 419( The)1 205( at the specified place, then runs the command in it.)10 2058(command opens a window)3 1071 4 1287 6002 t 10 CW f (wloc)720 6122 w 10 R f ( in the right format to be inserted directly in a)10 1900(will tell you the names and locations of all windows)9 2148 2 992 6122 t ( up the windows and programs the way you want them, then run)12 2566(file. Set)1 336 2 720 6242 t 10 CW f (wloc)3647 6242 w 10 R f (and snarf its output.)3 794 1 3912 6242 t 10 B f (7. Fonts)1 364 1 720 6482 t 10 R f ( is a default font,)4 698( There)1 288( it uses for displaying text.)5 1091(One aspect of 8\275 that you can change is the font)10 1993 4 970 6638 t (but normally the variable)3 1007 1 720 6758 t 10 CW f (font)1752 6758 w 10 R f (is set explicitly in the profile:)5 1175 1 2017 6758 t 9 CW f (font = /lib/font/bit/pelm/euro.9.font)2 1998 1 1008 6928 t (8\275 \255f $font)2 594 1 1008 7038 t 10 R f (The font)1 352 1 720 7218 t 10 CW f (euro.9.font)1108 7218 w 10 R f (is a collection of almost any character you might find in European languages,)12 3236 1 1804 7218 t (October 14, 1992)2 696 1 2532 7680 t cleartomark showpage saveobj restore %%EndPage: 3 3 %%Page: 4 4 /saveobj save def mark 4 pagesetup 10 R f (\255 4 \255)2 166 1 2797 480 t ( are other fonts that include oriental lan\255)7 1619( There)1 284( bunch of special characters.)4 1140(including Cyrillic, Greek, and a)4 1277 4 720 840 t (guages as well, and a variety of sizes.)7 1499 1 720 960 t (Plan 9 uses the Unicode character set throughout, which means that the system and the various pro\255)16 4070 1 970 1116 t ( if)1 89( So)1 159( bits, or 65K characters.\))4 998( 16)1 129( \(Think)1 326(grams all deal pretty comfortably with a very large character set.)10 2619 6 720 1236 t ( use more than ASCII characters, or run)7 1618(you want to edit files in languages that)7 1567 2 720 1356 t 10 CW f (grep)3934 1356 w 10 R f (or)4203 1356 w 10 CW f (awk)4315 1356 w 10 R f (over them, it)2 516 1 4524 1356 t ( such characters on standard printers, but they will appear fine)10 2530( may have trouble printing)4 1084( \(You)1 261(just works.)1 445 4 720 1476 t (on the screen.\))2 584 1 720 1596 t 10 B f (8. Editing)1 443 1 720 1836 t 10 R f (The standard Plan 9 editor is called)6 1427 1 970 1992 t 10 CW f (sam)2425 1992 w 10 R f ( multi\255file editor, it provides regular)5 1463(; it's a particularly good)4 972 2 2605 1992 t (expression syntax the same as in the venerable)7 1902 1 720 2112 t 10 CW f (ed)2653 2112 w 10 R f (\(which also exists\), and you can snarf text from one of)10 2236 1 2804 2112 t ( mouse idioms for)3 743( The)1 211( vice versa.)2 463(its windows and paste it into other 8\275 windows or)9 2061 4 720 2232 t 10 CW f (sam)4229 2232 w 10 R f (and)4440 2232 w 10 CW f (8\275)4615 2232 w 10 R f (are the)1 274 1 4766 2232 t ( will also edit files on other systems if there is a network connection.)13 2747(same. It)1 341 2 720 2352 t (By the way, regular expressions have been cleaned up \255\255 all programs support the same regular)15 4070 1 970 2508 t (expressions, which are pretty close to those found in)8 2094 1 720 2628 t 10 CW f (egrep)2839 2628 w 10 R f (on Unix systems.)2 692 1 3164 2628 t 10 B f ( CPU Server)2 537(9. The)1 292 2 720 2868 t 10 R f ( one is meant to run interactive programs like editors on the terminal and)13 3040(In the Plan 9 world view)5 1030 2 970 3024 t ( cpu server, which runs faster and has a higher bandwidth)10 2357(compute\255intensive programs like compilers on a)5 1963 2 720 3144 t ( The)1 207(to the file server.)3 682 2 720 3264 t 10 CW f (cpu)1636 3264 w 10 R f (command connects you to a cpu server so your computation runs faster \(in the\255)13 3197 1 1843 3264 t ( quite different from either remote login \(which)7 1913( mechanism is)2 578( The)1 208(ory\), but everything else stays the same.)6 1621 4 720 3384 t ( currently working in\) or network file system access \(which does)10 2639(does not preserve the name space you are)7 1681 2 720 3504 t ( line)1 175( The)1 205(not change the processor\).)3 1047 3 720 3624 t 9 CW f (bind \255b /mnt/term/mnt/8\275 /dev)3 1566 1 1440 3794 t 10 R f ( and screen\) associated with your)5 1377(in your profile arranges that all the devices \(including mouse, keyboard)10 2943 2 720 3974 t (terminal are inherited by the cpu server so they continue to work in a cpu window.)15 3294 1 720 4094 t 10 B f ( to Unix Systems)3 708(10. Connecting)1 664 2 720 4334 t 10 R f ( The)1 208( connected by some network to a Unix system.)8 1891(It is highly likely that your Plan 9 system will be)10 1971 3 970 4490 t (command)720 4610 w 10 CW f (con)1146 4610 w 10 R f (connects to another system \(typically Unix\); the command)7 2388 1 1358 4610 t 10 CW f (rx)3778 4610 w 10 R f (is rather like the)3 664 1 3929 4610 t 10 CW f (rsh)4624 4610 w 10 R f (com\255)4835 4610 w (mand on Unix systems, for executing a single command on another machine.)11 3082 1 720 4730 t ( in the Plan 9 name)5 834(If the Unix system cooperates, it is also possible to mount a Unix file system)14 3236 2 970 4886 t ( command)1 419( The)1 205(space so that files on the Unix side are accessible from Plan 9.)12 2487 3 720 5006 t 9 CW f (9fs)1008 5176 w 9 I f (machine)1224 5176 w 10 R f ( thereafter the root of the target file system is in the Plan 9)13 2392(establishes the connection and mounts the files;)6 1928 2 720 5356 t (directory at)1 457 1 720 5476 t 10 CW f (/n/)1202 5476 w 10 I f (machine)1382 5476 w 10 R f (.)1720 5476 w ( taken seriously \(no superuser, for example\))6 1802(There is no connection from Unix to Plan 9; security is)10 2268 2 970 5632 t (and it's hard to provide a satisfactory mechanism.)7 1991 1 720 5752 t 10 B f ( and Recovery)2 610(11. Backup)1 504 2 720 5992 t 10 R f ( every day or so; on our system, it's stored on)10 1853(Normally the state of the Plan 9 file system is recorded)10 2217 2 970 6148 t ( that)1 180( your Plan 9 system is suitably equipped, you should be able to run another service)15 3398( If)1 122(an optical disk.)2 620 4 720 6268 t ( command)1 419( The)1 205(makes the past state of the file system accessible \(read only\).)10 2431 3 720 6388 t 9 CW f (9fs dump)1 432 1 1008 6558 t 10 R f (mounts this file system on)4 1051 1 720 6738 t 10 CW f (/n/dump)1796 6738 w 10 R f ( that point, I can)4 652(. At)1 175 2 2216 6738 t 10 CW f (cd)3068 6738 w 10 R f (into the past:)2 517 1 3213 6738 t 9 CW f (cd /n/dump/1991/0401/usr/bwk)1 1512 1 1008 6908 t (ls \255l)1 270 1 1008 7018 t 10 R f ( system, so all the normal commands)6 1486( really is a file)4 571( This)1 228(puts me in my directory as it was on April 1, 1991.)11 2035 4 720 7198 t (work fine; I can)3 649 1 720 7318 t 10 CW f (diff)1399 7318 w 10 R f (a file from then with one on some other date, or copy an old version to the present.)17 3371 1 1669 7318 t (October 14, 1992)2 696 1 2532 7680 t cleartomark showpage saveobj restore %%EndPage: 4 4 %%Page: 5 5 /saveobj save def mark 5 pagesetup 10 R f (\255 5 \255)2 166 1 2797 480 t (Plan 9 has no backup or recovery programs; this mechanism subsumes them all.)12 3199 1 720 840 t 10 B f ( in Plan 9)3 404(12. Programming)1 774 2 720 1080 t 10 R f (Most programming in Plan 9 is done in ANSI C, with the usual supporting tools like YACC avail\255)17 4070 1 970 1236 t ( difference of note:)3 776(able. One)1 412 2 720 1356 t 10 CW f (make)1938 1356 w 10 R f (has been largely supplanted by)4 1251 1 2208 1356 t 10 CW f (mk)3489 1356 w 10 R f ( As)1 165( cleaner but different.)3 870(, which is)2 396 3 3609 1356 t (with the shell, it takes time to internalize the differences.)9 2266 1 720 1476 t (There are separate C compilers for each supported cpu type \(badly named with a single letter)15 4070 1 970 1632 t ( The)1 210( compiler can produce code for any object type.)8 1943(mnemonic\), but each)2 852 3 720 1752 t 10 CW f (mkfile)3755 1752 w 10 R f (normally encapsulates)1 895 1 4145 1752 t (this.)720 1872 w ( supported, the Plan 9 libraries are not ANSI and the standard ANSI header files)14 3244(Although ANSI C is)3 826 2 970 2028 t ( C programs is different enough that you should read the paper called)12 2863( Compiling)1 487(normally are not found.)3 970 3 720 2148 t (``How to Use the Plan 9 C Compiler'' before starting.)9 2158 1 720 2268 t ( importing or exporting a C program, you will want to use the ANSI/POSIX environment)14 3671(If you are)2 399 2 970 2424 t ( provide for portability, including a complete set of POSIX\255compatible libraries)10 3218(\(``ape''\), which really does)3 1102 2 720 2544 t ( compiler driver is called)4 998( The)1 205(and some POSIX tools.)3 939 3 720 2664 t 10 CW f (pcc)2887 2664 w 10 R f ( commands)1 458(. The)1 230 2 3067 2664 t 9 CW f (bind \255a /bin/ape /bin)3 1134 1 1008 2834 t (bind \255a /rc/bin/ape /bin)3 1296 1 1008 2944 t 10 R f (will bind the right files.)4 942 1 720 3124 t 10 B f (13. Envoi)1 426 1 720 3364 t 10 R f ( often be frustrated because something doesn't)6 1905( you think of it as Unix, you'll)7 1266( If)1 123(Plan 9 is not Unix.)4 776 4 970 3520 t ( you think of it as Plan 9, however, you'll find that most of it works very)16 3112( If)1 129(exist or works differently.)3 1079 3 720 3640 t ( really neat ideas that make things much cleaner than you have seen)12 2897(smoothly, and that there are some)5 1423 2 720 3760 t (before.)720 3880 w (October 14, 1992)2 696 1 2532 7680 t cleartomark showpage saveobj restore %%EndPage: 5 5 %%Trailer done %%Pages: 5 %%DocumentFonts: Times-Bold Times-Italic Times-Roman Courier