aya stroka protokola imeet nomer, chto
pozvolyaet zapustit' ee na vypolnenie, ukazyvaya, naprimer,
sootvetstvuyushchij nomer. Vosklicatel'nyj znak v komandnoj
- 44 -
stroke sluzhit ukazaniem dlya interpretatora, chto vse ukazan-
noe dalee do razdelitelya otnositsya k nekotoroj stroke proto-
kola. Vosklicatel'nyj znak mozhno ukazat' v nachale ili v
lyubom drugom meste komandnoj stroki. Pust' posle vypolneniya
komandy history na ekran displeya vyveden sleduyushchij protokol:
1 cat file1
2 pr -w39 -l24 -2 file1
3 cc program.c >>& errors &
4 cat errors
5 ed program.c
6 history
togda, ispol'zuya vosklicatel'nyj znak, mozhno vypolnit' ryad
dejstvij:
!2
vypolnitsya vtoraya stroka protokola;
!!
vypolnitsya poslednyaya stroka protokola:
!-2
vypolnitsya chetvertaya stroka (vtoraya ot poslednej);
!cat ili !c
vypolnitsya chetvertaya stroka. Interpretator prosmatri-
vaet stroki protokola snizu i vypolnyaet pervuyu, v koto-
roj najdena posledovatel'nost' simvolov (cat ili c),
stoyashchaya v nachale stroki;
!{cat}.a1
vypolnitsya komanda cat errors.a1 - k najdennoj stroke
dopisyvaetsya .a1;
!?gram?
vypolnitsya pyataya stroka protokola. Interpretator vybe-
ret dlya vypolneniya etu stroku, tak kak v nej budet naj-
den shablon gram. Zdes' simvoly ? vydelyayut shablon, po
kotoromu osushchestvlyaetsya poisk;
cat !5* !1*
vypolnitsya komanda cat program.c file1 - budut podstav-
leny slova pyatoj i pervoj strok protokola, isklyuchaya
pervye slova etih strok.
Mozhno vybirat' otdel'nye slova v strokah protokola dlya
vklyucheniya ih v komandnuyu stroku. Slova komandnoj stroki
numeruyutsya, nachinaya s 0. Slovo s nomerom 0 - obychno imya
komandy. Slovo mozhno vydelit' s pomoshch'yu opredelitelya, pered
kotorym neobhodimo ukazat' simvol dvoetochie, naprimer
- 45 -
cat !3:1
Iz tret'ej komandnoj stroki protokola budet vybrano slovo s
nomerom 1, poluchim
cat program.c
Rassmotrim podrobnee opredeliteli slov v komandnyh strokah
protokola:
* ili n* ili n-m
vybrat' vse slova, nachinaya so slova s nomerom 1, ili
vybrat' vse slova, nachinaya so slova s nomerom n, ili
vybrat' vse slova, nachinaya so slova s nomerom n i kon-
chaya slovom s nomerom m;
n ili n-, ili -n
vybrat' slovo s nomerom n, ili vybrat' vse slova, nachi-
naya so slova s nomerom n, ne vklyuchaya poslednee, ili
vybrat' vse slova, nachinaya so slova s nomerom 0 do
slova s nomerom n;
?shablon?:%
vybrat' slovo, sootvetstvuyushchee shablonu;
^ ili $
slovo s nomerom 1 ili poslednee slovo komandnoj stroki.
Razreshaetsya ne ukazyvat' dvoetochie pered sleduyushchimi
opredelitelyami:
^ $ * - %
Rassmotrim primer. Pust' posle vypolneniya komandy history
na ekran displeya vyveden protokol:
1 cat file1 file2 file3
2 pr -w39 -l24 -2 file1 file5
3 cc -o program1.c program2.c >>& errors &
4 cat errors
5 ed program2.c
6 history
togda interpretator csh vypolnit komandy, osushchestvlyaya pods-
tanovki sleduyushchim obrazom:
!5:0 !1:3
iz pyatoj stroki vybiraetsya slovo s nomerom 0 ( imya
komandy ), iz pervoj stroki vybiraetsya slovo s nomerom
3. Vypolnitsya komanda ed file3;
- 46 -
!5:0 !1$
iz pyatoj stroki vybiraetsya slovo s nomerom 0, iz pervoj
stroki - poslednee slovo. Vypolnitsya komanda ed file3;
!2:-3 !3:2-3
iz stroki 2 vybirayutsya slova s nomerami ot 0 do 3 vklyu-
chitel'no, iz stroki 3 vybirayutsya slova s nomerami 2 i
3. Vypolnitsya komanda:
pr -w39 -l24 -2 program1.c program2.c
!2-3 !?prog?%
vypolnitsya komanda:
pr -w39 -l24 -2 program2.c
Posle neobyazatel'nogo opredelitelya mogut ukazyvat'sya
modifikatory slov, kotorye pozvolyayut vypolnit' ryad preobra-
zovanij nad slovom, i ono podstavlyaetsya v komandnuyu stroku
modificirovannym. Modifikatory peremennyh byli rassmotreny
vyshe. V dejstviyah so strokami protokola mozhno ispol'zovat'
i drugie modifikatory:
p
raspechatat' novuyu komandu, no ne vypolnyat' ee;
&
povtorit' predydushchyuyu podstanovku;
s/obrazec_1/obrazec_2/
zamenit' obrazec_1 na obrazec_2. Simvol / mozhno zame-
nit' na lyuboj, otsutstvuyushchij v obrazcah. Esli obra-
zec_2 pustaya stroka, to obrazec_1 udalyaetsya.
Pered kazhdym modifikatorom neobhodimo stavit' dvoeto-
chie. Esli imeetsya opredelitel' slova, to modifikator dolzhen
sledovat' za nim. Pust' posle vypolneniya komandy history na
ekran displeya vyvedeno:
1 cat /usarc/gruppa/ivanov/file1.c
2 pr /usarc/gruppa/ivanov/file1.c
3 cc pa1.c pa2.c pa3.c pa4.c >>& errors &
4 cat errors
5 ed program.c
6 history
togda interpretator vypolnit komandy, osushchestvlyaya podsta-
novki i modifikacii, sleduyushchim obrazom:
- 47 -
!1:0 !1^:t:r
vybiraet iz stroki s nomerom 1 slovo s nomerom 0, t.e.
imya komandy, v dannom sluchae cat. Dalee vybiraet iz
pervoj stroki slovo s nomerom 1, v dannom sluchae eto
/usarc/gruppa/ivanov/file1.c. Modifikator t udalit iz
etogo slova imena katalogov, v dannom sluchae udalyaetsya
/usarc/gruppa/ivanov, i slovo teper' budet imenem fajla
file1.c. Modifikator r udalit rasshirenie imeni fajla.
Takim obrazom, vypolnitsya komanda cat file1.
!1:0 !1^:h/document
po opredelitelyu ^ budet vybrano pervoe slovo pervoj
stroki, modifikator h udalit iz nego imya fajla, ostaviv
imena katalogov, vedushchih k nemu, i vypolnitsya komanda
cat /usarc/gruppa/ivanov/document
!1:0 !1^:h:s?ivanov?sidorov?/document
iz pervogo slova pervoj stroki vybirayutsya imena katalo-
gov, vedushchih k fajlu, zatem modifikator s zamenit
ivanov na sidorov i vypolnitsya komanda
cat /usarc/gruppa/sidorov/document
!1:0 !1^:h:s?ivanov?sidorov?/doc !1^:&:p
pervye dva slova komandnoj stroki dejstvuyut analogichno
predydushchemu primeru. Tret'e slovo vybiraet iz 1 stroki
protokola slovo s nomerom 1, v nem osushchestvlyaetsya
zamena ( modifikator & ), analogichnaya predydushchej, t.e.
vypolnyaetsya zamena ?ivanov?sidorov?, sohraniv vse
ostal'noe v etom slove. Stroka ne vypolnyaetsya, a tol'ko
vyvoditsya na ekran (modifikator p):
cat /usarc/gruppa/sidorov/doc \
/usarc/gruppa/sidorov/file1.c
!1:0 !3:1-4:gs?pa?ff?:p
imya komandy vybiraetsya iz pervoj stroki protokola, iz 3
stroki vybirayutsya vse slova s nomerami ot 1 do 4 vklyu-
chitel'no i v nih global'no (modifikator g) delaetsya
zamena ?pa?ff? . Komanda budet napechatana, no vypol-
nyat'sya ne budet (modifikator p):
cat ff1.c ff2.c ff3.c ff4.c
Sushchestvuet takzhe udobnoe sredstvo redaktirovaniya pos-
lednej stroki protokola. Dlya etih celej ispol'zuetsya konst-
rukciya ^shablon^zamena^. Dopustim, poslednyaya stroka imeet
vid cat aaa bbb ccc ddd, togda posle komandy ^ccc^file.c^
- 48 -
budet vypolnena zamena: cat aaa file.c ccc ddd.
Imeetsya vozmozhnost' vvesti kratkie oboznacheniya dlya
komandnyh strok. |ti kratkie oboznacheniya nazyvayut psevdoni-
mami komand. Esli dlya kakoj-libo komandnoj stroki ustanovlen
psevdonim, to ee vypolnenie teper' mozhno osushchestvlyat', uka-
zyvaya psevdonim, a ne vsyu stroku. Dopustim, imeetsya komand-
naya stroka
alias sp "sort \!* | print"
togda komandnye stroki
sort file1 file2 | print
i
sp file1 file2
tozhdestvenny. Vmesto !* v komandnuyu stroku budut podstav-
leny imena fajlov ili klyuchi komandy sort, ukazannye za psev-
donimom sp.
Interpretator komand vedet spisok psevdonimov, kotorye
mogut ustanavlivat'sya, otobrazhat'sya i modificirovat'sya s
pomoshch'yu komand alias i unalias. Komandnaya stroka posle
prosmotra razbivaetsya na otdel'nye slova, kazhdoe slovo,
interpretiruemoe kak imya komandy, proveryaetsya, chtoby vyyas-
nit', imeet li ono psevdonim. Esli da, eto slovo zamenyaetsya
na znachenie psevdonima. Vsyudu v komandnyh strokah pri soz-
danii psevdonimov simvol ! neobhodimo ekranirovat'. V pro-
tivnom sluchae on budet interpretirovat'sya kak obrashchenie k
protokolu. Psevdonimy mozhno ustanavlivat' i na komandy csh,
naprimer
alias a alias
ustanavlivaet psevdonim na komandu alias.
1.12. Peremennye interpretatora csh
Interpretator csh operiruet peremennymi dvuh vidov:
vnutrennimi i vneshnimi. Vnutrennie peremennye ustanavlivayut
rezhim raboty interpretatora, a vneshnie v osnovnom otnosyatsya
k komandnym strokam, kotorye im interpretiruyutsya. Obrashchenie
k peremennym mozhet byt' prostym (ustanovlena peremennaya ili
net) i slozhnym. Naprimer, peremennaya argv predstavlyaet
obraz spiska parametrov komandnoj stroki, a peremennaya ver-
bose yavlyaetsya klyuchom i sushchestvenno lish' ee nalichie ili
otsutstvie. Osoboe mesto zanimayut tak nazyvaemye peremennye
okruzheniya. Interpretator schityvaet ih znacheniya pri zapuske.
Znacheniya peremennyh okruzheniya stanovyatsya vnutrennimi kons-
tantami interpretatora i ih mozhno ispol'zovat' kak konstanty
- 49 -
v komandnyh strokah i komandnyh fajlah. Kazhdaya vnutrennyaya
peremennaya imeet opredelennyj smysl dlya interpretatora.
CHast' vnutrennih peremennyh vsegda ustanavlivaetsya interpre-
tatorom pri inicializacii libo pri zapuske-zavershenii pro-
cessov. Posle chego peremennye ne budut modificirovat'sya,
esli etogo ne sdelaet pol'zovatel'. K chislu vnutrennih
peremennyh otnosyatsya: argv, cdpath, cwd, home, path, prompt,
shell. Peremennye child i status ustanavlivayutsya pri
porozhdenii processov i sohranyayut svoe znachenie do poyavleniya
novyh. Znacheniya peremennyh ustanavlivayutsya komandoj set ili
klyuchom pri vyzove csh. Isklyuchit' peremennuyu iz chisla oprede-
lennyh mozhno komandoj unset. Nizhe privoditsya spisok vnut-
rennih peremennyh i ih naznachenie.
argv
predstavlyaet stroku parametrov. K nej primenimy podsta-
novki pozicionnyh parametrov.
cdpath
etoj peremennoj prisvaivaetsya spisok imen katalogov, k
kotorym pol'zovatel' chasto budet obrashchat'sya. Dopustim,
cdpath opredelena sleduyushchim obrazom: set cdpath = (
/usr/include /usr/lib ), togda komanda chdir sys tozh-
destvenna komande chdir /usr/include/sys.
checktime
esli eta peremennaya ustanovlena i esli v techenie uka-
zannogo vremeni ne vypolnyalos' kakih-libo dejstvij, to
vypolnyaetsya exit. Dopustim, vypolnena komanda set
checktime = 3, togda, esli v techenie 3 min ne vypolnya-
lis' kakie-libo dejstviya, vypolnyaetsya exit, i interpre-
tator prekrashchaet rabotu.
child
nomer processa. Vyvoditsya na ekran displeya pri zapuske
parallel'nogo processa. Znachenie peremennoj child sbra-
syvaetsya, kogda etot process zavershaetsya.
cwd
znacheniem etoj peremennoj yavlyaetsya stroka - polnoe imya
rabochego kataloga. |to imya mozhet ne sovpadat' s istin-
nym, esli ustanovlen symlink.
echo
vyzyvaet pechat' kazhdoj komandy pered vypolneniem. Vse
podstanovki vypolnyayutsya pered vyvodom. Rezhim echo
mozhno ustanovit' libo na vse vremya raboty, libo na
period vypolneniya odnogo komandnogo fajla. Naprimer,
csh -x comfile ustanovit rezhim echo na vremya vypolneniya
komandnogo fajla comfile, a komanda set echo - na vse
vremya raboty interpretatora.
- 50 -
history
chislennoe znachenie etoj peremennoj ustanavlivaet koli-
chestvo strok, kotoroe neobhodimo hranit' v protokole.
Dlya slishkom bol'shogo chisla strok mozhet ne hvatit'
pamyati. Optimal'noe chislo - 22 stroki.
home
registracionnyj katalog pol'zovatelya. Ego imya schityva-
etsya pri zapuske csh iz peremennoj okruzheniya HOME.
ignoreeof
predotvrashchaet sluchajnoe zavershenie raboty interpreta-
tora po priznaku konec fajla. |tot priznak vyglyadit kak
SU/D ili CTRL/D pri vvode s klaviatury displeya. Priznak
konca fajla mozhno zamenit' na drugoj komandoj sistemy
stty(1).
mail
imya fajla, v kotoryj budet postupat' pochta.
noclobber
ustanavlivaet zashchitu fajlov ot sluchajnogo razrusheniya.
noglob
zapretit' rasshirenie imen fajlov.
nonomatch
obychno, esli ukazannomu shablonu (naprimer, echo *.[2-
5]) ne sootvetstvuet ni odin obrazec, porozhdaetsya sos-
toyanie oshibki. Esli ustanovlena peremennaya nonomatch,
sostoyanie oshibki ne voznikaet, a ukazannyj shablon vozv-
rashchaetsya programme.
notify
asinhronno vyvodit' soobshcheniya o sostoyaniyah vypolnyaemyh
processov. Esli peremennaya notify ne ustanovlena, eti
soobshcheniya vyvodyatsya pered vyvodom novogo priglasheniya.
path
opredelyaet imena katalogov, v kotoryh interpretator
budet iskat' fajly komand, zapuskaemyh na vypolnenie.
Pri zapuske interpretatora sozdaetsya hesh-tablica komand
iz katalogov, ukazannyh v path. Heshirovanie sushchestvenno
sokrashchaet vremya poiska komandy pri ee zapuske. Esli
posle vhoda v sistemu, t.e. posle heshirovaniya katalo-
gov, budet zapisana v odin iz nih novaya komanda, to ona
budet otsutstvovat' v hesh-tablicah, i interpretator ne
budet ee obnaruzhivat'. Dlya razresheniya etoj situacii
neobhodimo vypolnit' komandu rehash. Po komande rehash
budut perestroeny hesh-tablicy, i novye komandy budut
dostupny. Pri zapuske novogo interpretatora snova
chitaetsya fajl ~/.cshrc i stroitsya hesh-tablica. Na etu
operaciyu uhodit dostatochno mnogo vremeni i, esli est'
- 51 -
neobhodimost' bolee bystrogo starta, pri zapuske neob-
hodimo ispol'zovat' klyuch -f
csh -f comfile
Perestrojka hesh-tablic osushchestvlyaetsya takzhe vsyakij raz,
kogda s pomoshch'yu komandy set izmenyaetsya znachenie pere-
mennoj path.
prompt
soderzhit stroku simvolov, kotoraya vyvoditsya v kachestve
priglasheniya. Esli eta stroka simvolov vklyuchaet voskli-
catel'nyj znak, na ego mesto podstavlyaetsya tekushchij
nomer komandnoj stroki. Esli peremennaya prompt ne usta-
novlena, pechataetsya priglashenie % dlya ryadovogo pol'zo-
vatelya i # dlya superpol'zovatelya.
shell
soderzhit imya interpretatora, kotoryj zapuskaetsya pri
vhode pol'zovatelya v sistemu. Imya interpretatora uka-
zano v peremennoj sredy SHELL i schityvaetsya v nachale
seansa.
status
prinimaet znachenie koda zaversheniya komandy, naprimer:
% false ; echo $status
1
% true ; echo $status
0
Zdes' komanda false vozvrashchaet 1 - kod neudachnogo
zaversheniya, komanda true vozvrashchaet 0 - kod udachnogo
zaversheniya.
time
hronometriruet vypolnenie komandnyh strok. Esli vypol-
nenie prodolzhalos' dol'she ukazannogo vremeni, vyvodyatsya
rezul'taty hronometrirovaniya. Naprimer, v fajle
~/.cshrc vypolneno naznachenie set time = 6, eto znachit,
chto interpretator budet vyvodit' rezul'taty hronometri-
rovaniya, kogda vremya vypolneniya komandnoj stroki prevy-
sit 6 s. Esli teper' vypolnit' komandu, naprimer, sort
file, to posle ee zaversheniya budet vyveden rezul'tat
hronometrirovaniya:
1.6u 17.9s 0:26 74%
Zdes': 1.6u - vremya pol'zovatel'skoj fazy processa;
17.9s - vremya sistemnoj fazy processa; 0:26 - astrono-
micheskoe vremya processa; 74% - otnoshenie v procentah
summy pol'zovatel'skoj i sistemnoj faz processa k ast-
ronomicheskomu vremeni.
- 52 -
verbose
ustanavlivaet rezhim raspechatki slov kazhdoj komandy s
uchetom podstanovok. |tot rezhim mozhno ustanovit',
ispol'zuya klyuch -v pri zapuske interpretatora na vypol-
nenie.
Pri zapuske komandnyh fajlov mozhno ustanavlivat' raz-
lichnye klyuchi. Pri etom komandnaya stroka vyglyadit sleduyushchim
obrazom:
csh -spisok_klyuchej imya_fajla ...
Esli imya_fajla ne ukazano, to porozhdaetsya novaya interaktiv-
naya obolochka.
Nizhe perechisleny klyuchi interpretatora i ih znacheniya:
-c schitat' komandu iz edinstvennogo parametra, ukazannogo
srazu posle -c;
-e interpretator prekrashchaet rabotu, esli lyubaya vyzvannaya
komanda zavershaetsya nenormal'no (kod vozvrata ne 0);
-f zapretit' chtenie fajla ~/.cshrc dlya bolee bystrogo
starta;
-i zapustit' novuyu obolochku kak interaktivnuyu. Esli vyzov
interpretatora osushchestvlyaetsya s klaviatury displeya,
etot klyuch ustanavlivaetsya po umolchaniyu;
-n osushchestvlyat' razbor komandnyh strok, no ne vypolnyat'
komandy. |to rezhim otladki;
-s chitat' iz standartnogo vvoda;
-t schityvat' i vypolnyat' tol'ko odnu stroku. |ta stroka
mozhet soderzhat' v konce simvol prodolzheniya stroki \;
-v posle podstanovok iz protokola raspechatat' komandu
pered ee vypolneniem;
-V pered razborom strok iz fajlov ~/.cshrc i ~/.login
ustanovit' klyuch -v. |to pozvolit uvidet' na ekrane
displeya, kak interpretator ustanavlivaet naznacheniya i
vypolnyaet komandnye stroki pri interpretacii etih faj-
lov;
-x pechatat' na ekrane displeya vse komandy pered vypolne-
niem;
-X ustanovit' klyuch -x pri interpretacii fajlov ~/.cshrc i
~./login.
- 53 -
Vneshnie peremennye - eto takie peremennye, kotorye
ustanavlivayutsya i ispol'zuyutsya tol'ko pol'zovatelem. V
otlichie ot vnutrennih peremennyh i peremennyh okruzheniya
vneshnie peremennye imeyut tot smysl, kotoryj pridaetsya im
pol'zovatelem. Znacheniya vneshnih peremennyh mogut byt' usta-
novleny i otobrazheny komandoj set i otmeneny komandoj unset.
Sistema podderzhivaet massiv peremennyh, kotoryj nazy-
vayut peremennymi sredy ili okruzheniya. Peremennye okruzheniya
ispol'zuyutsya sistemnymi i pol'zovatel'skimi programmami.
Dlya ustanovki znachenij peremennyh okruzheniya ispol'zuetsya
komanda setenv, dlya otmeny - komanda unsetenv. Imeetsya nes-
kol'ko standartnyh imen peremennyh okruzheniya, ih znacheniya
zavisyat ot sootvetstvuyushchih naznachenij komandoj setenv. CHast'
etih naznachenij proishodit pri otkrytii seansa raboty.
Pol'zovatel' imeet vozmozhnost' pereustanovit' znacheniya
sushchestvuyushchim peremennym, ob®yavit' i prisvoit' znacheniya
novym. Znacheniya standartnyh peremennyh okruzheniya ispol'zu-
yutsya mnogimi sistemnymi programmami. Oni dostupny kak kons-
tanty i programmam pol'zovatelya. Vazhno otmetit', chto znache-
niya peremennyh okruzheniya yavlyayutsya vnutrennimi konstantami
interpretatora. Perechislennye nizhe imena zarezervirovany
kak standartnye imena peremennyh okruzheniya:
PATH
imena standartnyh katalogov, razdelennyh dvoetochiem;
HOME
registracionnyj katalog pol'zovatelya, ustanovlennyj v
fajle /etc/passwd;
TERM
imya tipa terminala;
TERMCAP
stroka opredeleniya vozmozhnostej displeya iz fajla
/etc/termcap;
SHELL
imya interpretatora komandnogo yazyka, kotoryj iniciali-
ziruetsya pri vhode pol'zovatelya v sistemu;
MSG
opredelyaet, na kakom yazyke budut vyvodit'sya soobshcheniya
pol'zovatelyu pri rabote s sistemoj (MSG = r - na russ-
kom, MSG = l - na anglijskom);
USER
registracionnoe imya pol'zovatelya.
Komanda unsetenv udalyaet dobavlennye vo vremya raboty
peremennye okruzheniya. Komanda setenv pozvolyaet ob®yavit' i
- 54 -
prisvoit' znachenie novoj peremennoj okruzheniya
% setenv NAME 15
% echo $NAME
15
% @ a = ( $NAME + 15 )
% echo $a
30
% setenv NAME "Jan Feb Mar Apr"
% echo $NAME
Jan Feb Mar Apr
Peremennye okruzheniya otlichayutsya ot peremennyh interpre-
tatora tem, chto oni ne vliyayut na rabotu interpretatora.
1.13. Special'nye fajly
V registracionnom kataloge pol'zovatelya razmeshchaetsya
neskol'ko special'nyh fajlov: ~/.hushlogin, ~/.login,
~/.cshrc, ~/.logout i ~/.history.
Fajl ~/.hushlogin pustoj i ispol'zuetsya kak klyuch. Esli
on sushchestvuet, pri otkrytii seansa raboty ne vyvoditsya na
ekran displeya /etc/motd - fajl s tekstom soobshcheniya administ-
ratora. Obychno v fajle /etc/motd soderzhat'sya svedeniya o
versii sistemy, "vyveska" organizacii i t.d.
Pri otkrytii seansa raboty interpretator chitaet fajly
~/.login i ~/.cshrc, a pri zavershenii raboty - fajl
~/.logout. Pri vhode pol'zovatelya v sistemu pervym chitaetsya
fajl ~/.cshrc, potom ~/.login. Esli v registracionnom kata-
loge imeetsya fajl ~/.history, to on schityvaetsya v protokol.
Vse perechislennye fajly, krome ~/.history, yavlyayutsya obychnymi
komandnymi fajlami, v kotoryh programmist opredelyaet zhela-
tel'nye dlya sebya dejstviya po vhodu i vyhodu iz sistemy.
Fajl ~/.login opredelyaet te dejstviya, kotorye neobho-
dimo vypolnit' v nachale seansa raboty pol'zovatelya. Nizhe
priveden primer takogo fajla:
set ignoreeof
set prompt = 'Ivanov I.I._\!> '
if( $?MAIL ) set mail = $MAIL
msgs
setenv MSG r
V pervoj stroke ustanavlivaetsya klyuch ignoreeof, kotoryj
predotvrashchaet sluchajnoe zavershenie raboty interpretatora pri
nabore na klaviature displeya simvola SU/D (CTRL/D).
- 55 -
Vo vtoroj stroke ustanavlivaetsya priglashenie, kotoroe
budet vydavat'sya pri gotovnosti prinyat' novuyu komandnuyu
stroku. Zdes' vmesto \! budut podstavlyat'sya tekushchie nomera
strok history, naprimer :
Ivanov I.I._15>
V tret'ej stroke ukazyvaetsya imya pochtovogo fajla. Esli
on budet ne pust, to na ekrane displeya poyavitsya soobshchenie:
"U Vas est' novaya pochta ". |ti opredeleniya sushchestvenno
zavisyat ot versii programmy mail, ustanovlennoj v sisteme.
V chetvertoj stroke zapisano obrashchenie k komande msgs,
kotoraya vydaet novye informacionnye soobshcheniya pri vhode v
sistemu (eti soobshcheniya zanosyatsya administratorom, soprovozh-
dayushchim operacionnuyu sistemu).
V pyatoj stroke opredelyaetsya peremennaya MSG, kotoraya
opredelyaet yazyk diagnostik (v dannom sluchae - russkij, dlya
anglijskogo ukazyvetsya bukva l).
Pri zavershenii seansa raboty chitaetsya fajl ~/.logout i
vypolnyayutsya ukazannye v nem dejstviya. Spisok takih dejstvij
zavisit isklyuchitel'no ot fantazii programmista. V fajle
~/.logout mozhno razmestit' vse komandy, kotorye neobhodimo
vypolnit' po vyhodu iz sistemy. Vazhno otmetit', chto, nes-
motrya na vyhod pol'zovatelya iz sistemy, vse processy, zapu-
shchennye im kak asinhronnye, budut prodolzhat' vypolnyat'sya.
Pri kazhdom vyzove csh vypolnyaet fajl ~/.cshrc. Nizhe
priveden primer fajla ~/.cshrc:
set path = ( . /bin /usr/bin /usr/ucb )
set history = 22
set savehist = 22
set checktime = 3
set prompt = 'IVANOV I.I._\!> '
alias h history
alias c /bin/cat
alias l /bin/ls -l
set path = (. /bin /usr/bin /usr/ucb)
ustanavlivaet te katalogi, gde csh budet iskat' komandy
pered zapuskom ih na vypolnenie.
set history = 22
ustanavlivaet kolichestvo poslednih komandnyh strok,
kotorye dolzhny sohranyat'sya v protokole.
set savehist = 22
ustanavlivaet kolichestvo strok protokola, kotoroe
- 56 -
neobhodimo zapomnit' v fajle ~/.history. Pri vhode v
sistemu etot fajl budet prochitan i zapisan v protokol.
set checktime = 3
ustanavlivaet vremya (3 min), v techenie kotorogo csh
mozhet "bezdejstvovat'". Esli v techenie ukazannogo vre-
meni ne budut vypolnyat'sya kakie-libo dejstviya, to
vypolnyaetsya komanda exit i csh prekrashchaet rabotu.
Takoe zavershenie raboty polezno, kogda pol'zovatelyu
neobhodimo otluchit'sya.
set prompt = 'IVANOV I.I._\!>'
ustanavlivaet priglashenie, kotoroe budet vyvodit' csh
pri porozhdenii novogo ekzemplyara interpretatora. Sim-
voly etogo priglasheniya special'no nabrany zaglavnymi
bukvami, chtoby u pol'zovatelya byla vozmozhnost' otlichit'
osnovnoj ekzemplyar interpretatora ot porozhdennogo
novogo.
Ostal'nye komandy demonstriruyut vozmozhnost' ispol'zova-
niya psevdonimov komand. Zametim, chto fajl ~/.login vypolnya-
etsya tol'ko odin raz - v nachale seansa raboty v sisteme;
fajl ~/.cshrc vypolnyaetsya pri zapuske kazhdoj novoj obolochki.
1.14. Vstroennye komandy i operatory
Nizhe perechisleny imena vstroennyh komand, ih sintaksis
i dejstvie.
alias
alias imya
alias imya spisok_slov
komanda alias pozvolyaet ustanavlivat' psevdonimy komand
i komandnyh strok. Pri obrashchenii k komandam ili komand-
nym strokam, dlya kotoryh vypolnena komanda alias, mozhno
ispol'zovat' ih psevdonimy. Pervaya forma raspechatyvaet
vse psevdonimy, vtoraya - psevdonim dlya ukazannogo
imeni, esli on ustanovlen, tret'ya ustanavlivaet psevdo-
nim dlya zadannogo spiska slov. V spiske slov vypolnya-
yutsya podstanovki.
alloc
pokazyvaet razmer ispol'zuemoj dinamicheskoj pamyati,
vklyuchaya ispol'zuemuyu i svobodnuyu pamyat', a takzhe adres
poslednej yachejki pamyati. Ispol'zuetsya dlya otladki
interpretatora.
bg
bg %vnutrennij_identifikator_processa
bg %shablon_imeni_processa
- 57 -
perevodit poslednij priostanovlennyj ili ukazannyj pro-
cess v asinhronnyj rezhim vypolneniya.
break
vyzyvaet vyhod za end blizhajshej vneshnej konstrukcii
foreach ili while. Mozhno vypolnyat' perehody cherez nes-
kol'ko urovnej posredstvom napisaniya neskol'kih opera-
torov break v odnoj stroke, razdelyaya ih simvolom ;.
breaksw
vyzyvaet vyhod iz operatora switch za predely operatora
endsw;
case metka:
metka - shablon odnogo iz variantov operatora switch.
V metkah mozhno ispol'zovat' shablony imen fajlov i kata-
logov ( *, ?, [...] ). Dvoetochie obyazatel'no.
cd
cd imya
chdir
chdir imya
zamenyaet rabochij katalog na katalog imya. Esli parametr
otsutstvuet, osushchestvlyaetsya perehod k registracionnomu
katalogu pol'zovatelya.
continue
prodolzhaet vypolnenie blizhajshego vneshnego while ili
foreach. Vse stroki cikla do end propuskayutsya, i nachi-
naetsya novaya iteraciya cikla.
default:
ispol'zuetsya v switch. Esli posle vseh proverok ne
nashlos' varianta, sovpavshego s variantom v case, vypol-
nyaetsya to, chto ukazano v variante default. Variant
default dolzhen raspolagat'sya posle vseh case. Dvoeto-
chie obyazatel'no.
dirs
napechatat' soderzhimoe steka imen katalogov. Zanesenie
imen katalogov v stek vypolnyaet komanda pushd, udalenie
imen katalogov iz steka vypolnyaetsya komandoj popd.
|lementy steka numeruyutsya ot 1, nachinaya ot vershiny
steka.
echo spisok_slov
echo -n spisok_slov
spisok slov zapisyvaetsya v standartnyj vyvod. Klyuch -n
zapreshchaet perehod na novuyu stroku posle vyvoda.
- 58 -
else
end
endif
endsw
sm. nizhe opisanie operatorov foreach, if, switch i
while.
eval arg ...
snachala proizvodyatsya vse podstanovki, zatem slovo eval
otbrasyvaetsya, i ostavshiesya simvoly rassmatrivayutsya kak
komandnaya stroka, kotoraya vypolnyaetsya.
exec komanda
komanda zapuskaetsya vmesto interpretatora. Rabota
interpretatora zavershaetsya.
exit
exit(vyrazhenie)
proishodit vyhod iz interpretatora (pervaya forma) libo
so znacheniem ukazannogo vyrazheniya (vtoraya forma). Zna-
chenie peremennoj status vsegda ravno kodu vozvrata.
fg
fg %vnutrennij_identifikator_processa
fg %shablon_imeni_processa
vozvrashchaet poslednij priostanovlennyj (pervaya forma)
ili ukazannyj process v sinhronnyj rezhim vypolneniya.
foreach imya (spisok_slov)
...
end
peremennoj imya posledovatel'no prisvaivayutsya znacheniya
kazhdogo chlena spiska slov i vypolnyaetsya posledovatel'-
nost' komand mezhdu dannoj komandoj i sootvetstvuyushchim
operatorom end (foreach i end dolzhny nahodit'sya v
otdel'nyh strokah).
glob spisok_slov
analogichna komande echo. Slova vyvodyatsya bez probela i
posle poslednego slova ne vypolnyaetsya perehod na novuyu
stroku. Takoj vyvod polezen pri manipulyaciyah s imenami
fajlov, kogda eti imena neobhodimo udlinyat' ili sozda-
vat' novye.
- 59 -
goto slovo
operator bezuslovnogo perehoda na metku. Vypolnenie
prodolzhaetsya so stroki, idushchej posle ukazannoj metki.
Metka dolzhna zavershat'sya simvolom :. Slovo v operatore
goto mozhet byt' strokoj, soderzhashchej komandy, psevdonimy
komand i rasshireniya imen fajlov. V etom sluchae metka
formiruetsya kak rezul'tat interpretacii i vypolneniya
etoj stroki.
hashstat
raspechatyvaet stroku statistiki, opredelyayushchuyu, nas-
kol'ko effektivno vnutrennyaya tablica heshirovaniya razme-
shchaet komandy. Dannaya komanda yavlyaetsya otladochnoj.
history
history -r
history n
history -r n
history -h
vyvodit spiski iz protokola. Po klyuchu -r stroki vyvo-
dyatsya v obratnom poryadke. Esli ukazano chislo n, to
vyvodyatsya tol'ko n strok protokola. S klyuchom -h vyvo-
dyatsya stroki protokola v formate fajla ~/.history.
if(vyrazhenie) komanda
esli vyrazhenie istinno (ne ravno nulyu), to vypolnyaetsya
komanda. Komanda dolzhna byt' odna. Ne dopuskaetsya pri-
menenie posledovatel'nosti komand i/ili konvejera.
Interpretator vychislyaet istinnost' vyrazheniya posle
podstanovok kak v komande, tak i v vyrazhenii.
if(vyrazhenie_1) then
...
else if(vyrazhenie_2) then
...
else
...
endif
esli znachenie vyrazheniya_1 istinno, vypolnyayutsya komandy
do pervogo else. Inache, esli znachenie vyrazheniya_2
istinno, vypolnyayutsya komandy do vtorogo else i t.d.
Vozmozhno lyuboe kolichestvo par else-if; endif nuzhen
tol'ko odin. CHast' else yavlyaetsya neobyazatel'noj. Slova
else i endif dolzhny byt' pervymi v strokah, gde oni
ukazany. if dolzhen nahodit'sya odin v stroke ili posle
else.
jobs
jobs -l
- 60 -
vyvesti tablicu processov. Format jobs -l vyvodit bolee
polnuyu informaciyu. Interpretator obespechivaet rabotu s
vnutrennimi i sistemnymi identifikatorami processov.
Sistemnye identifikatory processov vyvodyatsya komandoj
ps ili jobs s klyuchom -l, vnutrennie - komandoj jobs.
Pol'zovatelyu predostavlyaetsya vozmozhnost' ne obrashchat'sya
k sistemnym identifikatoram, a ukazyvat' v komandah
upravleniya processami vnutrennie identifikatory. Vnut-
rennij identifikator processa pechataetsya v kvadratnyh
skobkah. Simvolom + pomechaetsya poslednij iz priosta-
novlennyh processov; simvolom - predposlednij iz prios-
tanovlennyh processov.
kill %vnutrennij_identifikator_processa ...
kill -SIG %vnutrennij_identifikator_processa ...
kill %shablon_imeni_processa ...
kill -SIG %shablon_imeni_processa ...
kill sistemnyj_identifikator_processa ...
kill -SIG sistemnyj_identifikator_processa ...
kill -l
esli SIG ne ukazan, to processam posylaetsya signal TERM
(okonchit'). Signal SIG ukazyvaetsya libo chislom, libo
imenem bez shablona SIG (kak eto opredeleno v
/usr/include/signal.h). kill -l vyvodit spisok imen
signalov.
limit tip_resursa maksimal'nyj_razmer
limit tip_resursa
limit
dlya 32-razryadnyh mashin sushchestvuet vozmozhnost' ograniche-
niya resursov sistemy, vydelyaemyh odnomu processu.
Ogranichivaetsya potreblenie tekushchim processom i kazhdym,
kotoryj sozdaetsya, tak, chto ni odin iz etih processov
otdel'no ne prevyshaet maksimal'nyj razmer zadannogo
resursa. Esli znachenie maksimal'nyj razmer ne zadano,
vyvoditsya znachenie tekushchego ogranicheniya; esli znachenie
tip_resursa ne zadano, vyvodyatsya vse ustanovlennye
ogranicheniya. Tekushchee upravlenie resursov vklyuchaet
vremya processora cputime (maksimal'noe chislo sekund
central'nogo processora, otvodimoe kazhdomu processu),
razmer fajla filesize (maksimal'nyj razmer odnogo
fajla, kotoryj mozhno sozdat'), razmer segmenta dannyh
datasize (maksimal'noe uvelichenie oblasti dannye_+_stek
s pomoshch'yu sbrk(2) za granicu teksta programmy), razmer
steka stacksize (maksimal'nyj razmer avtomaticheski ras-
shiryaemoj oblasti steka), razmer dampa coredumpsize
(maksimal'nyj razmer dampa, kotoryj budet sozdan).
Maksimal'nyj razmer resursa mozhet byt' zadan v vide
chisla (celogo libo s tochkoj), za kotorym sleduet
- 61 -
ukazatel' razmernosti. Dlya zadaniya imen tipov resursov
i ukazatelej razmernosti dostatochno zadavat' unikal'nye
shablony imen.
login
login imya
po komande login zavershaetsya seans raboty pol'zovatelya.
Komandu login mozhno vypolnyat' bez argumenta imya i s
nim. Vo vtorom sluchae srazu zhe budet zaproshen vhodnoj
parol' pol'zovatelya imya.
logout
ukazyvaet interpretatoru o neobhodimosti prekratit'
rabotu. CHitaetsya fajl ~/.logout, esli on imeetsya, i
vypolnyayutsya vse ukazannye v nem dejstviya. Asinhronnye
processy prodolzhayut vypolnyat'sya.
nice
nice +chislo
nice -chislo
nice komanda
nice +chislo komanda
nice -chislo komanda
komanda ustanovki prioriteta. V sisteme ispol'zuetsya
shkala prioritetov: [-100; +100], prioritet +100 samyj
nizkij. Pervaya forma ustanavlivaet prioritet dlya
interpretatora, ravnyj 4, vtoraya - prioritet, ravnyj
ukazannomu chislu, tret'ya - prioritet dlya komandy, rav-
nyj 4. Tol'ko administrator sistemy mozhet ustanovit'
otricatel'nyj prioritet. Dlya vypolneniya zapuskaetsya
novyj interpretator, kotoryj obespechivaet vypolnenie
komandy. Komanda dolzhna byt' odna i ne mozhet soderzhat'
posledovatel'nost' komand, konvejer ili psevdonim.
nohup
nohup komanda
zapreshchaet reakciyu na signaly SIGINT (CTRL/C), SIGQUIT
(CTRL/\) i SIGHUP (BREAK - otklyuchenie udalennogo termi-
nala ili |VM po kommutiruemoj linii). Pervaya forma v
komandnom fajle ustanavlivaet svoe dejstvie na vse
stroki, ukazannye nizhe. Vtoraya forma privodit k tomu,
chto pri vypolnenii ukazannoj komandy eti signaly igno-
riruyutsya. Dlya vseh asinhronnyh processov nohup vypol-
nyaetsya avtomaticheski.
- 62 -
notify %vnutrennij_identifikator_processa
notify %shablon_imeni_processa
notify
daet komandu na asinhronnyj vyvod soobshchenij ob izmene-
niyah sostoyaniya processa. Obychno eti soobshcheniya vyvo-
dyatsya posle peredachi na vypolnenie novoj komandnoj
stroki. Esli komanda notify vypolnena bez argumentov,
to etot rezhim ustanavlivaetsya dlya vseh processov.
onintr
onintr -
onintr metka
upravlyaet reakciej na preryvaniya. Pervaya forma usta-
navlivaet standartnuyu reakciyu na preryvaniya, kotoraya
zaklyuchaetsya v zavershenii komandnogo fajla ili vozvrate
na uroven' vvoda terminal'nyh komand. Vtoraya forma
vyzyvaet ignorirovanie vseh preryvanij. Poslednyaya
forma vyzyvaet vypolnenie perehoda na metku pri poluche-
nii preryvaniya ili pri zavershenii porozhdennogo processa
iz-za preryvaniya. V lyubom sluchae, esli interpretator
csh rabotaet asinhronno, vse formy komandy onintr igno-
riruyutsya.
popd
popd +chislo
vypolnyaet komandu cd imya_nomer_2 steka imen katalogov.
Imya_nomer_1 iz steka imen katalogov udalyaetsya, ostal'-
nye elementy steka sohranyayutsya s novymi nomerami.
Forma popd +chislo udalyaet imya_nomer_(1+chislo) iz
steka, ostal'nye elementy steka sohranyayutsya s novymi
nomerami. Pri etom perehod v drugoj katalog ne osu-
shchestvlyaetsya.
pushd
pushd imya_kataloga
pushd +chislo
lyubaya forma komandy pushd menyaet poryadok v steke imen
katalogov. Forma pushd vypolnyaet komandu cd
imya_nomer_2 steka. Pri etom imya_nomer_2 stavitsya v
vershinu, a imya_nomer_1 - na ego mesto v steke; ostal'-
nye elementy steka ostayutsya na svoih mestah. Forma
pushd imya_kataloga vypolnyaet komandu cd imya_kataloga