        Éîôåòðòåôáôïò ëïíáîäîïçï ñúùëá 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 - - <<!

create database zawod;
drop database sprawki;

!

        1_2. Óéîèòïîîïå é áóéîèòïîîïå ÷ùðïìîåîéå ëïíáîä

     Ïâùþîï shell öäåô úá÷åòûåîéñ  ÷ùðïìîåîéñ  ëïíáîäù.  Ïäîáëï
éíååôóñ ÷ïúíïöîïóôø úáðõóôéôø úáäáþõ ÷ áóéîèòïîîïí òåöéíå, ô.å.
âåú ïöéäáîéñ åå úá÷åòûåîéñ. Äìñ üôïçï ðïóìå ëïíáîäù (ðïóìå ÷óåè
åå áòçõíåîôï÷ é õëáúáîéê ï  ðåòåîáúîáþåîéé  ÷÷ïäá-÷ù÷ïäá)  îáäï
ðïóôá÷éôø úîáë &. Ðòé üôïí ðï õíïìþáîéà óôáîäáòôîùê ÷÷ïä ëïíáî-
äù îáúîáþáåôóñ îá ðõóôïê æáêì /dev/null.

Ðòéíåò: óïúäáôø æáêì primer íïöîï ðï ëïíáîäå

        echo > 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
