Йофетртефбфпт лпнбодопзп същлб shell Shell - лпнбодощк същл, нпзхэйк чщрпмосфш лбл лпнбодщ, ччедеооще у фетнйобмб, фбл й лпнбодщ, итбосэйеус ч жбкме.  Обцнй DESCE DHomeE , б ъбфен  DESCE DErasePageE Ьфпф фелуф рпдзпфпчмео ОРП "ЛМПФП" Пзмбчмеойе 1. Пуопчоще рпосфйс същлб shell . . . . . . . . . . . . . . 1_1. Ччпд-чщчпд . . . . . . . . . . . . . . . . . . . . . . 1_2. Уйоитпоопе й буйоитпоопе чщрпмоеойе лпнбод . . . . . . 1_3. Лпочекет . . . . . . . . . . . . . . . . . . . . . . . 1_4. Нефбуйнчпмщ, зеоетбгйс йнео жбкмпч . . . . . . . . . . 2_ Уйофблуйу същлб shell . . . . . . . . . . . . . . . . . 2_1. Лпннеофбтйй . . . . . . . . . . . . . . . . . . . . . 2_2. Рпдуфбопчлб теъхмшфбфпч чщрпмоеойс лпнбод . . . . . . 2_3. Ретенеооще й рпдуфбопчлб йи ъобюеойк . . . . . . . . . 2_4. Урегйбмшоще ретенеооще . . . . . . . . . . . . . . . . 3_ Хртбчмсаэйе лпоуфтхлгйй . . . . . . . . . . . . . . . . 3_1. Гйлм ДМС . . . . . . . . . . . . . . . . . . . . . . . 3_2. Претбфпт чщвптб . . . . . . . . . . . . . . . . . . . 3_3. Хумпчощк претбфпт . . . . . . . . . . . . . . . . . . 3_4. Гйлм РПЛБ . . . . . . . . . . . . . . . . . . . . . . 3_5. Жхолгйй . . . . . . . . . . . . . . . . . . . . . . . 3_6. Ъбтеъетчйтпчбооще умпчб . . . . . . . . . . . . . . . 3_7. Урегйбмшоще лпнбодщ . . . . . . . . . . . . . . . . . 4_ Чщрпмоеойе shell-ртпзтбнн . . . . . . . . . . . . . . . 4_1. Ъбрхул shellб . . . . . . . . . . . . . . . . . . . . 4_2. Чщрпмоеойе . . . . . . . . . . . . . . . . . . . . . . 4_3. Плтхцеойе . . . . . . . . . . . . . . . . . . . . . . 4_4. Уйзобмщ . . . . . . . . . . . . . . . . . . . . . . . 4_5. Ъбнеюбойс . . . . . . . . . . . . . . . . . . . . . . 5_ Дпрпмойфемшоще учедеойс . . . . . . . . . . . . . . . . 5_1. Лпнбодб test . . . . . . . . . . . . . . . . . . . . . 5_2. Лпнбодб expr . . . . . . . . . . . . . . . . . . . . . 5_3. Лпнбодб ena . . . . . . . . . . . . . . . . . . . . . 1. DПуопчоще рпосфйс същлб shellE 1_1. Ччпд-чщчпд Фтй обртбчмеойс ччпдб-чщчпдб счмсафус чщдемеоощнй - уфбо- дбтфощк ччпд, уфбодбтфощк чщчпд й уфбодбтфощк ртпфплпм. Лбл ртбчймп, лпнбодщ ветхф йуипдоще дбооще йъ уфбодбтфопзп ччпдб й рпнеэбаф теъхмшфбфщ ч уфбодбтфощк чщчпд. Уфбодбтфоще ччпд, чщчпд й ртпфплпм нпцоп ретеобъобюйфш. Пвпъобюеойе < <йнс жбкмб> умхцйф дмс ретеобъобюеойс уфбодбтфопзп ччпдб (деултйрфпт жбкмб 0), > <йнс жбкмб> дмс уфбодбтфопзп чщчпдб (деултйрфпт жбкмб 1); << <уфтплб> ччпд ртпйуипдйф уп уфбодбтфопзп ччпдб, рплб ое чуфтефйфус хлб- ъбообс <уфтплб> ймй лпоег жбкмб, >> <йнс жбкмб> дмс уфбодбтфопзп чщчпдб; еумй жбкм ухэеуфчхеф, фп чщчпдйнбс йо- жптнбгйс дпвбчмсефус л лпоег ьфпзп жбкмб, <& <гйжтб> ч лбюеуфче уфбодбтфопзп ччпдб пв®счмсефус жбкм, буупгййтпчбоощк у деултйрфптпн <гйжтб>; бобмпзйюоп дмс уфбодбтфопзп чщчпдб >& <гйжтб> <&- й >&- ъблтщчбаф уппфчефуфчеооп уфбодбтфощк ччпд й чщчпд. Еумй мавпк йъ ьфйи лпоуфтхлгйк ртедыеуфчхеф гйжтб, фп у хлбъбоощн жбкмпн вхдеф буупгййтпчбо деултйрфпт, тбчощк хлбъбо- опк гйжте, чнеуфп 0 й 1 рп хнпмюбойа. Обртйнет, 2 > <йнс жбкмб> дмс уфбодбтфопзп ртпфплпмб йурпмшъхефус деултйрфпт 2, б 2 >& 1 буупгййтхеф деултйрфпт 2 у жбкмпн, буупгййтпчбоощн у деултйрфп- тпн 1. ... 2>protocol ретеобъобюбеф уфбодбтфощк ртпфплпм (деултйрфпт 2) ч жбкм рп йнеой protocol. Юфпвщ ретеобъобюйфш уфбодбтфощк ртпфплпм фхдб це, лхдб хце объ- обюео уфбодбтфощк чщчпд, умедхеф хрпфтевйфш лпоуфтхлгйа Ў... 2>&1 Чбцео рптсдпл ретеобъобюеойс: shell ртпйъчпдйф ретеобъоб- юеойе умечб обртбчп рп хлбъбоопнх урйулх. Фбл, 1 > xxx 2 >& 1 уобюбмб буупгййтхеф деултйрфпт 1 у жбкмпн xxx, б ъбфен деултйр- фпт 2 у 1, ф.е. фпце у xxx. Б 2 >& 1 1 > xxx буупгййтхеф деултйрфпт 2 у фетнйобмпн, б 1 - у жбкмпн xxx. Нпцоп ретеобъобюйфш уйуфенощк ччпд об фелхэйк жбкм: isql - - < primer Еэе ртйнет: ъбрхуфйфш ртпзтбннх prog ч буйоитпоопн тецйне, юфп- вщ ое обдп вщмп дпцйдбфшус езп ъбчетыеойс, ъбуеюш чтенс чщрпм- оеойс, теъхмшфбфщ ртпзтбннщ обртбчйфш ч жбкм prog.res, дбооще п чтенеой чщрпмоеойс - ч жбкм prog.tim. time prog > prog.res 2> prog.tim & 1_3. Лпочекет Лпочекет - рпумедпчбфемшопуфш лпнбод, тбъдемеоощи ъоблпн |. Еумй рпуме лпочекетб уфпйф ; shell цдеф езп ъбчетыеойс. Еумй & - фп ое цдеф. Тпмш ; нпцеф йзтбфш лпоег уфтплй. Унщум лпочекетб ч фпн, юфп уфбодбтфощк чщчпд пдопк лпнбодщ ъбнщлбефус об уфбо- дбтфощк ччпд дтхзпк. Ртйнет лпочекетб - рпдуюйфбфш юйумп пв®- елфощи жбкмпч ч фелхэен лбфбмпзе. ls *.o | wc -l 1_4. Нефбуйнчпмщ, зеоетбгйс йнео жбкмпч Нефбуйнчпмщ - уйнчпмщ, йнеаэйе урегйбмшопе ъобюеойе дмс йофетртефбфптб : ? * ; & ( ) | ^ < > <ртпвем> <фбвхмсгйс> <чпъчтбф_лбтефлй> Пдоблп лбцдщк йъ ьфйи уйнчпмпч нпцеф ртедуфбчмсфш убнпзп уевс, еумй ретед ойн уфпйф \. Чуе уйнчпмщ, ъблмаюеооще нецдх лбчщюлб- нй ' й ', ртедуфбчмсаф убнйи уевс. Нецдх дчпкощнй лбчщюлбнй (") чщрпмосафус рпдуфбопчлй лпнбод (ун р. 2.2) й рбтбнефтпч (ун. р. 2.3), б уйнчпмщ \, `," й $ нпзхф ьлтбойтпчбфшус ртедыеуфчхаэйн уйнчпмпн \. Рпуме чуеи рпдуфбопчпл ч лбцдпн умпче лпнбодщ йэхфус уйн- чпмщ *,?, й [. Еумй обипдйфус ипфс вщ пдйо йъ ойи, фп ьфп умпчп тбуунбфтйчбефус лбл ыбвмпо йнео жбкмпч й ъбнеосефус йнеобнй жбкмпч, хдпчмефчптсаэйи дбоопнх ыбвмпох (ч бмжбчйфопн рптсдле). Еумй ой пдоп йнс жбкмб ое хдпчмефчптсеф ыбвмпох, фп по пуфбефус оейънеоощн. Ъобюеойс хлбъбоощи уйнчпмпч: * мавбс уфтплб, члмаюбс й рхуфха ? пдйо мавпк уйнчпм [...] мавпк йъ хлбъбоощи нецдх ойнй уйнчпмпч. Рбтб уйнчпмпч, тбъдемеоощи ъоблпн -, пъобюбеф мавпк уйнчпм, лпфптщк обипдйфус нецдх ойнй, члмаюбс й йи убнйи. Еумй ретчщн уйнчпмпн рпуме "[" йдеф "!", фп хлбъбооще уйнчпмщ ое дпмцощ чипдйфш ч йнс жбкмб 2_ DУйофблуйу същлб shellE 2_1. Лпннеофбтйй Уфтплй, обюйобаэйеус у #, фтблфхафус лбл лпннеофбтйй. 2_2. Рпдуфбопчлб теъхмшфбфпч чщрпмоеойс лпнбод Чщтбцеойс нпцоп ъблмаюбфш ч пвтбфоще лбчщюлй (`). Фблйе чщтбцеойс чщюйумсафус ч неуфе йурпмшъпчбойс. Пой нпзхф вщфш, обртйнет, юбуфша уфтпл. Ртйнет. Рхуфш рбтбнефтпн нблтплпнбодщ счмсефус йнс жбкмб у тбуыйтеойен .for. Фтевхефус хдбмйфш пдопй- неоощк жбкм у тбуыйтеойен .err. name=`ena -n $1` rm -f ${name}.err Ъобюеойе, рпмхюеоопе ч теъхмшфбфе чщрпмоеойс лпнбодщ ena -n $1 ртйучбйчбефус ретенеоопк name. Жйзхтоще улпвлй йурпмшъпчбощ дмс чщдемеойс бтзхнеофб претбгйй ретеипдб пф йнеой л ъобюеойа. Веъ ойи .err ртйлмеймбуш вщ л йнеой. 2_3. Ретенеооще й рпдуфбопчлб йи ъобюеойк Чуе ретенеооще ч същле shell - фелуфпчще. Йи йнеоб дпмцощ обюйобфшус у вхлчщ й упуфпсфш йъ мбфйоулйи вхлч, гйжт й ъоблб рпдюетлйчбойс (_). Юфпвщ чпурпмшъпчбфус ъобюеойен ретенеоопк, обдп ретед оек рпуфбчйфш уйнчпм $. Йурпмшъпчбойе ъобюеойс рете- неоопк объщчбефус рпдуфбопчлпк. Тбъмйюбефус дчб лмбууб ретенеоощи: рпъйгйпооще й у йнеоен. Рпъйгйпооще ретенеооще - ьфп бтзхнеофщ лпнбодощи жбкмпч, йи йнеобнй умхцбф гйжтщ: $0 - йнс лпнбодщ, $1 - ретчщк бтзхнеоф й ф.д. Ъобюеойс рпъйгйпоощн ретенеоощн нпзхф вщфш ртйучпеощ й лп- нбодпк set (ун. Урегйбмшоще лпнбодщ). Ртйнет. Рпуме чщъпчб ртпзтбннщ об shellе, итбосэекус ч жбкме ficofl: ficofl -d / \*.for ъобюеойен $0 вхдеф ficofl, $1 - -d, $2 - /, $3 - *.for, ъобюе- ойс пуфбмшощи рпъйгйпоощи ретенеоощи вхдхф рхуфщнй уфтплбнй. Ъбнефйн, юфп еумй вщ уйнчпм * ртй чщъпче ficofl ое вщм ьлтбой- тпчбо, ч лбюеуфче бтзхнеофпч ретедбмйуш вщ йнеоб чуеи жптфтбо- ощи жбкмпч фелхэек дйтелфптйй. Еэе дче ретенеооще итбосф лпнбодоха уфтплх ъб йулмаюеойен йнеой лпнбодщ: $@ ьлчйчбмеофоп $1 $2 ..., б $* - "$1 $2 ...". Обюбмшоще ъобюеойс ретенеоощн у йнеоен нпзхф вщфш хуфбопч- меощ умедхаэйн пвтбъпн: <йнс>=<ъобюеойе> [ <йнс>=<ъобюеойе> ] ... Ое нпцеф вщфш пдопчтенеооп жхолгйй (ун. Хртбчмсаэйе лпоуфтхл- гйй) й ретенеоопк у пдйоблпчщнй йнеобнй. Дмс рпдуфбопчлй ъобюеойк ретенеоощи чпънпцощ фблце умедха- эйе лпоуфтхлгйй: ${<ретенеообс>} еумй ъобюеойе <ретенеоопк> пртедемеоп, фп поп рпдуфбчмсефус. Улпвлй ртйнеосафус мйыш еумй ъб <ретенеоопк> умедхеф уйнчпм, лпфптщк веъ улпвпл ртйлмейфус л йнеой. ${<ретенеообс>:-<умпчп>} еумй <ретенеообс> пртедемеоб й ое счмсефус рхуфпк уфтплпк, фп рпдуфбчмсефус ее ъобюеойе; йобюе рпдуфбчмсефус <умпчп>. ${<ретенеообс>:=<умпчп>} еумй <ретенеообс> ое пртедемеоб ймй счмсефус рхуфпк уфтплпк, ек ртйучбйчбефус ъобюеойе <умпчп>; рпуме ьфпзп рпдуфбчмсефус ее ъобюеойе. ${<ретенеообс>:?<умпчп>} еумй <ретенеообс> пртедемеоб й ое счмсефус рхуфпк уфтплпк, фп рпдуфбчмсефус ее ъобюеойе; йобюе об уфбодбтфощк чщчпд чщчпдйфус <умпчп> й чщрпмоеойе shellб ъбчетыбефус. Еумй <умпчп> прхэеоп, фп чщдбефус уппвэеойе "parameter null or not set". ${<ретенеообс>:+<умпчп>} еумй <ретенеообс> пртедемеоб й ое счмсефус рхуфпк уфтплпк, фп рпдуфбчмсефус <умпчп>; йобюе рпдуфбчмсефус рхуфбс уфтплб. Ртйнет: еумй ретенеообс d ое пртедемеоб ймй счмсефус рху- фпк уфтплпк, фп чщрпмосефус лпнбодб pwd echo ${d:-`pwd`} Умедхаэйе ретенеооще бчфпнбфйюеулй хуфбобчмйчбафус shellпн: # лпмйюеуфчп рпъйгйпоощи рбтбнефтпч (деусфйюопе) - жмбзй, хлбъбооще ртй ъбрхуле shellб ймй лпнбо- дпк set ? деусфйюопе ъобюеойе, чпъчтбэеоопе ртедщдхэек уйоитпооп чщрпмоеоопк лпнбодпк $ опнет фелхэезп ртпгеууб ! опнет рпумедоезп буйоитпоопзп ртпгеууб @ ьлчйчбмеофоп $1 $2 $3 ... * ьлчйчбмеофоп "$1 $2 $3 ..." Обрпнойн: юфпвщ рпмхюйфш ъобюеойс ьфйи ретенеоощи, ретед ойнй охцоп рпуфбчйфш ъобл $. Ртйнет: чщдбфш опнет фелхэезп ртпгеууб: echo $$ 2_4. Урегйбмшоще ретенеооще Shellпн йурпмшъхафус умедхаэйе урегйбмшоще ретенеооще: HOME дйтелфптйс, ч лпфптха рпмшъпчбфемш рпрбдбеф ртй чипде ч уйуфенх ймй ртй чщрпмоеойй лпнбодщ cd веъ бтзхнеофпч PATH урйупл рпмощи йнео лбфбмпзпч, ч лпфптщи йэефус жбкм ртй хлбъбойй езп оерпмопзп йнеой. PS1 пуопчобс уфтплб ртйзмбыеойс (рп хнпмюбойа $) PS2 дпрпмойфемшобс уфтплб ртйзмбыеойс (рп хнпмюбойа >); ч йофетблфйчопн тецйне ретед ччпдпн лпнбодщ shellпн чщчпдйфус пуопчобс уфтплб ртйзмбыеойс. Еумй обцбфб лмбчйыб new_line, оп дмс ъбчетыеойс лпнбодщ фтевхефус дбмшоекыйк ччпд, фп чщчпдйфус дпрпмойфемшобс уфтплб ртйзмбыеойс IFS рпумедпчбфемшопуфш уйнчпмпч, счмсаэйиус тбъде- мйфемснй ч лпнбодопк уфтпле (рп хнпмюбойа ьфп <ртпвем>, <фбвхмсгйс> й <чпъчтбф_лбтефлй>) 3_ DХртбчмсаэйе лпоуфтхлгййE Ртпуфбс лпнбодб - ьфп рпумедпчбфемшопуфш умпч, тбъдемеообс ртпвембнй. Ретчпе умпчп счмсефус йнеоен лпнбодщ, лпфптбс вхдеф чщрпмосфшус, б пуфбмшоще вхдхф ретедбощ ек лбл бтзхнеофщ. Йнс лпнбодщ ретедбефус ек лбл бтзхнеоф опнет 0 (ф.е. йнс лпнбодщ счмсефус ъобюеойен $0). Ъобюеойе, чпъчтбэбенпе ртпуфпк лпнбодпк - ьфп ее уфбфху ъбчетыеойс, еумй поб ъбчетыймбуш оптнбмшоп, ймй (чпушнетйюопе) 200+уфбфху, еумй поб ъбчетыймбуш бчбтйкоп. Урйупл - ьфп рпумедпчбфемшопуфш пдопзп ймй оеулпмшлйи лпо- чекетпч, тбъдемеоощи уйнчпмбнй ;, &, && ймй || й вщфш нпцеф ъб- лбоюйчбаэбсус уйнчпмпн ; ймй &. Йъ юефщтеи хлбъбоощи претбгйк ; й & йнеаф тбчоще ртйптйфефщ, неошыйе, юен х && й ||. Ртйптйфефщ рпумедойи фблце тбчощ нецдх упвпк. Уйнчпм ; пъобюбеф, юфп лпо- чекетщ вхдхф чщрпмосфшус рпумедпчбфемшоп, б & - рбтбммемшоп. Претбгйс && (||) пъобюбеф, юфп урйупл, умедхаэйк ъб оек вхдеф чщрпмосфшус мйыш ч фпн умхюбе, еумй лпд ъбчетыеойс ртедщдхэезп лпочекетб охмечпк (оеохмечпк). Лпнбодб - ьфп мйвп ртпуфбс лпнбодб, мйвп пдоб йъ хртбчмса- эйи лпоуфтхлгйк. Лпдпн ъбчетыеойс лпнбодщ счмсефус лпд ъбчетые- ойс ее рпумедоек ртпуфпк лпнбодщ. 3_1. Гйлм ДМС for <ретенеообс> [ in <обвпт> ] do <урйупл> done Еумй юбуфш in <обвпт> прхэеоб, фп ьфп пъобюбеф in "$@" ( фп еуфш in $1 $2 ... $n). Ртйнет. Чщчеуфй об ьлтбо чуе жптфтбооще жбкмщ фелхэек вйвмйпфелй: for f in *.for do cat $f done 3_2. Претбфпт чщвптб case $<ретенеообс> in <ыбвмпо> | <ыбвмпо>... ) <урйупл> ;; . . . esac Претбфпт чщвптб чщрпмосеф <урйупл>, уппфчефуфчхаэйк ретчпнх <ыбвмпох>, лпфптпнх хдпчмефчптсеф <ретенеообс>. Жптнб ыбвмпоб фб це, юфп й йурпмшъхенбс дмс зеоетбгйй йнео жбкмпч. Юбуфш | ыбвмпо... нпцеф пфухфуфчпчбфш. Ртйнет. Пртедемйфш жмбзй й пфлпнрймйтпчбфш чуе хлбъбооще жбкмщ. # йойгйбмйъйтпчбфш жмбз flag= # рпчфптсфш дмс лбцдпзп бтзхнеофб for a do case $a in # пв®едйойфш жмбзй, тбъдемйч йи ртпвембнй -[ocSO]) flag=$flag' ' $a ;; -*) echo 'unknown flag $a' ;; # лпнрймйтпчбфш лбцдщк йуипдощк жбкм й увтпуйфш жмбзй *.c) cc $flag $a; flag= ;; *.s) as $flag $a; flag= ;; *.f) f77 $flag $a; flag= ;; # оечетощк бтзхнеоф *) echo 'unexpected argument $a' ;; esac done 3_3. Хумпчощк претбфпт. if <урйупл1> then <урйупл2> [ elif <урйупл3> then <урйупл4> ] . . . [ else <урйупл5> ] fi Чщрпмосефус <урйупл1> й, еумй лпд езп ъбчетыеойс 0, фп чщрпмос- ефус <урйупл2>, йобюе - <урйупл3> й, еумй й езп лпд ъбчетыеойс 0, фп чщрпмосефус <урйупл4>. Еумй це ьфп ое фбл, фп чщрпмосефус <урйупл5>. Юбуфй elif й else нпзхф пфухфуфчпчбфш. 3_4. Гйлм РПЛБ while <урйупл1> do <урйупл2> done Дп феи рпт, рплб лпд ъбчетыеойс рпумедоек лпнбодщ <урйулб1> еуфш 0, чщрпмосафус лпнбодщ <урйулб2>. Ртй ъбнеое умхцевопзп умпчб while об until хумпчйе чщипдб йъ гйлмб неосефус об ртпфйчпрпмпцопе. Ч лбюеуфче пдопк йъ лпнбод <урйулб1> нпцеф вщфш лпнбодб true (false). Рп ьфпк лпнбоде ое чщрпмосефус ойлблйи декуфчйк, б лпд ъбчетыеойс хуфбобчмйчбефус 0 (-1). Ьфй лпнбодщ ртйнеосаф- ус дмс птзбойъбгйй веулпоеюощи гйлмпч. Чщипд йъ фблпзп гйлмб нпцоп пухэеуфчйфш мйыш рп лпнбоде break (ун. Урегйбмшоще лпнбо- дщ). 3_5. Жхолгйй <йнс> () { <урйупл>; } Пртедемсефус жхолгйс у йнеоен <йнс>. Фемп жхолгйй - <урйупл>, ъблмаюеоощк нецдх { й }. 3_6. Ъбтеъетчйтпчбооще умпчб Умедхаэйе умпчб счмсафус ъбтеъетчйтпчбоощнй: if then else elif fi case in esac for while until do done { } 3_7. Урегйбмшоще лпнбодщ Лбл ртбчймп, дмс чщрпмоеойс лбцдпк лпнбодщ shell рптпцдбеф пфдемшощк ртпгеуу. Урегйбмшоще лпнбодщ пфмйюбафус фен, юфп пой чуфтпеощ ч shell й чщрпмосафус ч тбнлби фелхэезп ртпгеууб. : Рхуфбс лпнбодб. Чпъчтбэбеф охмечпк лпд ъбчетые- ойс. . file Shell юйфбеф й чщрпмосеф лпнбодщ йъ жбкмб file, ъбфен ъбчетыбефус; ртй рпйуле file йурпмшъхефус урйупл рпйулб $PATH. break [n] Чщипд йъ чохфтеооезп for ймй while гйлмб; еумй хлбъбоп n, фп чщипд йъ n чохфтеоойи гйлмпч. continue [n] Ретекфй л умедхаэек йфетбгйй чохфтеооезп for ймй while гйлмб; еумй хлбъбоп n, фп ретеипд л умедхаэек йфетбгйй n-пзп гйлмб. cd [ <бтзхнеоф> ] Унеойфш фелхэха дйтелфптйа об дйтелфптйа <бтзх- неоф>. Рп хнпмюбойа йурпмшъхефус ъобюеойе HOME. echo [ <бтз> ... ] Чщчпдйф учпй бтзхнеофщ ч уфбодбтфощк чщчпд, тбъдемсс йи ртпвембнй. eval [ <бтз> ... ] Бтзхнеофщ юйфбафус, лбл еумй вщ пой рпуфхрбмй йъ уфбодбтфопзп ччпдб й тбуунбфтйчбафус лбл лп- нбодщ, лпфптще фхф це й чщрпмосафус. exec [ <бтз> ... ] Бтзхнеофщ тбуунбфтйчбафус лбл лпнбодщ shellб й фхф це чщрпмосафус, оп ртй ьфпн ое упъдбефус опчпзп ртпгеууб. Ч лбюеуфче бтзхнеофпч нпзхф вщфш хлбъбощ обртбчмеойс ччпдб-чщчпдб й, еумй оеф ойлблйи дтхзйи бтзхнеофпч, фп вхдеф йънеое- оп мйыш обртбчмеойе ччпдб-чщчпдб фелхэек ртпз- тбннщ. exit [ n ] Ъбчетыеойе чщрпмоеойс shellб у лпдпн ъбчетыеойс n. Еумй n прхэеоп, фп лпдпн ъбчетыеойс вхдеф лпд ъбчетыеойс рпумедоек чщрпмоеоопк лпнбодщ (лпоег жбкмб фблце ртйчпдйф л ъбчетыеойа чщрпм- оеойс). export [ <ретенеообс> ... ] Дбооще ретенеооще пфнеюбафус дмс бчфпнбфйюеулп- зп ьлурптфб ч плтхцеойе (ун. Плтхцеойе) чщрпм- осенщи лпнбод. Еумй бтзхнеофщ ое хлбъбощ, фп чщчпдйфус урйупл чуеи ьлурптфйтхенщи ретенео- ощи. Йнеоб жхолгйк ое нпзхф ьлурптфйтпчбфшус. hash [ -r ] [ <лпнбодб> ... ] Дмс лбцдпк йъ хлбъбоощи лпнбод пртедемсефус й ъбрпнйобефус рхфш рпйулб. Пргйс -r хдбмсеф чуе ъбрпноеооще дбооще. Еумй ое хлбъбо ой пдйо бтзхнеоф, фп чщчпдйфус йожптнбгйс п ъбрпноеоощи лпнбодби: hits - лпмйюеуфчп пвтбэеойк shellб л дбоопк лпнбоде; cost - пв®ен тбвпфщ дмс пвобтх- цеойс лпнбодщ ч урйуле рпйулб; command - рпмопе йнс лпнбодщ. Ч оелпфптщи уйфхбгйси ртпйуипдйф ретечщюйумеойе ъбрпноеоощи дбоощи, юфп пфнеюб- ефус ъобюлпн * ч рпме hits. pwd Чщчпдйф йнс фелхэек дйтелфптйй. read [ <ретенеообс> ... ] Юйфбефус йъ уфбодбтфопзп ччпдб пдоб уфтплб; ретчпе ее умпчп ртйучбйчбефус ретчпк ретенео- опк, чфптпе - чфптпк й ф.д., ртйюен чуе пуфбч- ыйеус умпчб ртйучбйчбафус рпумедоек ретенео- опк. readonly [ <ретенеообс> ... ] Ъбртеэбефус йънеоеойе ъобюеойк хлбъбоощи рете- неоощи. Еумй бтзхнеоф ое хлбъбо , фп чщчпдйфус йожптнбгйс пвп чуеи ретенеоощи фйрб readonly. return [ n ] Чщипд йъ жхолгйй у лпдпн ъбчетыеойс n. Еумй n прхэеоп, фп лпдпн ъбчетыеойс вхдеф лпд ъбчетые- ойс рпумедоек чщрпмоеоопк лпнбодщ. set [ --aefkntuvx [ <бтз> ... ] ] Лпнбодб хуфбобчмйчбеф умедхаэйе тецйнщ: -a пфнефйфш ретенеооще, лпфптще вщмй йънеоеощ ймй упъдбощ, лбл ретенеооще плтхцеойс (ун. Плтхце- ойе) -e еумй лпд ъбчетыеойс лпнбодщ оеохмечпк, фп ое- недмеооп ъбчетыйфш чщрпмоеойе shellб -f ъбртефйфш зеоетбгйа йнео жбкмпч -k чуе ретенеооще у йнеоен рпнеэбафус ч плтхцеойе лпнбодщ, б ое фпмшлп фе, юфп ртедыеуфчхаф йнеой лпнбодщ (ун. Плтхцеойе) -n юйфбфш лпнбодщ, оп ое чщрпмосфш йи -t ъбчетыеойе shellб рпуме ччпдб й чщрпмоеойс пд- опк лпнбодщ -u ртй рпдуфбопчле тбуунбфтйчбфш оехуфбопчмеооще ретенеооще лбл пыйвлй -v чщчеуфй ччпдйнще уфтплй утбъх рпуме йи ччпдб -x чщчеуфй лпнбодщ й йи бтзхнеофщ ретед йи чщрпм- оеойен -- ое йънеосеф жмбзй, рпмеъео дмс ртйучбйчбойс рп- ъйгйпоощн ретенеоощн опчщи ъобюеойк. Ртй хлбъбойй + чнеуфп - лбцдщк йъ жмбзпч хуфб- обчмйчбеф ртпфйчпрпмпцощк тецйн. Обвпт фелхэйи жмбзпч еуфш ъобюеойе ретенеоопк $-. <бтз> - ьфп ъобюеойс, лпфптще вхдхф ртйучпеощ рпъйгйпоощн ретенеоощн $1, $2 й ф.д. Еумй чуе бтзхнеофщ прхэеощ, чщчпдсфус ъобюеойс чуеи ретенеоощи. shift [ n ] Рпъйгйпооще ретенеооще, обюйобс у $(n+1), рете- йнеопчщчбафус ч $1 й ф.д. Рп хнпмюбойа n=1. test чщюйумсеф хумпчоще чщтбцеойс (ун. Дпрпмойфемш- още учедеойс. Test ) trap [ <бтз> ] [ n ] ... Лпнбодб <бтз> вхдеф чщрпмоеоб, лпздб shell рп- мхюйф уйзобм n (ун. Уйзобмщ). (Обдп ъбнефйфш, юфп <бтз> ртпчетсефус ртй хуфбопчле ртетщчбойс й ртй рпмхюеойй уйзобмб). Лпнбодщ чщрпмосафус рп рптсдлх опнетпч уйзобмпч. Мавбс рпрщфлб ху- фбопчйфш уйзобм, йзоптйтхенщк дбоощн ртпгеуупн, ое пвтбвбфщчбефус. Рпрщфлб ртетщчбойс рп уйзоб- мх 11 (segmentation violation) ртйчпдйф л пыйв- ле. Еумй <бтз> прхэео, фп чуе ртетщчбойс хуфб- обчмйчбафус ч йи обюбмшоще ъобюеойс. Еумй <бтз> еуфш рхуфбс уфтплб, фп ьфпф уйзобм йзоптйтхефус shellпн й чщъщчбенщнй йн ртпзтбннбнй. Еумй n=0, фп <бтз> чщрпмосефус ртй чщипде йъ shellб. Trap веъ бтзхнеофпч чщчпдйф урйупл лпнбод, учсъбоощи у лбцдщн уйзобмпн. type [ <йнс> ... ] Дмс лбцдпзп йнеой рплбъщчбеф, лбл поп вхдеф йо- фетртефйтпчбфшус ртй йурпмшъпчбойй ч лбюеуфче йнеой лпнбодщ: лбл чохфтеоосс лпнбодб shellб, лбл йнс жбкмб ймй це фблпзп жбкмб оеф чппвэе. ulimit [ -f ] [ n ] Хуфбобчмйчбеф тбънет жбкмб ч n вмплпч; -f - ху- фбобчмйчбеф тбънет жбкмб, лпфптщк нпцеф вщфш ъбрйубо ртпгеуупн-рпфпнлпн (юйфбфш нпцоп мавще жбкмщ). Веъ бтзхнеофпч - чщчпдйф фелхэйк тбъ- нет. umask [ nnn ] Рпмшъпчбфемшулбс нбулб упъдбойс жбкмпч йънеос- ефус об nnn. Еумй nnn прхэеоп, фп чщчпдйфус фе- лхэее ъобюеойе нбулй. Ртйнет: рпуме лпнбодщ umask 755 вхдхф упъдбчбфшус жбкмщ, лпфптще чмбдемег унп- цеф юйфбфш, рйубфш й чщрпмосфш, б чуе пуфбмшоще - фпмшлп юйфбфш й чщрпмосфш. unset [ <йнс> ... ] Дмс лбцдпзп йнеой хдбмсеф уппфчефуфчхаэха рете- неооха ймй жхолгйа. Ретенеооще PATH, PS1, PS2 й IFS ое нпзхф вщфш хдбмеощ. wait [ n ] Цдеф ъбчетыеойс хлбъбоопзп ртпгеууб й чщчпдйф лпд езп ъбчетыеойс. Еумй n ое хлбъбоп, фп пцй- дбефус ъбчетыеойс чуеи блфйчощи ртпгеуупч-рп- фпнлпч й чпъчтбэбефус лпд ъбчетыеойс 0. 4_ DЧщрпмоеойе shell-ртпзтбннE 4_1. Ъбрхул shellб Ртпзтбннб, йофетртефйтхаэбс shell-ртпзтбннщ, обипдйфус ч жбкме /bin/sh. Ртй ъбрхуле ее ретчщк бтзхнеоф счмсефус йнеоен shell-ртпзтбннщ, пуфбмшоще ретедбафус лбл рпъйгйпобмшоще рбтб- нефтщ. Еумй жбкм, упдетцбэйк shell-ртпзтбннх, йнееф ртбчп чщ- рпмоеойс (x), фп дпуфбфпюоп хлбъбойс мйыш езп йнеой. Обртйнет, умедхаэйе дче лпнбодщ претбгйпоопк уйуфенщ ьлчйчбмеофощ (еумй жбкм ficofl пвмбдбеф хлбъбоощн ртбчпн й об убнпн деме упдетцйф shell-ртпзтбннх): sh ficofl -d . g\* й ficofl -d . g\* 4_2. Чщрпмоеойе Ртй чщрпмоеойй shell-ртпзтбнн чщрпмосафус чуе рпдуфбопчлй. Еумй йнс лпнбодщ упчрбдбеф у йнеоен урегйбмшопк лпнбодщ, фп поб чщрпмобефус ч тбнлби фелхэезп ртпгеууб. Фбл це чщрпмосафус й пртедемеооще рпмшъпчбфемен жхолгйй. Еумй йнс лпнбодщ ое упчрб- дбеф ой у йнеоен урегйбмшопк лпнбодщ, ой у йнеоен жхолгйй, фп рптпцдбефус опчщк ртпгеуу й пухэеуфчмсефус рпрщфлб чщрпмойфш хлбъбооха лпнбодх. Ретенеообс PATH пртедемсеф рхфш рпйулб дйтелфптйй, упдет- цбэек дбооха лпнбодх. Рп хнпмюбойа ьфп ::/bin:/usr/ bin:/util:/dss/rk Дйтелфптйй рпйулб тбъдемсафус дчпефпюйснй; :: пъобюбеф фелхэха дйтелфптйа. Еумй йнс лпнбодщ упдетцйф уйнчпм /, ъобюеойе $PATH ое йурпмшъхефус: йнеоб, обюйобаэйеус у / йэхфус пф лптос, пу- фбмшоще - пф фелхэек дйтелфптйй. Рпмпцеойе обкдеоопк лпнбодщ ъбрпнйобефус shellпн й нпцеф вщфш пртпыеоп лпнбодпк hash. 4_3. Плтхцеойе Плтхцеойе - ьфп обвпт рбт йнс-ъобюеойе, лпфптще ретедбафус чщрпмосенпк ртпзтбнне. Shell чъбйнпдекуфчхеф у плтхцеойен оеу- лпмшлйнй урпупвбнй. Ртй ъбрхуле shell упъдбеф ретенеооха дмс лбцдпк хлбъбоопк рбтщ, ртйдбчбс ек уппфчефуфчхаэее ъобюеойе. Еумй чщ йънеойфе ъобюбойе лблпк-мйвп йъ ьфйи ретенеоощи ймй упъдбдйфе опчха ретенеооха, фп ьфп ое плбцеф ойлблпзп чмйсойс об плтхцеойе, еумй ое вхдеф йурпмшъпчбоб лпнбодб export дмс учсъй ретенеоопк shellб у плтхцеойен (ун. фблце set -a). Рете- неообс нпцеф вщфш хдбмеоб йъ плтхцеойс лпнбодпк unset (ун.). Фблйн пвтбъпн, плтхцеойе лбцдпк йъ чщрпмосенщи shellпн лпнбод жптнйтхефус йъ чуеи оейънеоеоощи рбт йнс-ъобюеойе, ретчпобюбмш- оп рпмхюеоощи shellпн, нйоху рбтщ, хдбмеооще лпнбодпк unset, рмау чуе нпдйжйгйтпчбооще й йънеоеооще рбтщ, лпфптще дмс ьфпзп дпмцощ вщфш хлбъбощ ч лпнбоде export. Плтхцеойе ртпуфщи лпнбод нпцеф вщфш ужптнйтпчбоп хлбъбойен ретед оек пдопзп ймй оеулпмшлйи ртйучбйчбойк ретенеоощн. Фбл, TERM=d460 <лпнбодб> й (export TERM; TERM=d460; <лпнбодб>) ьлчйчбмеофощ. Ретенеооще, хюбуфчхаэйе ч фблйи ртйучбйчбойси, объпчен лмаюечщнй рбтбнефтбнй. Еумй хуфбопчмео жмбз -k (ун. set), фп чуе лмаюечще рбтб- нефтщ рпнеэбафус ч плтхцеойе лпнбодщ, дбце еумй пой ъбрйубощ рпуме лпнбодщ. 4_4. Уйзобмщ UNIXпн рпддетцйчбафус умедхаэйе уйзобмщ: SIGHUP - 1 - пфнеойфш (hangup) SIGINT - 2 - ртетщчбойе (interrupt) SIGQUIT - 3 - оеуфбодбтфощк чщипд (quit) SIGILL - 4 - оечетобс лпнбодб (illegal instruction) SIGTRAP - 5 - мпчхылб (trace trap) SIGFPE - 8 - йулмаюйфемшобс уйфхбгйс ртй чщрпмоеойй претбгйк у рмбчбаэек ъбрсфпк (floating-point exception) SIGKILL - 9 - хойюфпцеойе ртпгеууб (kill) SIGBUS - 10 - пыйвлб ыйощ (bus error) SIGSEGV - 11 - обтхыеойе уезнеофбгйй (segmentation violation) SIGSYS - 12 - оечетощк уйуфенощк чщъпч (bad argument to sys- tem call) SIGPIPE - 13 - ъбрйуш ч лбобм веъ юфеойс йъ оезп (write on a pipe with no one to read it) SIGALRM - 14 - вхдймшойл (alarm clock) SIGTERM - 15 - ртпзтбннопе ъбчетыеойе ртпгеууб (software ter- mination signal) Уйзобмщ SIGINT й SIGQUIT йзоптйтхафус, еумй лпнбодб вщмб ъбрхэеоб буйоитпооп. Йобюе уйзобмщ пвтбвбфщчбафус фбл це, лбл ч ртпгеууе-ртедле, ъб йулмаюеойен уйзобмб SIGSEGV (ун. фблце Уре- гйбмшоще лпнбодщ. Trap). 4_5. Ъбнеюбойс Ртй чщрпмоеоойй лпнбод ъбрпнйобефус йи неуфпобипцдеойе. Рпьфпнх ртй упъдбойй лпнбодщ у фен це йнеоен, оп обипдсэекус ч дтхзпк дйтелфптйй, чуе тбчоп вхдеф чщрпмосфшус уфбтбс лпнбодб (еумй чщъпч ртпйуипдйф рп лптпфлпнх йнеой). Дмс йуртбчмеойс уй- фхбгйй чпурпмшъхкфеуш лпнбодпк hash у лмаюпн -r (ун. Урегйбмш- още лпнбодщ). Еумй чщ ретейнеопчбмй фелхэха ймй чщыемецбэха дйтелфптйа, фп лпнбодб pwd нпцеф дбчбфш оечетоха йожптнбгйа. Дмс йуртбчме- ойс уйфхбгйй чпурпмшъхкфеуш лпнбодпк cd у рпмощн йнеоен дйтел- фптйй. 5_ DДпрпмойфемшоще учедеойсE 5_1. Лпнбодб test Лпнбодб test ртйнеосефус дмс ртпчетлй хумпчйс. Жптнбф чщ- ъпчб: test <чщтбцеойе> ймй [ <чщтбцеойе> ] Лпнбодб test чщюйумсеф <чщтбцеойе> й, еумй езп ъобюеойе - йуфй- об, чпъчтбэбеф лпд ъбчетыеойс 0 (true); йобюе - оеохмечпе ъоб- юеойе (false). Оеохмечпк лпд ъбчетыеойс чпъчтбэбефус й еумй прхэеощ бтзхнеофщ. <Чщтбцеойе> нпцеф упуфпсфш йъ умедхаэйи ртй- нйфйчпч: -r жбкм - йуфйоб, еумй жбкм ухэеуфчхеф й дпуфхрео дмс юфеойс -w жбкм - йуфйоб, еумй жбкм ухэеуфчхеф й дпуфхрео дмс ъбрйуй -x жбкм - йуфйоб, еумй жбкм ухэеуфчхеф й счмсефус чщ- рпмосенщн -f жбкм - йуфйоб, еумй жбкм ухэеуфчхеф й счмсефус пвщю- ощн жбкмпн -d жбкм - йуфйоб, еумй жбкм ухэеуфчхеф й счмсефус дй- телфптйек -c жбкм - йуфйоб, еумй жбкм ухэеуфчхеф й счмсефус уре- гйбмшощн уйнчпмшоп-птйеофйтпчбоощн жбкмпн -b жбкм - йуфйоб, еумй жбкм ухэеуфчхеф й счмсефус уре- гйбмшощн вмпл-птйеофйтпчбоощн жбкмпн -p жбкм - йуфйоб, еумй жбкм ухэеуфчхеф й счмсефус йне- опчбоощн лбобмпн (pipe) -s жбкм - йуфйоб, еумй жбкм ухэеуфчхеф й йнееф оеохме- чха дмйох -t [ деултйрфпт жбкмб ] - йуфйоб, еумй пфлтщфщк жбкм у хлбъбоощн деул- тйрфптпн (рп хнпмюбойа 1) ухэеуфчхеф й буупгйй- тпчбо у фетнйобмпн -z s1 - йуфйоб, еумй дмйоб уфтплй s1 охмечбс -n s1 - йуфйоб, еумй дмйоб уфтплй s1 оеохмечбс s1 = s2 - йуфйоб, еумй уфтплй s1 й s2 упчрбдбаф s1 != s2 - йуфйоб, еумй уфтплй s1 й s2 ое упчрбдбаф s1 - йуфйоб, еумй s1 оерхуфбс уфтплб n1 -eq n2 - йуфйоб, еумй гемще n1 й n2 бмзевтбйюеулй упч- рбдбаф . Об неуфе -eq нпзхф вщфш фблце -ne, -gt, -ge, -lt, -le 5_2. Лпнбодб expr Лпнбодб expr ртйнеосефус дмс чщюйумеойс чщтбцеойк. Теъхмш- фбф чщчпдйфус об уфбодбтфощк чщчпд. Претбодщ чщтбцеойс дпмцощ вщфш тбъдемеощ ртпвембнй. Нефбуйнчпмщ дпмцощ вщфш ьлтбойтпчбощ. Обдп ъбнефйфш, юфп 0 чпъчтбэбефус ч лбюеуфче юйумб, б ое дмс йодйлбгйй рхуфпк уфтплй. Уфтплй, упдетцбэйе ртпвемщ ймй дтхзйе урегйбмшоще уйнчпмщ, дпмцощ вщфш ъблмаюеощ ч лбчщюлй. Гемще тбуунбфтйчбафус лбл 32-вйфоще юйумб. Ойце ртйчедео урйупл претбфптпч ч рптсдле чпъчтбуфбойс ртйптйфефб, претбгйй у тбчощн ртйптйфефпн ъблмаюеощ ч жйзхтоще улпвлй. Ретед уйнчпмбнй, лпфптще дпмцощ вщфш ьлтбойтпчбощ, уфп- йф \. <чщт> \| <чщт> еумй ретчпе <чщт> ое рхуфпе й ое охмечпе, фп чпъчтбэбеф езп, йобюе чпъчтбэбеф чфптпе <чщт> <чщт> \& <чщт> еумй пвб <чщт> ое рхуфще й ое охмечще, фп чпъчтбэбеф ретчпе <чщт>, йобюе чпъчтбэбеф 0 <чщт> { =, \>, \>=, \<, \<=, != } <чщт> чпъчтбэбеф теъхмшфбф гемпюйумеоопзп утбчоеойс еумй пвб <чщт> - гемще; йобюе чпъчтбэбеф те- ъхмшфбф мелуйюеулпзп утбчоеойс <чщт> { +, - } <чщт> умпцеойе й чщюйфбойе гемпюйумеоощи бтзхнеофпч <чщт> { \*, /, % } <чщт> хнопцеойе, демеойе й рпмхюеойе пуфбфлб пф деме- ойс гемпюйумеоощи бтзхнеофпч <чщт> : <чщт> претбфпт упрпуфбчмеойс : упрпуфбчмсеф ретчщк бтзхнеоф уп чфптщн, лпфптщк дпмцео вщфш тезх- мстощн чщтбцеойен. Пвщюоп претбфпт утбчоеойс чпъчтбэбеф юйумп уйнчпмпч, хдпчмефчптсаэйи пв- тбъгх (0 ртй оехдбюопн утбчоеойй). Пдоблп уйн- чпмщ \( й \) нпзхф ртйнеосфшус дмс чщдемеойс юбуфй ретчпзп бтзхнеофб. Тезхмстопе чщтбцеойе уфтпйфус умедхаэйн пвтбъпн: . - пвпъобюбеф мавпк уйнчпм * - пвпъобюбеф ртедщдхэйк уйнчпм, рпчфптеоощк оеулпмшлп тбъ [] - пвпъобюбаф мавпк пдйо йъ хлбъбоощи нецдх ойнй уйнчп- мпч; зтхррб уйнчпмпч нпцеф пвпъобюбфшус у рпнпэша ъоблб "-" (ф.е. [0-9] ьлчйчбмеофоп [0123456789]); еу- мй рпуме [ уфпйф ^, фп ьфп ьлчйчбмеофоп мавпнх уйнчп- мх, лтпне хлбъбоощи ч улпвлби й <чпъчтбфб_лбтефлй>; дмс хлбъбойс ] ч лбюеуфче пвтбъгб, обдп рпуфбчйфш ее утбъх ъб [ (ф.е. []...]); . й * чохфтй лчбдтбфощи улпвпл пвпъобюбаф убнйи уевс Чуе пуфбмшоще уйнчпмщ (й ^, еумй уфпйф ое ч лчбдтбфощи улпвлби) пвпъобюбаф убнйи уевс. Дмс хлбъбойс уйнчпмпч ., *,[ й ] обдп ьлтбойтпчбфш йи (ф.е. рйубфш \., \*, \[, \]). Ртйнетщ. 1. a=`expr $a + 1` - хчемйюеойе об 1 ретенеоопк a 2. expr $a : '.*/\(.*\)' \| $a - чщдемсеф йъ йнеой жбкмб лптпфлпе йнс (ф.е. йъ /usr/util/ena чщдемсефус ena). Чойнбойе, пдйопюощк уйнчпм / вхдеф чпуртйосф лбл ъобл претбгйй демеойс. 3. expr $VAR : '.*' - рпмхюеойе лпмйюеуфчб уйнчпмпч ретенеоопк VAR. Ч лбюеуфче рпвпюопзп ьжжелфб expr чпъчтбэбеф умедхаэйе лпдщ ъб- четыеойс: 0 - еумй чщтбцеойе ое охмш й ое рхуфбс уфтплб 1 - еумй чщтбцеойе охмш ймй рхуфбс уфтплб 2 - дмс оелпттелфощи чщтбцеойк Лпнбодб expr фблце чщдбеф умедхаэйе уппвэеойс пв пыйвлби: syntax error - дмс пыйвпл ч претбфптби ймй претбодби non-numeric argument - дмс рпрщфпл ртйнеоеойс бтйжнефйюеулйи претбгйк л оеюйумпчщн уфтплбн Ъбнеюбойе. Дпрхуфйн, юфп нщ ипфйн утбчойфш ъобюеойе ретенеоопк a у лблйн-мйвп уйнчпмпн, йнеаэйн дмс expr пупвщк унщум, обртйнет, уп ъоблпн тбчеоуфчб. Рхуфш $a об убнпн деме счмсефус ъоблпн тб- чеоуфчб. Фбл лбл бтзхнеофщ ртедчбтйфемшоп пвтбвбфщчбафус shel- lпн, фп лпнбодб expr $a = '=' вхдеф чпуртйосфб лбл expr = = = юфп уйофблуйюеулй оелпттелфоп. Ч рпдпвощи умхюбси обдп рпмшъп- чбфшус фблйн ртйенпн: expr X$a = X= ф.е. дпвбчмеойен оелпфптпзп уйнчпмб л пвейн уфтплбн, юфп ойлбл ое чмйсеф об теъхмшфбф утбчоеойс, пдоблп рпъчпмсеф йъвецбфш уйофблуйюеулпк пыйвлй. 5_3. Лпнбодб ena Лпнбодб ena рпъчпмсеф рпмхюйфш юбуфй рпмопзп йнеой жбкмб. Ретчщк бтзхнеоф - жмбз, чфптпк - йнс жбкмб. Лпнбодб тбъмйюбеф умедхаэйе жмбзй: -n - йнс жбкмб веъ тбуыйтеойс -f - йнс жбкмб у тбуыйтеойен -e - тбуыйтеойе -d - йнс дйтелфптйй -p - еумй йнс жбкмб обюйобефус у . ймй .. , фп ьфй уйнчпмщ чщдемсафус йъ йнеой Ойце ртйчпдйфус фелуф ртпзтбннщ ena, итбосэйкус ч /util/ena. # Get part of pathname case $1 in -n ) expr $2 : '.*/\(.*\)[.].*' \| $2 : '\(.*\)[.].*' \| $2 ;; -f ) expr $2 : '.*/\(.*\)' \| $2 ;; -e ) expr $2 : '.*\([.][^./]*\)' \| ' ' ;; -d ) expr $2 : '\(.*\)/.*' \| $2 ;; -p ) expr $2 : '\([.]\)/.*' \| $2 : '\([.][.]\)/.*' \| ' ' ;; * ) echo "error: unknown part of pathname $1" exit 2 ;; esac