t dannyh peremeshchaetsya na granicu pervyh 4K, sleduyushchih za tekctovym cegmentom; -o Parametr "imya" posle opcii "-o" ispol'zuetsya v kachestve imeni vyxodnogo fajla ld vmecto "a.out"; -r Generiruet bity peremeshcheniya v vyhodnom fajle, tak chto on mozhet uchastvovat' v posleduyushchem pro- gone ld. |tot flag predotvrashchaet takzhe okoncha- tel'noe opredelenie obshchih simvolov i podavlyaet diagnosticheskie soobshcheniya otnositel'no neoppedelennyx cimvolov; -s Udalyaet iz rezul'tiruyushchego fajla tablicu simvo- lov i bity peremeshcheniya s cel'yu ekonomii mesta (cenoj snizheniya poleznosti otladchikov). |ta in- formaciya mozhet byt' udalena takzhe s pomoshch'yu komandy strip; -u Rassmatrivaet sleduyushchij parametr kak simvol, ko- toryj vvoditsya v kachestve neopredelennogo v tab- licu simvolov. |to udobno dlya zagruzki celikom iz biblioteki, poskol'ku pervonachal'no tablica simvolov pusta, a dlya zagruzki pervoj ppogpammy tpebyetcya nepazpeshennaya ccylka; 13 APK.00210-01 33 01-5 -X Sohranyaet lokal'nye simvoly, za isklyucheniem teh, ch'i imena nachinayutsya s bukvy "$". |tot klyuch is- pol'zuetsya komandoj cc dlya otbrasyvaniya sgeneri- rovannyh pri obrabotke metok s sohraneniem pri etom simvolov, lokal'nyh dlya programmy. B tablicy cimvolov pomeshchayutcya tol'ko vneshnie cimvoly; -x Ne pomeshchaet lokal'nye (ne .globl) simvoly v vy- hodnoj fajl. |ta opciya ekonomit opredelennoe mesto v vyhodnom fajle. FAJLY: /lib/lib*.a biblioteki /usr/lib/lib*.a dopolnitel'nye biblioteki a.out vyhodnoj fajl DOPOLNITELXNYE SSYLKI : as, ar, cc, ranlib, ldover 14 APK.00210-01 33 01-5 IMYA: learn - obuchenie rabote s sistemoj. FORMAT: learn [-sprav.] [kurs [urok [skor.]]] OPISANIE: Komanda learn predostavlyaet vozmozhnost' teoreticheskogo i prakticheskogo obucheniya ispol'zovaniyu sistemy DEMOS c pomoshch'yu |VM. Dlya nachala prosto vvedite "learn". Prog- ramma budet zadavat' voprosy, chtoby vyyasnit', chego vy hotite. Voprosov mozhno izbezhat', ukazav nazvanie "kur- sa" obucheniya i nomer poslednego "uroka", kotoryj vy vypolnili vo vremya predydushchego seansa. Vy mozhete takzhe ukazat' parametr "skorost'", kotoryj vam postoyanno so- obshchaet learn vmeste s nomerom vypolnennogo uroka. Esli v kachestve "uroka" ukazan "-", komanda learn zaprashi- vaet k kakomu uroku sleduet perejti; eto polezno pri otladke kursov obucheniya. V nastoyashchee vremya dostupny sleduyushchie "kursy": keyboard rabota s funkcional'noj klaviaturoj; files osnovnye komandy OS DEMOS; morefiles prodolzhenie izucheniya komand OS DEMOS; C programmirovanie na yazyke Si. 15 APK.00210-01 33 01-5 Special'naya komanda "poka" zavershaet seans svyazi s learn. Klyuch "-spravochnik" pozvolyaet rabotat' s kursami obuche- niya, razmeshchennymi ne v standartnom spravochnike sistemy learn. FAJLY: /mnt/learn ZAMECHANIYA: Osnovnoj effekt komandy learn, zaklyuchaetsya v tom, chto obychenie ppovoditcya na modeli OC,na toj ee vepcii, kotopaya cejchac ustanovlena na |VM. Vo vremya pervogo seansa ochen' polezno, ocobenno dlya neppogpammictov, ecli pyadom bydet naxodit'cya specialist po sisteme. Pri sostavlenii nekotoryh urokov mogli byt' dopushcheny oshibki, inogda komponenta v konkretnoj versii OS rabo- taet po-drugomu; takie uroki mogut byt' propushcheny, hotya trebuetsya opredelennyj navyk dlya togo, chtoby ot- lichit' dopushchennuyu obuchaemym oshibku ot "raznochteniya" komponent. 16 APK.00210-01 33 01-5 IMYA: lex - generator programm leksicheskogo analiza. FORMAT: lex [-tvfn] [fajl]... OPISANIE: Komanda lex generiruet programmy, kotorye mogut is- pol'zovat'sya dlya prostogo leksicheskogo analiza teksta. Vhodnye fajly (po umolchaniyu - standartnyj vvod) soder- zhat regulyarnye vyrazheniya, kotorye dolzhny otyskivat'sya, i dejstviya, zapisannye na yazyke Si, kotorye dolzhny vy- polnyat'sya pri nahozhdenii etih vyrazhenij. Generiruetsya ishodnaya programma "lex.yy.s" na yazyke Si, kotoraya dolzhna kompilirovat'sya sleduyushchim obrazom: cc lex.yy.c -ll Pri rabote etoj programmy proizvoditsya kopirovanie ne- raspoznannyh porcij vhodnyh dannyh na vyhod, a takzhe vypolnenie sootvetstvuyushchih dejstvij, opisannyh na yazy- ke Si, dlya kazhdogo regulyarnogo vyrazheniya, kotoroe bylo raspoznano. Privedennaya nizhe programma na yazyke lex vypolnyaet pre- obrazovanie iz verhnego registra v nizhnij, udalyaet probely v konce strok i zamenyaet neskol'ko probelov na odin: %% 17 APK.00210-01 33 01-5 [A-Z] putchar(yytext[0]+'a'-'A'); [ ]+$ [ ]+ putchar(' '); Komanda imeyut sleduyushchie parametry: -t pomestit' rezul'tat v standartnyj fajl vyvoda, a ne v fajl lex.yy.s; -v vydat' razmery vnutrennih tablic; -n ne vydavat' razmery tablic (ustanavlivaetsya po umolchaniyu); -f "bystraya" kompilyaciya, ne provoditsya upakovka re- zul'tiruyushchih tablic. Goditsya tol'ko dlya malyh programm. -d vklyuchenie otladochnogo rezhima kompilyatora (klyuch mozhet zadavat'sya tol'ko pri ispol'zovanii diag- nosticheskogo varianta lex). DOPOLNITELXNYE SSYLKI : yacc 18 APK.00210-01 33 01-5 IMYA: ln - sozdanie al'ternativnyh imen. FORMAT: ln imya1 [imya2] ...[imya n] [d2] OPISANIE: Odin i tot zhe fajl (vmeste so svoim razmerom, informa- ciej, otnosyashchejsya k zashchite, i t.d.) mozhet imet' nes- kol'ko al'ternativnyh imen. Ne sushchestvuet sposoba ot- lichit' al'ternativnoe imya dannogo fajla ot ego ishod- nogo imeni, lyubye izmeneniya v fajle vypolnyayutsya neza- visimo ot imeni, pod kotorym izvesten etot fajl. Komanda ln cozdaet dlya kazhdogo ykazannogo fajla "imya 1",...,"imya n" al'tepnativnoe imya v cyshchectvyyushchem cppavochnike "d2". Ecli v kachectve argumentov komandy zadany "imya 1" i "imya 2", to dlya sushchestvuyushchego fajla "imya 1" cozdaetcya al'tepnativnoe imya "imya 2" v tekyshchem kataloge. ZAMECHANIYA: Sozdavat' al'ternativnye imena spravochnikov, ili po- meshchat' imena fajlov v raznyh fajlovyh sistemah zapre- shchaetsya. DOPOLNITELXNYE SSYLKI : rm 19 APK.00210-01 33 01-5 IMYA: lock - blokirovat' terminal. FORMAT: lock OPISANIE: Komanda lock zaprashivaet u pol'zovatelya parol', zatem pechataet na terminale "Again" i blokiruet etot termi- nal do teh por, poka parol' ne budet ukazan povtorno. Esli pol'zovatel' zabudet parol', u nego net drugoj vozmozhnosti, krome kak zaregistrirovat'sya gde-to v drugom meste i zavershit' blokiruyushchij process. 20 APK.00210-01 33 01-5 IMYA: logoff - vyhod iz sistemy DEMOS. FORMAT: logoff OPISANIE: Komanda logoff prednaznachena dlya vyhoda pol'zovatelya iz sistemy DEMOS. Vyhod iz sistemy po komande logoff proishodit iz lyubogo urovnya fajlovoj sistemy DEMOS. Priznakom vyhoda iz sistemy DEMOS sluzhit izobrazhenie na ekrane displeya "zastavki" s identifikaciej SVM ES. 21 APK.00210-01 33 01-5 IMYA: look - poisk strok v otsortirovannom spiske. FORMAT: look [-df] stroka [fajl] OPISANIE: Komanda look prosmatrivaet otsortirovannyj "fajl" i pechataet vse stroki, nachinayushchiesya simvolami "stroka". Ispol'zuetsya dvoichnyj poisk. Opcii "d" i "f" vliyayut na sravnenie, kak i v sort: d "slovarnyj" poryadok: tol'ko bukvy, cifry, simvo- ly tabulyacii i probely uchastvuyut v sravnenii; f Ignoriruetsya registr simvolov. Bol'shie bukvy schitayutsya pri sravnenii ravnymi malym. DOPOLNITELXNYE SSYLKI : sort, grep 22 APK.00210-01 33 01-5 IMYA: lorder - opredelit' svyazi ob'ektnyh fajlov. FORMAT: lorder fajl ... OPISANIE: Vhodnaya informaciya predstavlyaet soboj odin ili nes- kol'ko ob'ektnyh bibliotechnyh ili arhivnyh fajlov. V rezul'tate raboty poluchaetsya spisok par imen ob'ektnyh fajlov. Pervyj fajl pary ssylaetsya na vneshnij identi- fikator, opredelennyj vo vtorom. Vyhod mozhet byt' ob- rabotan komandoj tsort dlya nahozhdeniya takogo poryadka razmeshcheniya modulej v biblioteke, kotoryj obespechivaet odnoprohodnyj poisk dlya ld. Sleduyushchaya stroka prednaznachena dlya postroeniya novoj biblioteki iz sushchestvuyushchih fajlov ".o": ar cr library `lorder *.o | tsort` DOPOLNITELXNYE SSYLKI : tsort, ld, ar ZAMECHANIYA: imena ob'ektnyh fajlov kak vnutri, tak i vne bibli- otek, dolzhny imet' okonchanie ".o" - v protivnom sluchae rezul'tat budet bessmyslennym. 23 APK.00210-01 33 01-5 IMYA: lpq - vydat' coctoyanie ochepedi k ACPU. FORMAT: lpq OPISANIE: Komanda lpq vydaet sootoyanie ocheredi fajlov, ozhidayushchih vyvoda na ACPU. Kazhdyj element ocheredi vydaetsya, s ukazaniem imeni dannogo fajla, razmera fajla v simvo- lah, vladel'ca i identifikacionnogo nomera. Identifi- kator polezen dlya udaleniya zadannogo vhoda iz ocheredi s pomoshch'yu komandy lprm. FAJLY: /usr/spool/lpd/* DOPOLNITELXNYE SSYLKI : lpr, lprm 24 APK.00210-01 33 01-5 IMYA: lpr - postanovka fajla v ochered' na pechat'. FORMAT: lpr [-m] [-c] [-r] [-b zagolovok] [imya...] OPISANIE: Komanda lpr vyzyvaet zanesenie ukazannyh fajlov v oche- red' na pechat'. Esli fajly ne ukazany, schityvaetsya standartnyj fajl vvoda. Klyuchi opredelyayut sleduyushchie rezhimy vypolneniya komandy: -m posle zaversheniya pechati fajla pol'zovatelyu posy- laetsya soobshchenie s pomoshch'yu mail; -c po umolchaniyu, fajly, kotorye trebuetsya vydat' na ACPU, kopiruyutsya v spravochnik /tmp/spool/lpd - v etom rezhime v /tmp/spool/lpd poyavlyaetsya tol'ko ssylka na fajl i kopirovaniya ne proishodit; -r posle zaversheniya pechati ukazannye fajly udalyayut- sya; -b Po umolchaniyu, pered kazhdym fajlom pechataetsya za- golovok, kotoryj soderzhit imya pol'zovatelya, za- pustivshego dannuyu komandu i vremya vydachi. V etom rezhime zagolovok dopolnyaetsya slovom, opredelen- nym v parametre "zagolovok", kotoroe pechataetsya bol'shimi bukvami v seredine lista. Pechataetsya ne bolee 14 simvolov "zagolovka". 25 APK.00210-01 33 01-5 FAJLY: /usr/spool/lpd/* /usr/lib/lpd "demon" pechati /usr/lib/lpf fil'tr dlya obrabotki zagolovkov i podcherkivanij DOPOLNITELXNYE SSYLKI : lpq, lprm ZAMECHANIYA: V rezhime -c, pri nevozhmozhnosti zavesti ssylku (ishod- nyj fajl nahoditsya v drugoj fajlovoj sisteme), fajl vse-taki kopiruetsya. V dannoj versii ne realizovano povtorenie pechati fajla pri sboe ACPU. 26 APK.00210-01 33 01-5 IMYA: lprm - udalit' fajl iz ocheredi k ACPU. FORMAT: lprm [identifikator...] [imya-fajla...] [vladel'ca...] OPISANIE: Komanda lprm udalyaet fajl iz ocheredi k ACPU. Identi- fikatop, imya-fajla ili vladel'ca konkpetnogo fajla iz ochepedi mozhno uznat' s pomoshch'yu komandy lpq. Vse fajly, udovletvoryayushchie zadannomu usloviyu, budut udaleny. Vydaetsya identifikator kazhdogo udalennogo iz ocheredi fajla. DOPOLNITELXNYE SSYLKI : lpr, lpq FAJLY /usr/spool/lpd/* 27 APK.00210-01 33 01-5 IMYA: ls - vydat' soderzhimoe spravochnika. FORMAT: ls [-1ACFRabcdfgilmnqrstux] imya ... l [klyuchi ls] imya ... OPISANIE: Dlya kazhdogo parametra, yavlyayushchegosya imenem spravochnika, komanda ls vydaet spisok vhodyashchih v nego fajlov i spravochnikov. Dlya kazhdogo parametra, yavlyayushchegosya fajlom, komanda ls povtoryaet ego imya i soobshchaet vsyu ostal'nuyu zatrebovannuyu informaciyu. Po umolchaniyu vy- hodnaya informaciya sortiruetsya v alfavitnom poryadke. Esli parametry ne ukazany, vydaetsya soderzhimoe tekushche- go spravochnika. Imeetsya tri vozmozhnyh formata vydachi. Vybiraemyj format zavisit ot togo, napravlyaetsya li vyvod na ter- minal, a takzhe mozhet upravlyat'sya s pomoshch'yu klyuchej. Standartnym formatom dlya vydachi na terminal yavlyaetsya vyvod v neskol'ko stolbcov .Esli vyvod proizvoditsya ne na terminal, po umolchaniyu vydaetsya po odnomu imeni v stroke. Krome togo, s pomoshch'yu klyucha "-m", mozhet zada- vat'sya format, v kotorom imena fajlov vydayutsya poperek stranicy, razdelyayas' simvolami ",". Pri vyzove "l" , po umolchaniyu podrazumevaetsya klyuch "-m". Fajly, kotorye rassmatrivayutsya ne kak soderzhimoe spra- vochnika, vsegda sortiruyutsya poperek stranicy, a ne v 28 APK.00210-01 33 01-5 stolbcah tablicy sverhu vniz. |to svyazano s tem, chto imena otdel'nyh fajlov mogut imet' proizvol'nuyu dlinu. Imeetsya neskol'ko klyuchej: -l Vydavat' "v dlinnom formate", ukazyvaya dlya kazh- dogo fajla ego rezhim, chislo svyazej, vladel'ca, razmer v bajtah i vremya poslednej modifikacii. Esli fajl yavlyaetsya special'nym fajlom, pole raz- mera budet soderzhat' osnovnoj i dopolnitel'nyj nomera ustrojstva; -t Otsortirovat' v sootvetstvii so vremenem modifi- kacii (vnachale s bolee pozdnim vremenem modifi- kacii) vmesto obychnoj sortirovki po imenam; -a Vydavat' vse imena (obychno imena fajlov nachina- yushchiesya s tochki "." ne vydayutsya); -s Ukazat' razmer dlya kazhdogo imeni v blokah, vklyu- chaya bloki kosvennoj adresacii; -d Esli parametr yavlyaetsya imenem spravochnika, vyda- vat' tol'ko ego imya, a ne soderzhimoe (ispol'zu- etsya glavnym obrazom s "-l" dlya polucheniya sosto- yaniya spravochnika); -r Izmenit' poryadok sortirovki na protivopolozhnyj, chtoby poluchit' fajly v obratnom alfavitnom po- ryadke ili vnachale bolee starye fajly; -u Ispol'zovat' vremya poslednego dostupa vmesto 29 APK.00210-01 33 01-5 vremeni poslednej modifikacii pri sortirovke (-t) ili raspechatke (-l); -i Ukazat' v pervoj pozicii soobshcheniya dlya kazhdogo perechislyaemogo fajla i-nomer; -f Privodit k tomu, chto kazhdyj parametr interpreti- ruetsya kak imya spravochnika, i raspechatyvaetsya imya, nahodyashcheesya v kazhdoj pozicii. |tot klyuch otklyuchaet klyuchi "-l", "-t", "-s" i "-r", i vklyu- chaet klyuch "-a"; poryadok takoj, v kotorom imena nahodyatsya v spravochnike; -g Ukazat' identifikator gruppy vmesto identifika- tora vladel'ca pri podrobnoj vydache ("-l"); -m Ispol'zuetsya potokovyj vyhodnoj format; -1 Ispol'zuetsya format s odnim imenem v stroke, naprimer, pri vyvode na terminal; -c Ispol'zuetsya vyvod v neskol'ko stolbcov, napri- mer, pri vyvode v fajl ili v potok (pipe); -q Vyzyvaet pechat' simvola "?" vmesto neizobrazha- emyh simvolov v imenah fajlov; eto obychno proiz- voditsya, esli vyhodnym ustrojstvom yavlyaetsya ter- minal; -x Vyzyvaet sortirovku sostoyashchej iz neskol'kih stolbcov vydachi poperek stranicy, a ne sverhu vniz; takoj format yavlyaetsya standartnym, esli 30 APK.00210-01 33 01-5 poslednim simvolom imeni, s kotorym byla vyzvana programma, yavlyaetsya "x"; -A Bydayutcya vce imena tekyshego kataloga (analogichno "-a") krome '.' i '..' ; -F K imenam spravochnikov pri vydache dobavlyaetsya simvol "/"; imena ispolnyaemyh fajlov dopolnyayutsya simvolom "*"; -R Rekursivnaya vydacha soderzhimogo vseh vstrechayushchih- sya spravochnikov. Status fajla, vydavaemyj pri ukazanii klyucha "-l", sos- toit iz 11 simvolov, kotorye interpretiruyutsya sledu- yushchim obrazom. Pervym simvolom yavlyaetsya: d Esli dannyj fajl yavlyaetsya spravochnikom; b Esli dannyj fajl yavlyaetsya special'nym fajlom blochnogo tipa; c Esli dannyj fajl yavlyaetsya special'nym fajlom simvol'nogo tipa; - Esli dannyj fajl yavlyaetsya prostym fajlom. Sleduyushchie 9 simvolov interpretiruyutsya kak tri nabora po tri simvola v kazhdom. Pervyj nabor ukazyvaet polno- mochiya vladel'ca, sleduyushchij - polnomochiya drugih pol'zo- vatelej toj zhe gruppy, i poslednij - polnomochiya vseh prochih pol'zovatelej. V kazhdom takom nabore tri simvo- 31 APK.00210-01 33 01-5 la ukazyvayut polnomochiya sootvetstvenno dlya chteniya, za- pisi i vypolneniya dannogo fajla kak programmy. Dlya spravochnika polnomochie "vypolnenie" interpretiruetsya kak razreshenie poiska v kataloge zadannogo fajla. Pol- nomochiya zadayutsya sleduyushchim obrazom: r esli fajl dostupen dlya chteniya; w esli fajl dostupen dlya zapisi; x esli fajl dostupen dlya vypolneniya; - esli ukazannyj vid dostupa ne razreshaetsya. Simvol polnomochiya dlya vypolneniya gruppoj ukazyvaetsya kak "s", esli etot fajl imeet rezhim ustanovki identi- fikacii gruppy; analogichno, simvol polnomochiya dlya vy- polneniya pol'zovatelem ukazyvaetsya kak "s", esli fajl imeet rezhim ustanovki identifikacii pol'zovatelya. Poslednim simvolom rezhima (obychno "x" ili "-") yavlyaet- sya "t", esli ustanovlen bit rezhima 1000. Kogda raspechatyvayutsya razmery fajlov v spravochnike, vydaetsya obshchee kolichestvo blokov, vklyuchaya bloki kos- vennoj adresacii. ZAMECHANIYA: Simvoly tabulyacii i novoj stroki v imenah fajlov rassmatrivayutsya kak pechataemye simvoly. Predpolagaetsya, dlina stroki ustrojstva vyvoda ravna 32 APK.00210-01 33 01-5 80 poziciyam. SHirina stolbcov sostavlyaet obychno 15 sim- volov. Esli zadany klyuchi "-i" ili "-s", shirina sostav- lyaet 20 simvolov. Esli odnovremenno zadany klyuchi "-i" i "-s", shirina sostavlyaet 25 simvolov. V lyubom slu- chae, esli zadan klyuch "-l" ili "-n", predpolagaetsya, chto v stroke pomeshchaetsya informaciya tol'ko ob odnom imeni. Ustanovka klyuchej v zavisimosti ot togo, yavlyaetsya li vyvodnoe ustrojstvo terminalom, nezhelatel'na, tak kak ls -s ! lpr znachitel'no otlichaetsya ot ls -s Vybor shiriny stolbcov yavlyaetsya ves'ma ogranichennym dlya terminalov, kotorye mogut vypolnyat' tabulyaciyu. 33 APK.00210-01 33 01-5 IMYA: m4 - makroprocessor. FORMAT: m4 [fajl ...] OPISANIE: Makroprocessor m4 prednaznachen dlya ispol'zovaniya v ka- chestve preprocessora yazykov FORTRAN, Si i drugih.Kazh- dyj iz fajlov, ukazannyh v parametrah, obrabatyvaetsya po ocheredi. Esli parametry otsutstvuyut ili parametrom yavlyaetsya "-", schityvaetsya standartnyj fajl vvoda. Obrabotannyj tekst zapisyvaetsya v standartnyj fajl vy- voda. Format makrovyzova: imya(par1,par2,...,parN) Simvol "(" dolzhen sledovat' neposredstvenno posle ime- ni makroopredeleniya. Esli simvol "(" otsutstvuet posle imeni, schitaetsya, chto makro ne imeet parametrov. Pri perechislenii parametrov nachal'nye probely, simvoly ta- bulyacii i novoj stroki, ne zaklyuchennye v kavychki, ig- noriruyutsya. Imena makroopredelenij mogut sostoyat' iz bukv, cifr i simvolov podcherkivaniya "_", prichem pervym simvolom ne dolzhna byt' cifra. Mozhno otkazat'sya ot nemedlennoj podstanovki znacheniya makroimeni. Dlya etoj celi sootvetstvuyushchie posledova- tel'nosti simvolov zaklyuchayutsya v apostrofy (`'). Pri 34 APK.00210-01 33 01-5 kazhdom prosmotre makroprocessora odin uroven' apostro- fov udalyaetsya. Kogda obnaruzhivaetsya imya makroopredeleniya, ego para- metry posledovatel'no obrabatyvayutsya. Vychislenie mak- roopredelenij obychno prodolzhaetsya pri prosmotre para- metrov, i lyubye zapyatye ili pravye skobki, kotorye mogut poyavit'sya v znachenii vlozhennogo vyzova, imeyut takoe zhe dejstvie, kak i ishodnyj tekst. Posle podsta- novki znachenie makro pomeshchaetsya obratno vo vhodnoj potok i prosmatrivaetsya povtorno. Vozmozhno zadanie svoih makro s sovpadayushchimi imenami, odnako posle etogo ih nachal'nyj smysl teryaetsya. Kak pravilo vstroennye makro vydayut znachenie "pusto" (esli v opisanii ne skazano inache). Kratkoe opisanie vstro- ennyh makroopredelenij m4, kotorye predstavlyayut soboj vhodnoj yazyk makroprocessora: define(imya,znachenie) Vtoroj parametr ustanavlivaetsya v kachestve zna- cheniya makroimeni, ukazanogo v pervom parametre. Kazhdoe upotreblenie $n v zameshchayushchem tekste, gde n - cifra, zamenyaetsya na n-yj parametr. Parametr 0 predstavlyaet soboj imya makro. Otsutstvuyushchie parametry zamenyayutsya pustymi strokami; undefine(`imya') Udalyaet opredelenie makro, ukazannogo v paramet- re; 35 APK.00210-01 33 01-5 ifdef(`imya',param2,param3) Esli pervyj parametr opredelen, znacheniem yavlya- etsya vtoroj parametr, esli net - tretij. Esli tretij parametr otsutstvuet, znacheniem yavlyaetsya pusto; changequote(l,r) Zamenyaet simvoly ekranirovaniya (apostrofy) na pervyj i vtoroj parametry. Vyzov changequote bez parametrov vosstanavlivaet ishodnye znacheniya (t.e. `'); divert(n) Makroprocessor obsluzhivaet do 10 vyvodnyh fajlov, pronumerovannyh ot 0 do 9. Konechnyj vyvod predstavlyaet soboj konkatenaciyu etih fajlov v poryadke ih nomerov. Po umolchaniyu infor- maciya vydaetsya v standartnyj fajl vyvoda (fajl s nomerom 0). Makro divert zamenyaet tekushchij vyhod- noj fajl na ukazannyj v parametre (cifrovaya stroka). Vyvod, kotoryj napravlyaetsya v fajl no- merom, ne vhodyashchim v diapazon 0-9, otbrasyvaet- sya; undivert(n1,n2 ...) Vyzyvaet nemedlennyj vyvod teksta iz vseh uka- zannyh fajlov (ili iz vseh fajlov, esli paramet- ry otsutstvuyut). Tekst mozhet byt' vyveden v dru- goj fajl. Pri vyvode informaciya v fajle unichto- 36 APK.00210-01 33 01-5 zhaetsya; divnum Vozvrashchaet znachenie tekushchego vyhodnogo fajla; dln Schityvaet i otbrasyvaet simvoly do sleduyushchego simvola novoj stroki vklyuchitel'no; ifelse(a,b,c,d) Imeet tri ili bolee parametrov. Esli pervyj pa- rametr sovpadaet so vtorym, tretij parametr is- pol'zuetsya v kachestve znacheniya. Esli eto ne tak i esli imeetsya bolee chetyreh parametrov, dannyj process povtoryaetsya dlya parametrov 4, 5, 6 i 7. V protivnom sluchae znacheniem yavlyaetsya libo chet- vertaya stroka, libo, esli ona otsutstvuet - pusto; incr(chislo) Vozvrashchaet znachenie svoego parametra, uvelichen- noe na 1. Ishodnaya stroka cifr rassmatrivaetsya kak desyatichnoe chislo; eval(vyrazhenie) Vydaet znachenie ukazannogo vyrazheniya. Pri vychis- lenii ispol'zuetsya 32-razryadnaya celaya arifmeti- ka. Operacii vklyuchayut v sebya +, -, *, /, %, ^ (vozvedenie v stepen'), otnosheniya, skobki; len(stroka) Vozvrashchaet kolichestvo simvolov v "stroke"; 37 APK.00210-01 33 01-5 index(stroka_1,stroka_2) Vozvrashchaet nomer simvola "stroki_1" s kotorogo nachinaetsya vhozhdenie "stroki_2". Schet simvolov nachinaetsya s nulya. Esli v "stroke_1" vhozhdenij "stroki_2" ne obnaruzhenno, vozvrashchaetsya -1; substr(s,i,n) Vozvrashchaet podstroku stroki "s", nachinayushchuyusya s i-toj pozicii, dlinoj v "n" simvolov. Schet sim- volov nachinaetsya s nulya. Esli tretij parametr otsutstvuet, schitaetsya, chto podstroka prodolzha- etsya do konca stroki "s"; translit(s,f,t) Perekodiruet stroku "s", zamenyaya simvoly, vhodya- shchie v stroku "f", sootvetstvuyushchimi simvolami stroki "t"; include(imya) Zamenyaetsya na soderzhimoe fajla s ukazannym "ime- nem"; sinclude(imya) Analogichno include, za isklyucheniem togo, chto es- li fajl nedostupen, diagnostika ne vydaetsya i process raboty makroprocessora ne preryvaetsya; syscmd(komanda) Vypolnyaet ukazannuyu "komandu" sistemy. Znachenie ne vozvrashchaetsya; 38 APK.00210-01 33 01-5 maketemp(...XXX...) Zamenyaet simvoly XXX identifikatorom tekushchego processa; errprint(stroka_1,stroka_2,...) Vydaet ukazannye stroki v standartnyj fajl diag- nosticheskih soobshchenij; dumpdef(imya_1,imya_2...) Vydaet tekushchie imena i opredeleniya dlya ukazannyh parametrov (ili vse, esli parametry otsutstvu- yut); 39 APK.00210-01 33 01-5 IMYA: mail - pochtovaya sluzhba. FORMAT: mail [+] [-i] [adresat]... mail [+] [-i] -f fajl OPISANIE: komanda mail prednaznachena dlya realizacii obmena soob- shcheniyami mezhdu pol'zovatelyami posredstvom apparata "pochtovyh yashchikov". Pochtovym yashchikom pol'zovatelya, obych- no yavlyaetsya fajl v spravochnike /usr/spool/mail s ime- nem analogichnym imeni pol'zovatelya, pod kotorym tot zaregistrirovan v sisteme. Primenyaya komandu mail, pol'zovatel' poluchaet vozmozhnost' prosmotret' sobstvennyj "pochtovyj yashchik" ili dopolnit' chuzhoj svoim soobshcheniem. Esli v komande ne ukazan "adresat", vyda- etsya pochta pol'zovatelya, soobshchenie za soobshcheniem, v poryadke "poslednim prishel - pervym vyshel". Kogda pere- chisleny "adresaty", mail schityvaet standartnyj vvod do konca fajla ili stroki, soderzhashchej lish' ".", i dobav- lyaet ego k "pochtovomu yashchiku" kazhdogo "adresata". V na- chale soobshcheniya ukazyvaetsya imya otpravitelya, data otpravleniya i "pochtovyj shtempel'". V kachestve "pochto- vogo shtempelya" ispol'zuyutsya stroki, nachinayushchiesya sim- volom ">". Obychno, "adresat" - imya pol'zovatelya, pod kotorym tot zaregistrirovan v sisteme, esli neobhodimo otpravit' soobshchenie pol'zovatelyu nahodyashchemusya v drugoj sisteme (na drugoj mashine), to pered parametrom "adre- 40 APK.00210-01 33 01-5 sat" sleduet ukazat' "!imya_sistemy" . Klyuchi zadayut sleduyushchie rezhimy raboty komandy: + izmenit' poryadok prosmotra soobshchenij na rezhim "pervym prishel - pervym vyshel"; -i ignorirovat' preryvaniya; -f ispol'zovat' sleduyushchij za nim parametr v ka- chestve imeni fajla, al'ternativnogo "pochtovomu yashchiku". Vo vremya prosmotra "pochtovogo yashchika", posle pechati ocherednogo soobshcheniya programma vydaet na terminal znak voprosa "?" i ozhidaet komandu. Dopustimy sleduyushchie ot- vety: <return> perejti k sleduyushchemu soobshcheniyu bez izmeneniya so- derzhimogo pochtovogo yashchika; d udalit' soobshchenie i perejti k sleduyushchemu; p povtorno napechatat' tekushchee soobshchenie; - vernut'sya k predydushchemu soobshcheniyu; s[fajl]... sohranit' soobshchenie v fajlah s ukazannymi imena- mi (po umolchaniyu, ispol'zuetsya fajl mbox v rabo- chem spravochnike pol'zovatelya); 41 APK.00210-01 33 01-5 w[fajl]... sohranit' soobshchenie bez zagolovka v fajlah s ukazannymi imenami (po umolchaniyu - mbox); m[pol'zovatel']... napravit' soobshchenie perechislennym pol'zovatelyam (po umolchaniyu - sebe); EOT (<konec peredachi> - <cntrl-D>) pomestit' neprosmotrennuyu pochtu obratno v pochto- vyj yashchik i zavershit' prosmotr; q to zhe, chto i EOT; !komanda vyzvat' interpretator komand SHELL i vypolnit' ukazannuyu komandu. Lyuboj drugoj otvet privedet k vydache privedennogo vyshe spiska komand. Soobshchenie o nalichii pochty vydaetsya pri registracii. FAJLY: /etc/passwd svedeniya o pol'zovatelyah sis- temy /usr/spool/mail/* "pochtovye yashchiki" mbox sohranennaya pochta /tmp/ma* vremennye fajly dead.letter ne otpravlennyj po pochte tekst 42 APK.00210-01 33 01-5 pif -mes [a-i]*.1 > ai1.f mx -ES -P ant.ai ai1.f > ai1.fcps pif -mes [j-z]*.1 > jz1.f mx -ES -P ant.jz jz1.f > jz1.fcps rm *.f 43 APK.00210-01 33 01-5 IMYA: make - programma sborki komponent. FORMAT: make [-f komandnyj_fajl] [klyuch] ... Fajl ... OPISANIE: Komanda make vypolnyaet sborku komponent iz nabora is- hodnyh fajlov. Rezul'tatom raboty make mozhet yavlyat'sya gotovaya programma, poluchaemaya iz mnozhestva fajlov, ot- chet ili stat'ya, sozdavaemaya s pomoshch'yu sistemy podgo- tovki dokumentacii, biblioteka funkcij i t.p. Dlya ispol'zovaniya make, razrabatyvaetsya special'naya programma sborki, pod upravleniem kotoroj vypolnyayutsya vse neobhodimye dejstviya dlya polucheniya trebuemogo re- zul'tata. Programma sborki (komandnyj fajl make) so- derzhit informaciyu o porozhdaemyh ob'ektah, derevo zavi- simostej, opisyvayushchee iz kakih fajlov poluchaetsya ob'ekt, i komandy yazyka SHELL dlya sozdaniya ob'ektov. Imya komandnogo fajla ukazyvaetsya posle klyucha "-f", es- li vmesto parametra "komandnyj_fajl" ukazan "-", is- pol'zuetsya standartnyj fajl vvoda. Pri zadanii v vyzy- vayushchej stroke neskol'kih fajlov s klyuchami "-f" v ka- chestve opisaniya ispol'zuetsya konkatenaciya zapisej v ukazannyh fajlah. Komponenta sozdaetsya, esli ona ne sushchestvuet, ili esli hotya by odin iz fajlov (ot kotoryh ona pryamo ili kos- 44 APK.00210-01 33 01-5 venno zavisit) izmenyalsya posle poslednej sborki. Komandnyj fajl soderzhit nabor operatorov, kotorye op- redelyayut usloviya i pravila porozhdeniya komponent. Ope- rator nachinaetsya so spiska imen trebuemyh ob'ektov, posle kotorogo stoit odin ili dva simvola "dvoetochie" i, vozmozhno, sleduet spisok ishodnyh fajlov. Tekst posle tochki s zapyatoj, a takzhe vse posleduyushchie stroki, nachinayushchiesya simvolom tabulyacii, predstavlyayut soboj komandy yazyka SHELL, kotorye dolzhny vypolnyat'sya dlya sozdaniya komponenty. Pri zapisi imen porozhdaemyh i trebuyushchihsya fajlov do- pustimo ispol'zovanie regulyarnyh vyrazhenij (ispol'zu- yutsya metasimvoly "*", "[-]", "?", interpretaciya koto- ryh sovpadaet s prinyatoj v yazyke SHELL; ). Ostatok stroki, nachinayushchijsya simvolom "#", schitaetsya kommentariem i ne rassmatrivaetsya programmoj make. Sleduyushchij komandnyj fajl soderzhit pravila sozdaniya programmy "pgm", poluchaemoj v rezul'tate sborki fajlov "a.o" i "b.o", kotorye, v svoyu ochered', zavisyat ot fajlov "a.c", "b.c" i "incl.h". pgm: a.o b.o cc a.o b.o -o pgm a.o: incl.h a.c cc -c a.c b.o: incl.h b.c 45 APK.00210-01 33 01-5 cc -c b.c V dannom primere kazhdyj iz porozhdaemyh ob'ektov zavi- sit ot sushchestvovaniya dvuh komponet, i pri otsutstvii ili v rezul'tate modifikacii lyuboj iz nih, dlya polucheniya ob'ekta vypolnyayutsya odinakovye dejstviya. Sushchestvuet vozmozhnost' zadaniya neskol'kih pravil po- rozhdeniya dlya odnogo i togo zhe ob'ekta. V etom sluchae, v kachestve razdelitelya mozhno ispol'zovat' dva simvola "dvoetochie": aa :: x.c y.c echo OBNOVLEN FAJL NA YAZYKE SI aa :: x.y echo OBNOVLEN FAJL NA YAZYKE YACC Komandnyj fajl mozhet soderzhat' vyzovy makroperemennyh, dlya zadaniya znachenij kotoryh ispol'zuyutsya stroki vida: imya = znachenie Pri vypolnenii komandnogo fajla vse konstrukcii: $(imya) ili ${imya} zameshchayutsya "znacheniem" sootvetstvuyushchej peremennoj "imya". Esli "imya" sostoit iz odnogo simvola, to v mak- rovyzove skobki mozhno ne ispol'zovat'. Znacheniya makroperemennyh mozhno ustanavlivat' ne tol'ko 46 APK.00210-01 33 01-5 v samom komandnom fajle, no i pri vyzove make. Esli odna i ta zhe makroperemennaya odnovremenno opredelyaetsya i v komadnom fajle i v vyzove, ispol'zuetsya znachenie, zadannoe pri vyzove. Tak, esli komandnyj fajl soderzhit stroki: TEXT = ZADANIE 2 progr: echo ${TEXT} zapusk komandy make bez parametrov privedet k vydache teksta "ZADANIE 2". Esli etot zhe komandnyj fajl zapus- kaetsya komandoj: make "TEXT = PRIMER 1" v rezul'tate ee raboty budet polucheno soobshchenie "PRIMER 1". Sushchestvuet neskol'ko special'nyh makroperemennyh, zna- cheniya kotoryh ustanavlivayutsya samoj programmoj make: $* Imya sozdavaemoj komponenty bez suffiksa; $? Spisok modificirovannyh fajlov, privodyashchih k vy- polneniyu komand dannogo pravila; $@ Polnoe imya sozdavaemogo fajla; $< Spisok ishodnyh fajlov; $$ Simvol "$". 47 APK.00210-01 33 01-5 Neobhodimyj ob'ekt mozhno poluchit' iz kakogo-libo is- hodnogo fajla odnim iz chetyreh sposobov: - neposredstvenno zadat' imena i pravila porozhde- niya; - vvesti obshchee pravilo dlya imen s ukazannymi suf- fiksami; - zadat' pravilo ".DEFAULT"; - ispol'zovat' standartnye soglasheniya o preobrazo- vaniyah. V operatore, neposredstvenno ukazyvayushchem metod poluche- niya odnogo fajla iz drugogo, yavno zadayutsya polnye ime- na porozhdaemogo i ishodnogo fajlov. Naprimer, poluche- nie fajla "a.K" iz "a.M": a.K : a.M mv a.M a.K V obshchem pravile ukazyvayutsya suffiksy i zadayutsya koman- dy, preobrazuyushchie fajly s odnim suffiksom v fajly s tem zhe imenem, no drugim suffiksom. Naprimer, pravilo polucheniya fajlov s suffiksom ".o" iz fajlov okanchiva- yushchihsya na ".s" mozhet imet' vid: .c.o : cc -c $< Krome togo, v komandnom fajle neobhodimo ukazat', chto 48 APK.00210-01 33 01-5 ".o" i ".c" yavlyayutsya suffiksami i zadat' poryadok pri- meneniya obshchih pravil preobrazovaniya (dlya sluchaev, kogda neskol'ko obshchih pravil opisyvayut perehod ot raznyh ishodnyh fajlov k odnomu porozhdennomu). |to de- laetsya s pomoshch'yu operatora: .SUFFIXES: .o .c Esli v spiske porozhdaemyh ob'ektov pri pravile ukazana konstrukciya ".DEFAULT", to eto pravilo vypolnyaetsya vsyakij raz, kogda programma make ne imeet informacii o metode polucheniya trebuemogo fajla. Naprimer, esli v komandnom fajle zadano pravilo: .DEFAULT: cp dummy $@ budut sozdavat'sya vse nedostayushchie fajly (kazhdyj iz ko- toryh poluchaetsya s pomoshch'yu kopirovaniya fajla dummy). Vo vremya raboty komandnogo fajla mozhno ispol'zovat' nabor standartnyh pravil polucheniya komponent, imeyushchij- sya v sisteme. Tak, pervyj iz privedennyh primerov mozhno bylo zapicat' znachitel'no kopoche: pgm: a.o b.o cc a.o b.o -o pgm a.o b.o: incl.h Pri ispol'zovanii standartnyh pravil, sushchestvuet voz- mozhnost' izmeneniya imen nekotoryh kompilyatorov i klyu- 49 APK.00210-01 33 01-5 chej, s kotorymi oni vyzyvayutsya. Imena kompilyatorov za- dayutsya makroperemennymi: AS Assembler (as); CC Si-kompilyator (cc); RC Fortran-77 (f77); LEX Generator leksicheskih analizatorov Lex (lex); YACC Kompilyator kompilyatorov Yacc (yacc). Klyuchi standartnyh kompilyatorov yavlyayutsya znacheniyami sleduyushchih makroperemennyh: CFLAGS Klyuchi Si-kompilyatora (cc); FFLAGS Klyuchi kompilyatora Fortran-77 (f77); LFLAGS Klyuchi generatora programm leksicheskogo ana- liza lex; YFLAGS Klyuchi kompilyatora yacc; LOADLIBES Spisok ispol'zuemyh bibliotek. Pri ispol'zovanii standartnyh pravil ispol'zuetsya sle- duyushchee soglashchenie o traktovke suffiksov: .out Fajl vyvoda; .o Ob'ektnyj fajl; .c Ishodnyj fajl na yazyke Si; 50 APK.00210-01 33 01-5 .f Ishodnyj fajl na Fortrane; .e Ishodnyj fajl na yazyke Efl; .r Ishodnyj fajl na Ratfore; .y Ishodnyj fajl na Yacc; .l Ishodnyj fajl na Lex; .s Ishodnyj fajl na Assemblere; .p Ishodnyj fajl na Paskale. Dlya vypolneniya kazhdoj komandnoj stroki SHELL zapuska- etsya otdel'nyj process. Poetomu pri ispol'zovanii mak- roperemennyh trebuetsya prinimat' special'nye mery, naprimer, oformlyat' gruppy komand, ispol'zuyushchie obshchie makro v vide sostavnoj komandy SHELL. Esli v komandnom fajle ne byl zadan special'nyj vhod ".SILENT", ili pervym simvolom komandy ne byl simvol "@", stroka pri vypolnenii raspechatyvaetsya. Krome togo, pri vyzove make dlya ustanovki rezhima podavleniya vydachi ispolnyaemyh komand mozhno ispol'zovat' klyuch "-s". Sozdanie fajla s pomoshch'yu programmy make mozhet byt' sluchajno ili prednamerenno prervano. Esli nedodelannyj fajl ne yavlyaetsya spravochnikom, i v spiske porozhdaemyh ob'ektov naryadu s imenem etogo fajla ukazano special'- noe imya ".PRECIOUS", fajl unichtozhaetsya. 51 APK.00210-01 33 01-5 Sushchestvuet vozmozhnost' raboty s fajlami