endsw Ispol'zuyutsya v operatorah foreach, if, switch i while. ehes komanda "Komanda" zapuskaetsya vmesto csh. Rabota csh za- vershaetsya. exit exit( vyr ) Proizvoditsya vyhod iz csh libo so znacheniem pe- remennoj status (pervaya forma), libo so znacheni- em ukazannogo vyrazheniya "vyr" (vtoraya forma); glob spisok_slov |ta komanda analogichna komande echo, za isklyuche- niem togo, chto pri vyvode slova razdelyayutsya pro- belami, tak kak simvol " goto slovo Komanda bezuslovnogo perehoda na metku. Vypolnenie prodolzhaetsya so stroki, idushchej posle ukazannoj metki. Metka dolzhna zavershat'sya simvo- lom ":". hashstat Raspechatyvaet statistiku, opredelyayushchuyu, naskol'- ko effektivno vnutrennyaya tablica heshirovaniya razmeshchaet komandy. 85 APK 00210-01 33 01-4 history Otobrazhaet spisok predshestvuyushchih komand. if (vyr) komanda Esli znachenie ukazannogo vyrazheniya istinno, vy- polnyaetsya "komanda". Komanda dolzhna byt' odna. Ispol'zovanie konvejerov ne dopuskaetsya. login login imya Po komande login zavershaetsya rabota csh i inici- aliziruetsya programma init dlya dannogo displeya. Komanda mozhet ispol'zovat'sya bez parametra "imya" i s nim. Vo vtorom sluchae srazu zhe budet zapro- shen vhodnoj parol' pol'zovatelya. logout Preryvaet rabotu csh. Esli opredelena peremennaya ignoreeof, to signal konca fajla <CTRL/D> igno- riruetsya. nice nice +chislo nice komanda nice +chislo komanda Pervaya forma ustanavlivaet prioritet csh ravnym 4. Vtoraya forma ustanavlivaet prioritet ravnym ukazannomu chislu. Poslednie formy vypolnyayut ko- mandu s prioritetom 4 i "chislo" sootvetstvenno. 86 APK 00210-01 33 01-4 Ispol'zuya konstrukciyu "nice -chislo ...", super- pol'zovatel' mozhet ustanovit' otricatel'nyj pri- oritet. Komanda vypolnyaetsya v podprocesse csh.Ispol'zovanie konvejerov ne dopuskaetsya. nohup nohup komanda Komanda predotvrashchaet reakciyu csh na signaly preryvaniya. Pri ispol'zovanii bez parametrov dejstvie nohup rasprostranyaetsya na vse stroki komandogo fajla, ukazannye za nej. Vo vtoroj forme signaly preryvaniya ignoriruyutsya tol'ko pri vypolnenii ukazannoj "komandy". Dlya vseh fonovyh processov, nohup vypolnyaetsya avtomaticheski. onintr onintr - onintr metka Upravlyaet reakciej csh na preryvaniya. Pervaya forma vosstanavlivaet standartnuyu reakciyu csh na preryvaniya, kotoraya zaklyuchaetsya v zavershenii vy- polneniya komandnyh fajlov csh ili vozvrate v in- teraktivnyj rezhim. Vtoraya forma vyzyvaet ignori- rovanie lyubyh signalov preryvaniya. Poslednyaya forma pri poluchenii signala preryvaniya vyzyvaet vypolnenie komandy "goto metka". rehash 87 APK 00210-01 33 01-4 Sozdaet hesh-tablicu komand, soderzhashchihsya v spra- vochnikah, kotorye ukazany v peremennoj path. repeat schetchik komanda Povtoryaet vypolnenie "komandy" "schetchik" raz. Standartnye fajly vvoda/vyvoda zadayutsya tol'ko odin raz. set set imya set imya=slovo set imya[indeks]=slovo set imya=(spisok_slov) Pervaya forma dannoj komandy vyvodit znacheniya vseh peremennyh csh. Peremennye, kotorye imeyut neskol'ko znachenij, vyvodyatsya v vide spiska, zaklyuchennogo v skobki. Vtoraya forma prisvaivaet ukazannomu "imeni" stroku nulevoj dliny. Tret'ya forma prisvaivaet "imeni" znachenie "slova". CHet- vertaya forma prisvaivaet komponentu imeni s no- merom "indeks" znachenie "slova". Poslednyaya forma prisvaivaet "imeni" znacheniya iz "spisoka_slov". setenv setenv imya znachenie Pervaya forma vyvodit znacheniya peremennyh sredy processa, vtoraya ih ustanavlivaet. shift 88 APK 00210-01 33 01-4 shift peremennaya CHleny peremennoj argv sdvigayutsya vlevo, pri etom argv[1] (levyj element spiska) otbrasyvaetsya. Esli element spiska ne opredelen ili imeet menee odnogo znacheniya, to voznikaet oshibka. Vtoraya forma komandy vypolnyaet eti zhe dejstviya nad uka- zannoj "peremennoj". source imya Csh schityvaet komandy iz fajla "imya". Komanda source mozhet byt' vlozhennoj.Esli glubina vlozhe- niya slishkom velika, to mozhet ne hvatit' deskrip- torov fajlov. Oshibka v komande source na lyubom urovne preryvaet vypolnenie ostal'nyh vlozhennyh komand source. Vvod komand, proizvedennyj v pro- cesse vypolneniya komandy source ne fiksiruetsya v spiske predshestvuyushchih komand. time time komanda Pri otsutstvii parametrov soobshchaet vremya, zatra- chennoe interpretatorom csh i porozhdennymi pro- cessami. Esli parametr zadan, vydaetsya vremya, zatrachennoe ukazannoj "komandoj". umask umask znachenie Maska dostupa k fajlu soobshchaetsya (pervaya forma) 89 APK 00210-01 33 01-4 ili ustanavlivaetsya ravnoj ukazannomu znacheniyu (vtoraya forma). Znachenie maski ukazyvaetsya v vos'merichnom kode. Samymi rasprostranennymi zna- cheniyami maski yavlyayutsya 022 (po umolchaniyu), koto- roe zadaet lyuboj dostup dlya pol'zovatelej svoej gruppy i dostup dlya chteniya i vypolneniya drugim pol'zovatelyam, i 002, opredelyayushchee lyuboj dostup, za isklyucheniem zapisi, dlya pol'zovatelej svoej gruppy i vseh prochih; unalias obrazec Vse psevdonimy, imena kotoryh sootvetstvuyut uka- zannomu obrazcu, otbrasyvayutsya. Sledovatel'no, komanda "unalias *" udalyaet vse psevdonimy. Esli psevdonimy ne udalilis', eto ne schitaetsya oshib- koj.Ispol'zovanie komandy bez parametrov privo- dit k vozniknoveniyu oshibki. unhash Zapreshchaet ispol'zovanie hesh-tablicy dlya uskore- niya nahozhdeniya vypolnyaemyh programm. unset obrazec Vse peremennye, imena kotoryh sootvetstvuyut uka- zannomu obrazcu, udalyayutsya. Takim obrazom, ko- manda "unset *" udalyaet vse peremennye, oprede- lennye komandoj set. Popytka udalit' neoprede- lennuyu peremennuyu ne privodit k vozniknoveniyu oshibki. 90 APK 00210-01 33 01-4 wait Proishodit ozhidanie vseh porozhdennyh processov. V interaktivnom rezhime signal preryvaniya mozhet prervat' i vypolnenie komandy wait.Pri etom csh pechataet imena i nomera vseh nezavershennyh pro- cessov. @ @imya=vyrazhenie @imya[indeks]=vyrazhenie Pervaya forma raspechatyvaet znacheniya vseh pere- mennyh csh. Vtoraya forma prisvaivaet parametru "imya" znachenie "vyrazheniya". Esli chast' vyrazheniya soderzhit simvoly "<", ">", "&" ili "|", to ona dolzhna byt' zaklyuchena v kruglye skobki (...). Tret'ya forma prisvaivaet komponentu"imya" s nome- rom "indeks" znachenie "vyrazheniya". "Imya" i ego komponent s nomerom "indeks" dolzhny sushchestvo- vat'. VNUTRENNIE PEREMENNYE: argv Opredelyaet znacheniya parametrov csh. K nej prime- nimy podstanovki pozicionnyh parametrov (napri- mer, "$1" zamenyaetsya na "$argv[1]"). child Nomer processa.Vyvoditsya pri zapuske parallel'- nogo processa. Po zavershenii processa znachenie peremennoj sbrasyvaetsya (unset). echo Ustanavlivaetsya, esli v komandnoj stroke ukazy- 91 APK 00210-01 33 01-4 vaetsya flag "-h". Vyzyvaet pechat' kazhdoj komandy i ee parametrov pered vypolneniem. Vse rasshire- niya vypolnyayutsya pered vyvodom. history Opredelyaet razmer spiska predshestvuyushchih komand. Slishkom bol'shoe znachenie peremennoj mozhet pri- vesti k nehvatke pamyati. Optimal'noe chislo - 22 stroki. home Opredelyaet imya registracionnogo spravochnika pol'zovatelya. ignoreeof Predotvrashchaet sluchajnoe zavershenie csh pri pri- eme signala "konec fajla" <CTRL/D>. mail Soderzhit imena fajlov, kotorye proveryayutsya in- terpretatorom csh na nalichie pochty posle zaver- sheniya kazhdoj komandy. noclobber Ustanavlivaet zashchitu fajlov ot sluchajnogo razru- sheniya i obespechivaet sushchestvovanie fajlov vyvoda pri ispol'zovanii konstrukcii ">>". noglob Zapreshchaet rasshirenie imen fajlov. nonomatch Esli rasshirenie imen fajlov ne sootvetstvuet ni 92 APK 00210-01 33 01-4 odnomu iz sushchestvuyushchih fajlov, to pri ustanovke dannoj peremennoj vozvrashchaetsya ishodnyj obrazec. Odnako, esli ishodnyj obrazec neveren (naprimer, "esno ["), to voznikaet oshibka. path Opredelyaet spisok imen spravochnikov dlya poiska vypolnyaemyh komand. prompt Opredelyaet stroku-priglashenie interpretatora dlya vvoda komand. Esli v etoj stroke prisutstvuet ukazatel' "!", kotoromu ne predshestvuet simvol " Standartnymi znacheniyami yavlyayutsya "%" - dlya obych- nogo pol'zovatelya i "#" - dlya superpol'zovatelya. shell Esli komandnyj fajl yavlyaetsya vypolnyaemym (imeet- sya bit "x") i nachinaetsya s simvola "#", to on vypolnyaetsya interpretatorom csh.Esli simvol "#" otsutstvuet - interpretatorom sh. Peremennaya shell opredelyaet fajl, kotoryj dolzhen vypolnyat' interpretator csh. status Opredelyaet kod zaversheniya poslednej komandy (0 - pri uspeshnom vypolnenii komandy, 1 - pri neus- peshnom). time Hronometriruet komandy, esli ih dejstvie prodol- zhalos' bolee ukazannogo vremeni. 93 APK 00210-01 33 01-4 verbose Ustanavlivaetsya flagom "-v" i vyzyvaet raspechat- ku kazhdoj komandnoj stroki pered ee vypolneniem. FLAGI CSH: -c Schitat' komandu iz edinstvennogo parametra, uka- zannogo srazu posle "-c". Vse ostal'nye parametry razmeshchayutsya v peremennoj argv; -e Prekratit' rabotu csh, esli lyubaya vyzvannaya ko- manda vypolnena neuspeshno ili esli kod zavershe- niya komandy ne raven nulyu; -f Zapretit' chtenie fajla ".cshrc" dlya obespecheniya bolee bystrogo zapuska interpretatora csh; -i Ustanavlivaet interaktivnyj rezhim raboty in- terpretatora; -n Osushchestvlyaet tol'ko sintaksicheskuyu proverku komand; -s Schityvat' vhodnuyu informaciyu iz standartnogo fajla vvoda; -t Schityvat' i vypolnyat' tol'ko odnu komandnuyu stroku. |ta stroka mozhet soderzhat' v konce simvol prodolzheniya stroki " -v Vyzyvaet ustanovku peremennoj verbose, v rezul'- tate chego vvodimye komandy raspechatyvayutsya posle 94 APK 00210-01 33 01-4 podstanovki predshestvuyushchih komand; -V Vyzyvaet ustanovku peremennoj verbose pered vy- polneniem fajla ".cshrc"; -x Vyzyvaet raspechatku komand pered ih vypolneniem; -X Ustanavlivaet flag "-x" pri interpretacii fajla ".cshrc". OBRABOTKA SIGNALOV: Interpretator komand obychno ignoriruet signaly vyhoda (quit). Komandy, vypolnyaemye v fonovom rezhime, obychno ignoriruyut signaly preryvaniya (interrupt) i vyhoda. V obychnom rezhime eti signaly imeyut znacheniya, nasleduemye ot predydushchego processa. Reakciya csh na preryvaniya mozhet ustanavlivat'sya komandoj onintr. Interpretatory, ustanavlivaemye neposredstvenno pri registracii pol'- zovatelya v sisteme, vosprinimayut signal zaversheniya (terminate); v ostal'nyh sluchayah sostoyanie signala preryvaniya peredaetsya iz tekushchego processa v porozhda- emyj. Vo vremya schityvaniya fajla ".logout", signaly preryvaniya ne vosprinimayutsya. FAJLY: ^/.cshrc schityvaetsya csh v nachale vypolneniya. ^/.login schityvaetsya csh posle ".cshrc" pri registracii. ^/.logout schityvaetsya csh pri vyhode. 95 APK 00210-01 33 01-4 /bin/sh standartnyj shell dlya komandnyh fajlov, kotorye nachinayutsya ne s "#". /tmp/sh* vremennyj fajl dlya "<<". /dev/null istochnik dlya pustogo fajla. /etc/passwd registracionnyj spravochnik dlya "^imya". OGRANICHENIYA: Slova ne mogut byt' dlinee, chem 512 simvolov. Koli- chestvo simvolov v parametrah zavisit ot sistemy. Predel sostavlyaet ot 512 do 5120 simvolov. Kolichestvo parametrov komandy, vklyuchayushchih rasshireniya imen fajlov, ogranicheno 1/6-oj chisla simvolov, razreshennyh v spiske parametrov. Pri podstanovke komand kolichestvo podstav- lyaemyh simvolov ne dolzhno prevyshat' chisla, ukazannogo v spiske parametrov. Dlya predotvrashcheniya zaciklivaniya csh ogranichivaet kolichestvo podstanovok psevdonimov v odnoj stroke do 20-ti. DOPOLNITELXNYE SSYLKI: sh, environ. ZAMECHANIYA: Komandy upravleniya dolzhny podvergat'sya grammaticheskomu razboru, a ne raspoznavat'sya v kachestve vstroennyh komand. |to pozvolilo by razmeshchat' ih v lyubom meste, ob'edinyat' s pomoshch'yu simvola "|", a takzhe ispol'zovat' s metaoboznacheniyami "&" i ";". 96 APK 00210-01 33 01-4 Komandy, soderzhashchiesya vnutri ciklov s podskazkoj "?", ne pomeshchayutsya v spisok predshestvuyushchih komand. Dolzhna sushchestvovat' vozmozhnost' ispol'zovaniya modifi- katorov ":" pri vyvode podstanovok komand. V makrovy- zovah "$" dolzhno dopuskat'sya bolee odnogo modifikatora ":". Nekotorye komandy ne dolzhny izmenyat' znacheniya peremen- noj status, inache ona budet tak chasto menyat'sya, chto mozhet okazat'sya pochti bespoleznoj. Ustanovka bita 0200 v peremennoj status pri nenormal'nom zavershenii svide- tel'stvuet ob oshibke. CHtoby sohranit' vozmozhnost' vosstanovleniya posle ne- udachnogo vypolneniya komand ehes, novaya komanda nasle- duet neskol'ko otkrytyh fajlov, otlichnyh ot stan- dartnyh fajlov vvoda, vyvoda i diagnosticheskih soobshche- nij. Esli fajly vvoda/vyvoda zadany i novaya komanda ne zakryvaet ih, to nekotorye fajly naprasno ostayutsya otkrytymi. 97 APK 00210-01 33 01-4 IMYA: ctags - postroenie fajla ssylok dlya programm na Si FORMAT: ctags [-auw] fajl ... OPISANIE: Komanda ctags sozdaet tablicu ssylok (fajl s imenem tags) dlya programm na yazyke Si, zapisannyh v ukazannyh fajlah. Fajl ssylok soderzhit ukazaniya o mestonahozhde- nii opredelennyh ob'ektov (v dannom sluchae - funkcij) v gruppe fajlov. Kazhdaya stroka fajla ssylok soderzhit: imya funkcii, imya fajla (v kotorom ona opredelena), re- gulyarnoe vyrazhenie, ispol'zuemoe dlya poiska opredele- niya funkcii. |ti dannye privodyatsya v otdel'nyh polyah stroki i razdelyayutsya probelami ili simvolami tabulya- cii. V komandnoj stroke mogut ukazyvat'sya sleduyushchie klyuchi: -a Privodit k tomu, chto rezul'tat dopisyvaetsya v fajl tags; -x V etom rezhime ctags vydaet dlya kazhdoj funkcii ee imya, nomer stroki v kotoroj ona opredelena, imya fajla i soderzhimoe stroki s opredeleniem dannoj funkcii. Rezul'tat vydaetsya v standartnyj fajl vyvoda; -v Poluchenie spiska imen funkcij s ukazaniem stra- nic na kotoryh oni opredeleny (predpolagaetsya, 98 APK 00210-01 33 01-4 chto stranica soderzhit 64 stroki); -u Vyzyvaet obnovlenie priznakov dlya ukazannyh fajlov, t.e. vse ssylki na nih udalyayutsya, i k fajlu dobavlyayutsya novye znacheniya. Podrazumevaet- sya zadanie klyucha "-a"; -w Podavlyaet predupreditel'nuyu diagnostiku. Imya golovnoj programmy (main) obrabatyvaetsya osobym obrazom. Vmesto imeni funkcii sozdaetsya nekotoroe us- lovnoe imya, kotoroe formiruetsya putem dobavleniya "M" k imeni fajla i udaleniya suffiksa ".c", esli on imeetsya, a takzhe udaleniya pervyh komponentov polnogo imeni. |to pozvolyaet ispol'zovat' ctags v katalogah s bolee, chem odnoj programmoj. FAJLY: tags vyhodnoj fajl ssylok. 99 APK 00210-01 33 01-4 IMYA: date - pechat' daty. FORMAT : date OPISANIE: Vydaetsya tekushchaya data i vremya v vide ggmmddchchmm. Pole "gg" zadaet poslednie dve cifry goda, "mm" - mesyac, "dd" - den', "chch" - chas (po 24-chasovoj sisteme), vto- roe "mm" zadaet minuty. FAJLY DOPOLNITELXNYE SSYLKI: utmp 100 APK 00210-01 33 01-4 IMYA: dc - nastol'nyj kal'kulyator. FORMAT: dc [fajl] OPISANIE: Predstavlyaet soboj paket dlya vypolneniya arifmeticheskih operacij s proizvol'noj tochnost'yu. Obychno on operiruet s desyatichnymi celymi chislami, odnako mozhno zadavat' vhodnoe i vyhodnoe osnovaniya sistemy schisleniya i koli- chestvo obrabatyvaemyh drobnyh cifr. S tochki zreniya ob- shchej struktury dc predstavlyaet soboj stekovyj kal'kulya- tor (s ispol'zovaniem obratnoj pol'skoj zapisi). Esli zadan parametr, vvod osushchestvlyaetsya iz ukazannogo fajla (do teh por, poka on ne zakonchitsya), a zatem - iz standartnogo fajla vvoda. Raspoznayutsya sleduyushchie konstrukcii: chislo znachenie chisla pomeshchaetsya v stek. CHislo predstavlyaet soboj nepreryvnuyu stroku cifr 0-9. Emu mozhet predshestvovat' simvol podcherkivaniya "_", kotoryj sluzhit dlya vvoda otricatel'nyh chisel. CHisla mogut soderzhat' desyatichnuyu tochku; + - / * % ^ Dva verhnih znacheniya steka skladyvayutsya (+), vy- chitayutsya (-), umnozhayutsya (*), delyatsya (/), opre- delyaetsya ostatok (%) ili vozvodyatsya v stepen' (^). Dva etih znacheniya vytalkivayutsya iz steka; 101 APK 00210-01 33 01-4 na ih mesto v steke pomeshchaetsya rezul'tat. Drob- naya chast' v pokazatele steka ignoriruetsya; sx Vershina steka izvlekaetsya i zapominaetsya v re- gistre s imenem "x", gde v kachestve "x" mozhet ispol'zovat'sya lyuboj simvol. Esli bukva S zag- lavnaya, "x" rassmatrivaetsya kak stek, i v nego pomeshchaetsya dannoe znachenie; lx Znachenie registra "x" pomeshchaetsya v stek. Soder- zhimoe registra "x" ne izmenyaetsya. Nachal'nye zna- cheniya vseh registrov nulevye. Esli bukva L zag- lavnaya, registr "x" rassmatrivaetsya kak stek, i ego verhnee znachenie pomeshchaetsya v osnovnoj stek; d Verhnee znachenie steka udvaivaetsya; p Verhnee znachenie steka raspechatyvaetsya. Verhnee znachenie ostaetsya neizmennym. "P" rassmatrivaet vershinu steka kak stroku simvolov KOI-8, udalyaet i raspechatyvaet etu stroku; f Raspechatyvayutsya vse znacheniya, nahodyashchiesya v ste- ke i v registrah; q Proizvoditsya vyhod iz programmy. Pri vypolnenii stroki uroven' rekursii umen'shaetsya na dva. Esli bukva Q zaglavnaya, iz steka izvlekaetsya verhnee znachenie i uroven' vypolneniya stroki Izmenyaetsya na eto znachenie; 102 APK 00210-01 33 01-4 x Rassmatrivaet verhnij element steka kak stroku simvolov i vypolnyaet ee kak stroku komand dc; X Zamenyaet chislo v vershine steka na ego masshtabnyj mnozhitel'; [...] Pomeshchaet stroku simvolov KOI-8 v skobkah v ver- shinu steka; <x >x =x Verhnie dva elementa steka izvlekayutsya i sravni- vayutsya. Esli oni udovletvoryayut ukazannomu otno- sheniyu, vypolnyaetsya registr "x"; v Zamenyaet verhnij element steka ego kvadratnym kornem. Sushchestvuyushchaya drobnaya chast' parametra uchityvaetsya, inache masshtabnyj mnozhitel' ignori- ruetsya; ! Ostal'naya chast' stroki rassmatrivaetsya kak ko- manda sistemy DEMOS; c Iz steka izvlekayutsya vse znacheniya; i Verhnee znachenie steka izvlekaetsya i ispol'zuet- sya v kachestve osnovaniya chisel dlya posleduyushchego vvoda. Zaglavnoe I pomeshchaet v vershinu steka vhodnoe osnovanie; o Verhnee znachenie steka izvlekaetsya i ispol'zuet- sya v kachestve osnovaniya chisel dlya posleduyushchego vyvoda. Zaglavnoe O pomeshchaet v vershinu steka vy- 103 APK 00210-01 33 01-4 hodnoe osnovanie; k Izvlekaetsya verhnee znachenie steka, kotoroe is- pol'zuetsya v kachestve neotricatel'nogo masshtab- nogo mnozhitelya: sootvetstvuyushchee kolichestvo pozi- cij pechataetsya pri vyvode i obrabatyvaetsya pri umnozhenii, delenii i vozvedenii v stepen'. Vza- imovliyanie masshtabnogo mnozhitelya, vhodnogo osno- vaniya i vyhodnogo osnovaniya budut imet' smysl, esli vse oni izmenyayutsya odnovremenno; z Uroven' steka pomeshchaetsya v stek. Zaglavnoe Z za- menyaet chislo v vershine steka ego dlinoj; ? Iz istochnika vvoda (obychno terminal) vvoditsya i vypolnyaetsya vhodnaya stroka; ; : Ispol'zuetsya komandoj bc dlya operacij s massiva- mi. DOPOLNITELXNYE SSYLKI: bc - preprocessor dlya dc, obespechivayushchij infiksnoe predstavlenie i napominayushchij yazyk Si, sintaksis koto- rogo realizuet funkcii i udobnye struktury upravleniya dlya programm. Imeetsya otdel'noe opisanie dc. DIAGNOSTIKA: "x is unimplemented" ("x ne pomeshchaetsya"), gde x - vos'merichnoe chislo. 104 APK 00210-01 33 01-4 "stack empty" ("stek pust"), esli v steke nedostatochno elementov dlya vypolneniya trebuemyh funkcij. "out of space" ("ne hvataet mesta"), kogda ischerpan spisok svobodnogo prostranstva (slishkom mnogo cifr). "out of headers" ("ne hvataet zagolovkov"), kogda od- novremenno obrabatyvaetsya slishkom mnogo chisel. "out of pushdown" ("ischerpan stek"), esli v steke slishkom mnogo elementov. "Nesting Depth" ("glubina vlozheniya"), esli slishkom mnogo urovnej vlozhennogo vypolneniya. 105 APK 00210-01 33 01-4 IMYA: dcon - otladchik FORMAT: dcon fajl [ imya spiska ] OPISANIE: Dcon yavlyaetsya otladchikom DEMOS. Komanda pozvolyaet kak proveryat' soderzhimoe fajlov, tak i dinamicheski testi- rovat' programmu. Obychno, kogda ispol'zuetsya operand "fajl", proveryaetsya fajl ili programma (vyhodnoj for- mati proizvoditsya damp pamyati s oshibkoj ili raspechatka nuzhnogo fajla (nahodyashchegosya, naprimer na diske). "Imya spiska" - ispol'zuetsya, esli fajl soderzhit sim- vol'nuyu tablicu. Esli etot operand otsutstvuet, tabli- ca simvolov vybiraetsya iz samogo fajla, imya kotorogo ispol'zovano v komande. Esli net vozmozhnosti najti spisok imen, dcon mozhet byt' ispol'zovana, no uzhe bez vozmozhnosti raboty s simvol'nymi dannymi. Dalee privoditsya kratkoe opisanie variantov ispol'zo- vaniya komand dcon. Bol'shinstvo komand dcon vklyuchayut adresa operandov i rezhimy pechati. Adresa vyrazhenij, kotorye mogut byt' ispol'zovany, privedeny nizhe: source_name adres imeni-istochnika (source_name), opredelen- nogo v programme; ;r0...;r15 106 APK 00210-01 33 01-4 prosmotr registrov s 0 po 15; ;fr0...;fr6 prosmotr soderzhimogo registrov s plavayushchej tochkoj 0,2,4,6; local_name imya otladchika, nachinaetsya s "#"; number vos'merichnyj, desyatichnyj, shestnadcaterichnyj nomer ispol'zovaniya "S" vvodnogo formata (On, n, Oxn); . razmeshchenie naibolee "svezhih" rezul'tatov testi- rovaniya; .. razmeshchenie tekushchej komandy; $ konec fajla; expr obychnoe vyrazhenie, isklyuchayushchee ispol'zovanie "//" v kachestve razdelitelya; name=expr ob'em pamyati dlya expr; function:variable otnositsya k lokal'noj peremennoj (variable) v funkcii (function); *expr kosvennoe vyrazhenie cherez expr; 107 APK 00210-01 33 01-4 enter(name) nachalo imeni funkcii; exit(name) konec imeni funkcii; Soderzhimoe adresov, predstavlennyh v vyrazheniyah, vyvo- ditsya soglasno sleduyushchim rezhimam. Rezhim vyvoda speci- ficiruetsya dvumya parametrami: dlinoj simvolov i formoj predstavleniya. Dliny mogut byt' predstavleny v vide: -b dlya adresuemogo bajta; -h dlya adresuemogo poluslova; -w dlya adresuemogo slova; -l dlya adresuemogo dvojnogo slova; -a dlya adresa samogo vyrazheniya. Rezhimy vyvoda: -d dlya desyatichnyh dannyh; -o dlya vos'merichnyh dannyh; -x dlya shestnadcaterichnyh dannyh; -c dlya simvol'nyh dannyh; -s dlya stroki simvolov (ne ukazatelej); 108 APK 00210-01 33 01-4 -i dlya mnemoniki komandy; -ix dlya rezhimov i i x; -v dlya simvolov, znachenie kotoryh svyazano s adre- som. Mogut byt' takzhe sleduyushchie varianty: (new-line) vyvodit ".+dlina pechati"; expr1,expr2[print-option] pechataet razmeshchenie vyrazhenij ot expr1 do expr2; +expr[print-option] vyvodit ".+vyrazhenie"; -expr[print-option] vyvodit ".-vyrazhenie"; ?[print-option] vyvodit "sled" stoka; *[print-option] vyvodit '*'; ;psw[print-option] vyvodit psw; !DEMOS-command posylaet komandy DEMOS intertritatoru shell; {command_list} 109 APK 00210-01 33 01-4 spisok komand; ;if(expr)command esli vyrazhenie imeet nenulevoe znachenie, command vypolnyaetsya; ;bp expr[command_command][/*comment] tochka preryvaniya v vyrazhenii; ;macro name(arg)command opredelyaet lokal'noe imya makroopredeleniya, koto- roe, kogda ispol'zuetsya, podstavlyaet znachenie argumenta (arg); ;go [arg1 arg2...] nachinaet vypolnenie programmy, ispol'zuya ukazan- nye argumenty; ;cont [expr] prodolzhaet vypolnenie vyrazheniya (expr); ;brks vyvodit tekushchie tochki preryvaniya; ;clr [expr] rasstavlyaet tochki preryvaniya v vyrazhenii; ;quit ekvivalentno EOT (vyjti iz otladchika); ;do file vzyat' komandy iz fajla "file"; ;out [file] nachat' kosvennyj vyvod fajla "file"; 110 APK 00210-01 33 01-4 ;save [expr][/*comment] osushchestvlyaet nepreryvnoe izmenenie vyrazheniya. Esli vyrazhenie ne specificirovano, vse izmeneniya proishodyat nepreryvno. Izmeneniya, data, vremya, imya modifikacii zapisyvayutsya v fajl file.cmt. ;rst [expr] sohranyaet znachenie v expr otnositel'no ego zna- chenij na vhode komandy dcon. Esli expr ne ukaza- no, sohranyaetsya razmeshchenie izmenenij; ;copy file podobno ;save isklyuchaet sohranenie izmenyaemogo fajla v file; ;ss [n[command]] odin shag programmy, gde "n" -nomer komandy, posle kotoroj neobhodimo ostanovit' programmu. 111 APK 00210-01 33 01-4 IMYA: dd - preobrazovat' i skopirovat' fajl. FORMAT: dd [klyuch = znachenie] ... OPISANIE: Komanda dd kopiruet zadannyj vhodnoj fajl v zadannyj vyhodnoj fajl s vozmozhnymi preobrazovaniyami. Po umol- chaniyu ispol'zuyutsya standartnyj fajl vvoda i stan- dartnyj fajl vyvoda. Mozhet byt' zadan razmer bloka pri vvode i vyvode, chtoby ispol'zovat' preimushchestva pryamo- go fizicheskogo vvoda-vyvoda. Parametr znachenie if= Imya vhodnogo fajla (po umolchaniyu - standartnyj fajl vvoda). of= Imya vyhodnogo fajla (po umolchaniyu - standartnyj fajl vyvoda). ibs=n Ustanavlivaet razmer bloka pri vvode ravnym n bajt . obs=n Ustanavlivaet razmer bloka pri vyvode ravnym n bajt . bs=n Ustanavlivaet razmer bloka kak dlya vvoda, tak i 112 APK 00210-01 33 01-4 dlya vyvoda, otmenyaya ibs i obs. Osobenno effekti- ven, esli ne zadano preobrazovanie (ne trebuetsya sozdanie kopii). cbs=n Razmer bufera preobrazovaniya. skip=n Propuskaet n vhodnyh zapisej pered nachalom kopiro- vaniya. files=n Propuskaet n vhodnyh fajlov pered nachalom kopiro- vaniya. seek=n Propuskaet n zapisej ot nachala vyhodnogo fajla pered kopirovaniem. count=n Kopiruet tol'ko n vhodnyh zapisej. conv=ascii Vypolnyaet preobrazovanie iz koda DKOI v kod KOI-8. conv=ebcdic Vypolnyaet preobrazovanie iz koda KOI-8 v kod DKOI. conv=ibm Neskol'ko otlichayushcheesya preobrazovanie KOI-8 v DKOI. 113 APK 00210-01 33 01-4 conv=lcase Preobrazuet alfavitnye simvoly v nizhnij registr. conv=ucase Preobrazuet alfavitnye simvoly v verhnij registr. conv=swab Perestavlyaet kazhduyu paru bajtov. conv=noerror Ne prekrashchaet obrabotku pri obnaruzhenii oshibki chteniya. conv=sync Dopolnyaet kazhduyu vhodnuyu zapis' do razmera ibs. conv=...,... Neskol'ko preobrazovanij, razdelennyh zapyatoj. Tam, gde opredelyayutsya razmery, predpolagaetsya ukazanie chisla bajtov. CHislo mozhet okanchivat'sya simvolami "k", "b" ili "w", chto oznachaet umnozhenie na 1024,4096 ili 2 sootvetstvenno.Dlya oboznacheniya proizvedeniya para chisel mozhet razdelyat'sya simvolom "x". Parametr "cbs=n" ispol'zuetsya tol'ko togda, kogda za- dany preobrazovaniya ascii ili ebcdic. V pervom sluchae cbs simvolov pomeshchayutsya v bufer preobrazovaniya, preob- razuyutsya v kod KOI-8 i pered pomeshcheniem etoj stroki v vyhodnoj fajl zaklyuchitel'nye probely otbrasyvayutsya i dobavlyaetsya simvol novoj stroki. Vo vtorom sluchae sim- 114 APK 00210-01 33 01-4 voly KOI-8 schityvayutsya v bufer preobrazovaniya, preob- razuyutsya v kod DKOI i dopolnyayutsya probelami, chtoby po- luchit' vyhodnuyu zapis' razmerom cbs. Posle zaversheniya dd soobshchaet kolichestvo polnyh i ne- polnyh vvedennyh i vyvedennyh blokov. PRIMER: Sleduyushchaya komanda perepisyvaet lentu DKOI, kotoraya so- derzhit po desyat' 80-bajtnyh obrazov kart DKOI v bloke, v fajl s imenem x: dd if=/dev/mt580 of=h ibs=800 cbs=80 conv=ascii,lcase Obratite vnimanie na ispol'zovanie nebuferizirovannogo obmena s magnitnoj lentoj (rmt). Komanda dd osobennno podhodit dlya nebuferizirovannogo vvoda-vyvoda, tak kak pozvolyaet schityvat' i zapisyvat' zapisi proizvol'nogo razmera. DOPOLNITELXNYE SSYLKI: cp, tr DIAGNOSTIKA: "f+p records in (out)" ("f+p zapisej vvedeno (vyvede- no)"): kolichestvo polnyh i nepolnyh schitannyh (zapi- sannyh) zapisej. ZAMECHANIYA: Simvoly novoj stroki vstavlyayutsya tol'ko pri preobrazo- vanii v kod KOI-8.Dopolnenie vypolnyaetsya tol'ko pri 115 APK 00210-01 33 01-4 preobrazovanii v kod DKOI. |to sledovalo by sdelat' otdel'nymi parametrami. 116 APK 00210-01 33 01-4 IMYA: ddutok - perekodirovka iz koda "u-cod" MNOS. FORMAT: ddutok fajl ... OPISANIE : Komanda ddutok posledovatel'no perekodiruet kazhdyj "fajl" iz koda "u-cod" i zapisyvaet rezul'tat pod prezhnim imenem. Komanda rabotaet takim obrazom, chto fajly, soderzhashchie netekstovye simvoly ili ne soderzha- shchie russkih bukv ostayutsya neizmenennymi. "u-cod" - eto nestandartnaya kodirovka, otlichayushchayasya ot KOI-8 tem, chto russkie bukvy uporyadocheny po alfavitu, strochnye bukvy nachinayutsya s koda 0340, propisnye - 0300. DOPOLNITELXNYE SSYLKI: dd 117 APK 00210-01 33 01-4 IMYA demsend - perforaciya dannyh dlya sistemy DEMOS. OPISANIE demsend nazyvaetsya zagruzochnyj modul' programmy na yazyke pl/1. Rezul'tatom vypolneniya etoj programmy v srede OS ES ili PDO yavlyaetsya perforaciya fajla virtu- al'nym perfokartochnym ustrojstvom vyvoda s napravleni- em perforacii na virtual'nyj perfokartochnyj vvod VM DEMOS. CHtenie s perfokartochnogo vvoda i razmeshchenie v fajle DEMOS perforirovannyh dannyh vypolnyaet utilita vmread. Upravlyayushchie parametry programmy demsend zapi- syvayutsya v pole RARM operatora EXEC i imeyut sostav analogichnyj sostavu zagolovka utility vmread: /modes; userid; destfile. Gde modes pole upravlyayushchih klyuchej vmread; userid imya pol'zovatelya DEMOS destfile imya fajla DEMOS Sleduyushchij primer pokazyvaet operatory YAUZ OS ES dlya vypolneniya programmy demsend: //name job ... 118 APK 00210-01 33 01-4 //*route punch mode.dem //senddem exec pgm=demsend,parm='/s;petr1;blah' //steplib dd dsn=engtools.public.load,disp=shr //in dd dsn=petr1.test.blah,disp=old,dcb=(...) //out dd dcb=(recfm=fb,lrecl=80,blksize=80), // sysout=b Dlya polucheniya effekta raboty programmy demsend v srede sistemy PDO imeetsya fajl PDO nazvaniya demsend module i komandnaya procedura demsend exec, obespechivayushchie pol'- zovatel'skij interfejs s perforaciej. DOPOLNITELXNYE SSYLKI vmread, send 119 APK 00210-01 33 01-4 IMYA: deroff - udalit' konstrukcii pif, troff, tbl i eqn. FORMAT: deroff [-w] fajl ... OPISANIE: Komanda deroff poocheredno schityvaet kazhdyj fajl i uda- lyaet vse komandnye stroki pif, troff, konstrukcii s obratnoj kosoj chertoj, makroopredeleniya, konstrukcii eqn (mezhdu strokami ".eq" i ".en" ili mezhdu ogranichi- telyami), a takzhe opisaniya tablic, i zapisyvaet ostatok v standartnyj fajl vyvoda. Komanda deroff sleduet po cepochkam vklyuchennyh fajlov (komandy ".so" i ".nx").Esli fajl uzhe byl vklyuchen, ".so" ignoriruetsya, a ".nx" zavershaet vypolnenie. Esli vhodnoj fajl ne ukazan, deroff osushchestvlyaet chtenie iz standartnogo vhodnogo fajla. Esli ukazan flag "-w", vyhod predstavlyaet soboj spisok slov, po odnomu "slovu" (stroka bukv, cifr i apostro- fov, nachinayushchayasya bukvoj; apostrofy udalyayutsya) v stro- ke, vse ostal'nye simvoly ignoriruyutsya. V ostal'nyh sluchayah vyhod sootvetstvuet originalu, s uchetom isklyu- cheniya vysheupomyanutyh konstrukcij. DOPOLNITELXNYE SSYLKI: pif, eqn, tbl ZAMECHANIYA: 120 APK 00210-01 33 01-4 Komanda deroff ne yavlyaetsya polnym interpretatorom pif, vsledstvie chego utonchennye konstrukcii mogut privodit' k oshibkam. Bol'shinstvo oshibok privodyat k slishkom bol'- shomu, a ne slishkom malomu vyvodu. 121 APK 00210-01 33 01-4 IMYA: diff - sravnenie fajlov i spravochnikov. FORMAT: diff [-l] [-r] [-s] [-cefh] [-b] spr1 spr2 diff [-cefh] [-b] fajl1 fajl2 diff [-dstroka] [-b] fajl1 fajl2 OPISANIE: Esli oba parametra yavlyayutsya spravochnikami, diff sos- tovlyaet spiski imen soderzhashchihsya v nih fajlov (otsor- tirovav ih v alfavitnom poryadke) i vypolnyaet regulyar- nuyu proceduru sravneniya nad tekstovymi fajlami. Esli v spravochnikah soderzhatsya nesovpadayushchie podspravochniki ili netekstovye fajly s odinakovymi imenami, oni pros- to perechislyayutsya. Tak zhe perechislyayutsya fajly, vstrecha- yushchiesya tol'ko v odnom iz spravochnikov. Pri sravnenii spravochnikov mozhno zadavat' sleduyushchie klyuchi: -l "dlinnyj format vydachi" - kazhdyj tekstovyj fajl vyvoditsya s pomoshch'yu komandy pr.Otlichiya v fajlah drugih tipov nakaplivayutsya i vydayutsya posle so- obshchenij o vseh tekstovyh fajlah; -r komanda diff vypolnyaetsya rekursivno dlya vseh podspravochnikov s odinakovymi imenami; -s komanda soobshchaet tol'ko o sovpadayushchih fajlah; -sname sravnenie soderzhimogo spravochnikov nachinaetsya s 122 APK 00210-01 33 01-4 imeni name. Komanda diff soobshchaet, kakie stroki dolzhny byt' izme- neny v dvuh fajlah, chtoby oni sovpali. Esli vmesto "fajl1" ("fajl2") ukazan "-", ispol'zuetsya standartnyj fajl vvoda. Esli odin iz parametrov ukazyvaet na spra- vochnik, ispol'zuetsya tot fajl v etom spravochnike, ch'e imya sovpadaet s imenem fajla "fajl2" ("fajl1"). Nor- mal'nyj vyvod soderzhit stroki sleduyushchego vida: n1 a n3, n4 n1, n2 d n3 n1, n2 s n3, n4 |ti stroki sootvetstvuyut komandam ed dlya preobrazova- niya "fajla1" v "fajl2". CHisla posle bukv otnosyatsya k fajlu "fajl2". Na samom dele, menyaya "a" na "d" i pro- izvodya chtenie v obratnom poryadke, mozhno takzhe oprede- lit', kak preobrazovat' "fajl2" v "fajl1". Kak i v ed, odinakovye pary, v kotoryh n1=n2 ili n3=n4 sokrashchayutsya do odnogo chisla. Posle kazhdoj iz etih strok sleduyut vse sootvetstvuyushchie stroki pervogo fajla, otmechennye "<", a zatem vse so- otvetstvuyushchie stroki vtorogo fajla, otmechennye ">". Klyuch "-b" privodit k ignorirovaniyu zaklyuchitel'nyh pro- belov i simvolov tabulyacii, a takzhe k tomu, chto raz- lichnye posledovatel'nosti probelov schitayutsya ekviva- lentnymi. 123 APK 00210