Novye pol'zovateli UNIX i Linux mogut byt' oshelomleny razmerami i ochevidnoj slozhnost'yu sistemy, kotoraya predstala pered nimi. Sushchestvuet mnogo horoshih knig po ispol'zovaniyu UNIX dlya vseh urovnej podgotovki: ot novichka do eksperta. No ni odna iz etih knig ne obsuzhdaet osobennosti Linux. Hotya 95% vsego svyazannogo s ispol'zovaniem Linux absolyutno analogichno drugim UNIX-sistemam, naibolee pryamoj put' osvoeniya etoj sistemy - eto po uchebniku, napisannomu primenitel'no k Linux. Vot eta kniga i est' takoj uchebnik.
|ta glava ne zavodit v debri detalej i ne obsuzhdaet naibolee
slozhnye
Zdes' ne predpolagaetsya kakih-to predvaritel'nyh znanij, za isklyucheniem pervonachal'nogo znakomstva s personal'nym komp'yuterom i MS-DOS. No dazhe esli vy ne uspeli pobyvat' pol'zovatelem MS-DOS, vy vse ravno vse zdes' pojmete. Na pervyj vzglyad UNIX ochen' pohozh na MS-DOS (v konce-koncov fragmenty MS-DOS byli sproektirovany s oglyadkoj na operacionnuyu sistemu CP/M, kotoraya, v svoyu ochered', proektirovalas' s oglyadkoj na UNIX). No tol'ko pri ochen' uzh poverhnostnom vzglyade mozhno govorit' o pohozhesti UNIX i MS-DOS. Esli vy absolyutnyj novichok v mire personal'nyh komp'yuterov, etot uchebnik vam pomozhet.
I prezhde, chem nachat', prizyvaem:
ne bojtes' eksperimentirovat'.
Sistema vas ne ukusit. Rabotaya na nej vy
nichego ne smozhete slomat'. UNIX imeet vstroennye sredstva zashchity,
chtoby ne dat' "normal'nym" pol'zovatelyam (eto teper' i vy)
vozmozhnost' isportit' vazhnye dlya sistemy fajly. Samoe plohoe, chto
vy mozhete natvorit' - eto unichtozhit' vse svoi fajly, a togda,
mozhet byt' pridetsya i pereinstallirovat' zanovo sistemu
UNIX eto mnogozadachnaya, mnogopol'zovatel'skaya operacionnaya sistema. |to oznachaet, chto mnogo lyudej mozhet odnovremenno ispol'zovat' odin komp'yuter, vypolnyaya mnogo razlichnyh zadach. (|to sushchestvennoe otlichie ot MS-DOS, gde tol'ko odin chelovek mozhet ispol'zovat' v dannyj moment operacionnuyu sistemu). V UNIX pol'zovateli dolzhny sebya identificirovat' pri vhode, chto sostoit iz dvuh shagov: vvoda imeni (imya, po kotoromu vas identificiruet sistema) i vhodnoj parol', kotoryj yavlyaetsya vashim sekretnym slovom dlya otkrytiya vashego scheta (registracii v sisteme). Poskol'ku tol'ko vy znaete parol', nikto ne mozhet vojti v sistemu pod vashim imenem.
V tradicionnyh UNIX-sistemah sistemnyj administrator prisvoit
vam imya i nachal'nyj parol' pri vashej registracii v sisteme (pri
zavedenii v sisteme novogo pol'zovatelya). No poskol'ku na svoem
personal'nom komp'yutere vy i sistemnyj administrator, vy dolzhny
sebya (kak pol'zovatelya) zaregistrirovat' v sisteme, prezhde chem v
nee vojdete (smotrite Razdel 3.2.1 nizhe). Dlya dal'nejshih razgovorov
voz'mem uslovnoe imya ``larry
''.
Krome prochego, kazhdaya sistema UNIX imeet pripisannoe ej
hostname (hozyajskoe imya). |to hozyajskoe imya dobavlyaet mashine
haraktera i ocharovaniya. Hostname ispol'zuetsya dlya identifikacii
otdel'nyh mashin v seti, no dazhe esli vasha mashina ne v seti, ona
vse ravno dolzhna imet' hostname. V Razdele 4.10.2 my podrobno
rasskazhem ob ustanovke hostname na vashej mashine. Naprimer, imya
mashiny, obsuzhdaemoj nizhe - ``mousehouse
'' (myshinnaya norka).
Prezhde, chem vy smozhete ispol'zovat' sistemu, vy dolzhny
zaregistrirovat' sebya v sisteme. |to neobhodimo potomu, chto
nerazumno ispol'zovat' imya superpol'zovatelya (root
) dlya obychnyh
nuzhd. Pol'zovatel' root nuzhen dlya vypolneniya privilegirovannyh
komand i soprovozhdeniya sistemy, kak eto opisyvaetsya v Razdele
4.1.
Dlya togo, chtoby zaregistrirovat' sebya, vam neobhodimo zajti
v sistemu pod imenem root
i ispol'zovat' komandu useradd
ili
adduser
. Ob etoj procedure smotrite podrobnej v Razdele 4.4.
Pri vhode vy uvidite na ekrane podskazku, naprimer, takogo vida:
mousehouse login:
Vvedite svoe imya i nazhmite klavishu larry
napechataet sleduyushchee:
mousehouse login: larry
Password:
Teper' vvedite vash parol' (password). Pri vvode parol' ne budet otobrazhat'sya na ekrane, tak chto nabirajte vnimatel'nee. Esli vy nepravil'no nabrali parol', to uvidite na ekrane soobshchenie
Login incorrect
i vam sleduet popytat'sya eshche raz.
Kogda vy nakonec pravil'no vvedete imya pol'zovatelya i parol', vy oficial'no budete dopushcheny v sistemu i mozhete v nej svobodno puteshestvovat'.
Sistemnaya konsol' - eto monitor i klaviatura, svyazannye neposredstvenno s sistemoj. (Poskol'ku UNIX mnogopol'zovatel'skaya sistema, vy mozhete imet' dopolnitel'nye terminaly, svyazannye cherez posledovatel'nye porty s vashej sistemoj, no oni ne budut konsolyami). Linux, kak i nekotorye drugie versii UNIX, obespechivaet dostup k virtual'nym konsolyam (ili VC), kotorye pozvolyayut vojti v sistemu pod neskol'kimi imenami v odno vremya.
Dlya demonstracii etogo vojdite v sistemu (kak bylo pokazano
ranee). Teper' nazhmite login:
, to est' pered vami vtoraya virtual'naya konsol', a vy
voshli cherez pervuyu. CHtoby pereklyuchit'sya obratno na pervuyu VC,
nazhmite
Svezheinstallirovannyj Linux vozmozhno pozvolit vam rabotat' s
chetyr'mya pervymi VC, ispol'zuya ot
V to vremya, kak ispol'zovanie virtual'nyh konsolej ogranicheno (krome prochego, v kazhdyj moment vremeni vy mozhete videt' tol'ko odnu virtual'nuyu konsol') ono daet vam predstavlenie o mnogopol'zovatel'skih vozmozhnostyah UNIX. Poka vy rabotaete na VC #1, vy mozhete pereklyuchit'sya na VC #2 i nachat' rabotu nad chem-to drugim.
V bol'shinstve vashih issledovanij mira UNIX vy budete
obshchat'sya s nim cherez obolochku shell. Shell - eto prosto
programma, kotoraya vosprinimaet vvedennoe pol'zovatelem, (t.e.
komandy, kotorye vy napechataete) i transliruet eto v komandy
sisteme. |to mozhno sravnit' s programmoj COMMAND.COM
pod MS-DOS,
kotoraya delaet nechto pohozhee. Shell - eto lish' odin iz
interfejsov UNIX. Sushchestvuet mnogo razlichnyh interfejsov, takih
kak X Window System, kotoraya pozvolyaet vypolnyat' komandy
ispol'zuya mysh' i klaviaturu v sochetanii.
Kak tol'ko vy voshli, sistema zapuskaet shell i vy mozhete vvodit' dlya nego komandy. Vot korotkij primer. Kak raz Larry voshel v sistemu i sistema vnov' vydala podskazku:
mousehouse login: larry
Password: larry's password
Welcome to Mousehouse!
/home/larry#
``/home/larry#
'' eto podskazka shell, pokazyvayushchaya, chto on
gotov prinimat' komandy. (Podrobnee pro podskazky
pozzhe). Davajte poprosim sistemu sdelat' chto-nibud'
interesnen'koe:
/home/larry# make love
make: *** No way to make target `love'. Stop.
/home/larry#
Hm, kak okazalos', "make" - eto imya sushchestvuyushchej v sisteme programmy i shell pytalsya vypolnit' etu komandu. (ZHal', no sistema otneslas' k pros'be nedruzhestvenno).
|to podvodit nas k zhguchemu voprosu: CHto takoe komandy? CHto
proishodit, kogda vy vvodite ``make love
''? Pervoe slovo
komandnoj stroki ``make
'' eto imya komandy, kotoruyu predpolagaetsya
vypolnit'. Vse ostal'noe v komandnoj stroke vosprinimaetsya kak
argumenty komandy.
Primery:
/home/larry# cp foo bar
Zdes' imya komandy ``cp
'', a argumenty ``foo
'' i ``bar
''.
Kogda vy vvodite komandu, shell delaet neskol'ko veshchej. Vo-pervyh, smotrit na to, chto mozhet (dolzhno) byt' imenem komandy i yavlyaetsya li eto vnutrennej dlya shell komandoj. (Vnutrennyaya, eto komanda, kotoruyu shell znaet kak vypolnyat'. Sushchestvuet ryad takih komand, my o nih pogovorim pozzhe). Shell takzhe proveryaet, ne yavlyaetsya li komanda sinonimom drugoj ili trebuetsya podstanovka imeni. Esli etogo ne nado delat', shell ishchet sootvetstvuyushchuyu etomu imeni programmu na diske. Esli shell nahodit takuyu programmu, on ee vypolnyaet, peredavaya ej argumenty iz komandnoj stroki.
V nashem primere shell ishchet programmu po imeni make
i
pytaetsya vypolnit' ee s argumentom love
. make
- eto programma,
kotoraya chasto ispol'zuetsya pri kompilyacii bol'shih programm, ona
beret v kachestve argumenta imya "celevogo" fajla kompilyacii. V
sluchae ``make love
'' my prikazali komande make otkompilirovat'
love. Poskol'ku make ne smog najti fajla s takim imenem, on
soobshchil (neskol'ko zabavnym obrazom) o nevozmozhnosti vypolnit'
komandu i vernulsya v podskazku.
CHto sluchitsya, esli my vvedem komandu, a shell ne smozhet najti programmu s etoj komandoj? Davajte poprobuem:
/home/larry# eat dirt
eat: command not found
/home/larry#
Vse ochen' prosto, esli shell ne mozhet najti programmu s
imenem dannym v komandnoj stroke (zdes' ``eat
''), on vydaet
soobshchenie ob oshibke, kotoroe ob'yasnyaet prichinu nevypolneniya
komandy. Vy chasto budete videt' eto soobshchenie, esli budete
vvodit' imena komand s oshibkami. (naprimer, napechataete
``mkae love
'' vmesto ``make love
'').
Prezhde, chem idti dal'she, my rasskazhem, kak vyjti iz sistemy. Pri nalichii podskazki shell ispol'zujte komandu
/home/larry# exit
dlya vyhoda. Est' drugie sposoby vyhoda, no etot samyj bezopasnyj.
Vy takzhe dolzhny predstavlyat', kak mozhno menyat' parol'.
Komanda "passwd"
Vo mnogih operacionnyh sistemah (vklyuchaya UNIX) sushchestvuet koncepciya fajla, po kotoroj ego mozhno rassmatrivat' prosto, kak nabor informacii, kotoromu dano imya. Primerami fajlov budut: programma, kotoraya mozhet vypolnyat'sya, pis'mo, poluchennoe po elektronnoj pochte, napisannaya vami stat'ya. Sushchestvenno to, chto vse, chto hranitsya na diske, hranitsya v otdel'nyh fajlah.
Fajly identificiruyutsya po imenam. Naprimer, fajl, soderzhashchij
vashu stat'yu mozhet byt' sohranen pod imenem my-paper
. |ti imena
obychno kakim-to obrazom otrazhayut soderzhanie. Ne sushchestvuet
standartnogo formata imen fajlov, kak v MS-DOS i drugih
operacionnyh sistemah; v obshchem sluchae imena fajlov mogut
soderzhat' lyubye simvoly (krome /
- smotrite nizhe obsuzhdenie
formirovaniya "putej") i ogranicheny 256 simvolami po dline.
Odnovremenno s koncepciej fajla rassmotrim i koncepciyu
kataloga. Katalog
- eto sovokupnost' fajlov. Ego mozhno
rassmatrivat' kak "papku", soderzhashchuyu mnozhestvo razlichnyh fajlov.
Katalogi sami po sebe takzhe poluchayut imena, po kotorym vy ih
razlichaete. Katalogi organizovany v drevovidnuyu strukturu, t.e.
katalogi mogut soderzhat' drugie katalogi.
K fajlu mozhno obrashchat'sya po puti
(pathname
),
formiruemoj iz imeni
fajla, kotoromu predshestvuet imya kataloga, soderzhashchego fajl
Naprimer, skazhem, Larry imeet katalog, nazvannyj papers
,
kotoryj soderzhit tri fajla: history-final
, english-lit
, i
masters-thesis
. (Kazhdyj iz etih treh fajlov soderzhit informaciyu o
provodimyh Larry rabotah). Dlya togo, chtoby obratit'sya k fajlu
english-lit
, Larry mozhet ukazat' marshrut:
papers/english-lit
Kak vy vidite, imena katalogov i fajlov razdelyayutsya edinichnym sleshem (/). Poetomu imena fajlov sami po sebe ne mogut soderzhat' etot simvol. Pol'zovateli MS-DOS uvidyat v etom chto-to znakomoe, poskol'ku v MS-DOS dlya etogo ispol'zuetsya bekslesh (\).
Kak uzhe govorilos', katalogi mogut byt' vstavleny drug v druga.
Naprimer, pust' Larry v kataloge papers
imeet drugoj
katalog s nazvaniem
notes
. |tot katalog soderzhit fajly s imenami math-notes
i
cheat-sheet
. Put' fajla cheat-sheet
budet
papers/notes/cheat-sheet
Poetomu put' - eto marshrut, kotoryj nado prodelat', chtoby
dobrat'sya do konkretnogo fajla. Katalog vyshe dannogo
(pod)kataloga nazyvaetsya roditel'skim katalogom. Zdes'
katalog papers
yavlyaetsya roditel'skim dlya kataloga notes
.
Bol'shinstvo sistem UNIX imeet standartnuyu strukturu
katalogov, chto oblegchaet konkretnuyu ustanovku sistemy.
Struktura predstavlyaet iz sebya derevo katalogov, nachinayushcheesya s
kataloga ``/
'', izvestnogo pod nazvaniem "kornevoj katalog".
Katalogi nizhe /
otnosyatsya k chislu vazhnejshih podkatalogov:
sredi nih /bin
, /etc
, /dev
, i /usr
.
|ti katalogi v svoyu ochered'
soderzhat drugie katalogi, kotorye soderzhat sistemnye
konfiguracionnye fajly, programmy i t.d.
V chastnosti, kazhdyj
pol'zovatel' imeet domashnij katalog, kotoryj vydelyaetsya
pol'zovatelyu dlya hraneniya ego fajlov. V vysheprivedennom primere
vse fajly Larry (takie kak cheat-sheet
i history-final
)
soderzhalis' v domashnem kataloge Larry. Obychno pol'zovatel'skij
domashnij katalog nahoditsya pod katalogom /home
i nazyvaetsya
imenem pol'zovatelya. Tak domashnij katalog Larry budet
/home/larry
.
Na Ris. 3.2.8 predstavleno prostoe derevo katalogov. Ono dast vam nekotoroe predstavlenie o tom, kak organizuetsya derevo katalogov v vashej sisteme.
Komandy, kotorye vy daete shell, vydayutsya iz vashego
tekushchego kataloga.
Vy mozhete dumat' o vashem rabochem kataloge, kak o
kataloge v kotorom vy nahodites'. Pri nachal'nom vhode v sistemu
vashim rabochim katalogom avtomaticheski stanovitsya domashnij
katalog (v nashem sluchae /home/larry
). Pri obrashchenii k fajlu vy
mozhete obrashchat'sya k nemu s uchetom vashego mestopolozheniya, vmesto
togo, chtoby ukazyvat' polnyj put'.
/_____bin
|_dev
|_etc
|_home_____larry
| |_sam
|_lib
|_proc
|_tmp
|_usr__X386
|_bin
|_emacs
|_etc
|_g++-include
|_include
|_lib
|_local_____bin
| |_emacs
| |_etc
| |_lib
|_man
|_spool
|_src_____linux
|_tmp
Ris 3.1: Tipichnoe (urezannoe) derevo katalogov Unix
Vot naprimer, u Larry est' katalog papers
, a papers
soderzhit fajl history-final
. Esli Larry hochet posmotret' etot
fajl, on mozhet ispol'zovat' komandu
/home/larry# more /home/larry/papers/history-final
Komanda more prosto pokazyvaet fajl na ekrane porciyami.
Poskol'ku tekushchij rabochij katalog Larry /home/larry
, on vmesto
etogo mozhet obratit'sya k fajlu s uchetom svoego tekushchego
mestopolozheniya. Komanda budet
/home/larry# more papers/history-final
Tak chto vy mozhete nachinat' imya fajla (takogo kak
papers/final
) s simvola, otlichnogo ot ``/
'',
sistema
predpolagaet, chto vy obrashchaetes' k fajlu s uchetom vashego tekushchego
rabochego kataloga. |to nazyvayut otnositel'nym imenem (a polnyj
marshrut - polnoe (absolyutnoe) imya - t.e. put' ot kornya do dannogo
imeni).
Obolochki (shell), t.e. programmy, kotorye chitayut i vypolnyayut
komandy pol'zovatelya, mogut ispol'zovat'sya (odnovremenno v odnoj
sisteme) raznye. V bol'shinstve sistem Linux ispol'zuyutsya tcsh
ili
bash
pri nachal'noj registracii v sisteme. V tcsh
i bash
vy mozhete
obratit'sya k svoemu domashnemu katalogu, ispol'zuya til'du
(``~''). Naprimer, komanda
/home/larry# more ~/papers/history-final
ekvivalentna
/home/larry# more /home/larry/papers/history-final
Simvol ``~'' prosto zamenyaet imya vashego domashnego kataloga.
Vy takzhe mozhete obratit'sya k domashnemu katalogu drugogo
pol'zovatelya s pomoshch'yu til'dy. Imya ``~karl/letters
'' budet
interpretirovano shell, kak ``/home/karl/letters
'' (esli
/home/karl
- domashnij katalog dlya pol'zovatelya karl).
Ispol'zovanie til'dy uproshchaet obrashchenie; ne sushchestvuet kataloga
s imenem ``~'' - tak chto eto prosto "sintaksicheskij sahar",
kotoryj imeetsya v rasporyazhenii shell.
Pered tem, kak nachat', vazhno zametit', chto vse imena fajlov
i komand chuvstvitel'ny k bol'shim i malym bukvam (chego net v
sistemah tipa MS-DOS). Naprimer, komanda make
ochen' otlichaetsya ot
Make
ili MAKE
. To zhe otnositsya i k imenam katalogov.
Teper' my mozhem vojti v sistemu i uznat', kak obrashchat'sya k
fajlam i menyat' mestopolozhenie v fajlovoj sisteme, chtoby uproshchat'
svoyu zhizn' v nej. Komanda dlya peremeshcheniya po derevu katalogov -
cd
, (``change directory''). Vy skoro obratite vnimanie, chto
mnogie chasto ispol'zuemye komandy Unix sostoyat iz dvuh-treh bukv.
Format komandy cd
:
cd <directory>
gde <directory> - imya kataloga, v kotoryj vy zhelaete
perejti. Kak my uzhe govorili, kogda vy vhodite v sistemu, vy
avtomaticheski okazyvaetes' v svoem domashnem kataloge. Esli
Larry zhelaet dvinut'sya nizhe po derevu, on dolzhen ispol'zovat'
komandu
/home/larry# cd papers
/home/larry/papers#
Kak vidite, izmenilas' podskazka, otraziv izmenenie
mestopolozheniya (novyj rabochij katalog). Teper' on v kataloge
papers
i mozhet posmotret' na svoj fajl history-final
s pomoshch'yu
komandy
/home/larry/papers# more history-final
CHtoby vernut'sya nazad iz podkataloga papers
, nado
ispol'zovat' komandu
/home/larry/papers# cd ..
/home/larry#
(Obratite vnimanie na probel mezhdu ``cd
'' i ``..
''). Kazhdyj
katalog soderzhit imya ``..
'' , kotoroe otsylaet k roditel'skomu
(dlya dannogo kataloga) katalogu. Takzhe kazhdyj katalog
imeet imya ``.
'', kotoroe ssylaetsya na nego samogo. Poetomu
komanda
/home/larry/papers# cd .
nikuda ne perevedet.
V komande cd
vy mozhete ispol'zovat' marshruty. CHtoby perejti v
domashnij katalog Karla, vy mozhete vospol'zovat'sya komandoj
/home/larry/papers# cd /home/karl
/home/karl#
Ispol'zuya komandu cd
bez argumentov vy iz lyubogo mesta
dereva vernetes' v svoj domashnij katalog.
/home/karl# cd
/home/larry#
Teper' vy znaete, kak hodit'-brodit' po katalogam, no
veroyatno voznikaet vopros:"Nu i chto s togo?" Samo po sebe
hozhdenie po katalogam bespolezno, davajte poznakomimsya s novoj
komandoj ls
. ls (LiSt) vydaet na ekran perechen' fajlov i
katalogov (po umolchaniyu iz tekushchego kataloga). Naprimer,
/home/larry# ls
Mail
letters
papers
/home/larry#
Zdes' my vidim, chto u Larry tri "edinicy hraneniya" v ego
tekushchem kataloge: Mail
, letters
i papers
.
No eto malo, chto
govorit: katalogi eto ili fajly? Mozhno ispol'zovat' opciyu
-F
v komande ls
, chtoby poluchit'
bol'she informacii.
/home/larry# ls -F
Mail/
letters/
papers/
/home/larry#
Pripisannye sprava k imenam fajlov / govoryat o tom, chto eto (pod)katalogi.
Ispol'zovanie ls -F
(obratite vnimanie "-F
" pishetsya bez
probela) mozhet dat' takzhe ``*
'' v konce nekotoryh imen fajlov.
|to budet govorit' o tom, chto eto vypolnyaemye fajly ili
programmy. Esli, pri vyzove ls -F
, nichego sprava ne pripisano k
imeni, to eto "normal'nyj" fajl, t.e. ne katalog i ne
vypolnyaemyj fajl.
V obshchem, kazhdaya komanda UNIX mozhet imet' neskol'ko opcij v
dopolnenie k drugim argumentam. |ti opcii obychno zapisyvayutsya so
znakom ``-
'', kak eto bylo pokazano na primere ls -F
.
Opciya -F
soobshchaet komande ls
, chto neobhodimo vydat' dopolnitel'nuyu
informaciyu o tipe fajlov.
Esli vy napishete v komande ls
imya kataloga, to ona vydast
soderzhimoe ukazannogo kataloga.
/home/larry# ls -F papers
english-lit
history-final
masters-thesis
notes/
/home/larry#
Ili, chtoby bylo interesnee, davajte posmotrim, chto imeetsya v
sistemnom kataloge /etc/
.
/home/larry# ls /etc
Images ftpusers lpc rc.new shells
adm getty magic rc0.d startcons
bcheckrc gettydefs motd rc1.d swapoff
brc group mount rc2.d swapon
brc~ inet mtab rc3.d syslog.conf
csh.cshrc init mtools rc4.d syslog.pid
csh.login init.d pac rc5.d syslogd.reload
default initrunlvl passwd rmt termcap
disktab inittab printcap rpc umount
fdprm inittab.old profile rpcinfo update
fstab issue psdatabase securetty utmp
ftpaccess lilo rc services wtmp
/home/larry#
(Dlya vyshedshih iz MS-DOS pol'zovatelej polezno obratit' vnimanie, chto imena fajlov mogut byt' dlinnee 8 simvolov i soderzhat' tochku na lyuboj pozicii. Mozhno dazhe ispol'zovat' neskol'ko tochek v odnom imeni).
Davajte podnimemsya vverh po derevu
cd ..
'', a zatem spustimsya
v drugoj katalog (/usr/bin
).
/home/larry# cd ..
/home# cd ..
/# cd usr
/usr# cd bin
/usr/bin#
Vy, razumeetsya, mozhete peredvigat'sya po katalogam bol'shimi
shagami, naprimer, srazu vypolnit' cd /usr/bin
.
Postarajtes' pogulyat' po katalogam, ispol'zuya komandy ls i
cd. V nekotoryh sluchayah vy mozhete naporot'sya na razdrazhayushchee
soobshchenie ``Permission denied
''(obrashchenie zapreshcheno). |to vsego
lish' srabotala sistema zashchity UNIX, chtoby vypolnyat' komandy v teh
ili inyh katalogah vy dolzhny imet' na eto razreshenie. Podrobnee
ob etom pogovorim v Razdele 3.9.
Pora poznakomit'sya s tem, kak sozdavat' katalogi. |to
svyazano s ispol'zovaniem komandy mkdir
. Poprobujte sleduyushchee:
/home/larry# mkdir foo
/home/larry# ls -F
Mail/
foo/
letters/
papers/
/home/larry# cd foo
/home/larry/foo# ls
/home/larry/foo#
Nashi vam pozdravleniya! Vy tol'ko chto sozdali novyj katalog i zashli v nego. Poskol'ku poka net fajlov v etom novom kataloge, davajte poznakomimsya s tem, kak kopirovat' fajly.
Kopirovanie fajlov osushchestvlyaetsya komandoj cp
(CoPy):
/home/larry/foo# cp /etc/termcap .
/home/larry/foo# cp /etc/shells .
/home/larry/foo# ls -F
shells termcap
/home/larry/foo# cp shells bells
/home/larry/foo# ls -F
bells shells termcap
/home/larry/foo#
Komanda cp
kopiruet fajly, perechislennye v komandnoj stroke,
v fajl ili katalog, ukazannyj poslednim argumentom.
.
''dlya ssylki na tekushchij katalog.
Novaya komanda s imenem mv
(MoVe) peremeshchaet fajly vmesto ih
kopirovaniya. Sintaksis komandy ocheviden.
/home/larry/foo# mv termcap sells
/home/larry/foo# ls -F
bells sells shells
/home/larry/foo#
Obratite vnimanie, chto teper' termcap uzhe ne sushchestvuet, a
na ego meste fajl sells
. |to mozhno ispol'zovat' dlya
pereimenovaniya fajlov, chto my sejchas i sdelali. No mozhno i
perenosit' fajly v sovsem drugie katalogi.
Vnimanie! Komandy mv
i cp
unichtozhat soderzhimoe fajla v
kotoryj oni pishut (esli on sushchestvoval), ne sprashivaya vashego
razresheniya. Bud'te vnimatel'ny, kogda vy perenosite fajl v drugoj
katalog: tam uzhe mozhet sushchestvovat' fajl s takim imenem i vy
ego zatrete.
My tut s vami "narifmovali" nenuzhnyh fajlov, izuchaya rabotu
komandy ls
. Dlya udaleniya fajlov ispol'zuetsya komanda rm
(ReMove).
/home/larry/foo# rm bells sells
/home/larry/foo# ls -F
shells
/home/larry/foo#
U nas nichego ne ostalos', krome shells
, no ne budem
perezhivat'. Obratite vnimanie, chto komanda rm
ne budet vas
peresprashivat' pered udaleniem, tak chto bud'te ostorozhny.
Rodstvennaya rm
komanda rmdir
. |ta komanda udalyaet
katalogi, no tol'ko pustye katalogi. Esli v kataloge est' hot'
kakie-nibud' fajly ili podkatalogi, ona raspishetsya v bessilii.
Komandy more
i cat
ispol'zuyutsya dlya prosmotra soderzhimogo
fajlov. more
vydaet fajl na displej "poekranno", v to vremya, kak
cat vydaet ves' fajl razom.
CHtoby posmotret' fajl shells
, ispol'zuem komandu
/home/larry/foo# more shells
Pri ispol'zovanii komandy more
nazhimajte klavishu
A teper' poprobujte komandu cat
etc/termcap/. Tekst
promel'knet slishkom bystro, chtoby uspet' ego prochitat'. Na samom
dele komanda ``cat
'' (conCATenate) v osnovnom ispol'zuetsya dlya
drugih celej, dlya toj zhe konkatenacii neskol'kih fajlov. |to v
dal'nejshem budet obsuzhdat'sya.
Prakticheski kazhdyj UNIX imeet to, chto nazyvaetsya
"Rukovodstvo" - man
( ``manual pages''). |ta komanda man
soderzhit dokumentaciyu na razlichnye komandy sistemy, resursy,
konfiguracionnye fajly. Naprimer, esli vy hotite najti informaciyu
o drugih opciyah komandy ls
, vvedite
/home/larry# man ls
i vam na ekran budut vyvedeny stranicy Rukovodstva.
K sozhaleniyu, bol'shinstvo stranic rukovodstva napisany s orientaciej na pol'zovatelej, imeyushchih nekotorye predstavleniya o rabote sootvetstvuyushchih komand. Poetomu stranicy Rukovodstva obychno soderzhat spravochnye dannye po komandam, a ne uchebnyj material.
No Rukovodstvo neocenimo dlya osvezheniya pamyati, esli vy zabyli sintaksis komandy. Rukovodstvo mozhet takzhe mnogo rasskazat' vam o komandah, kotorye my dazhe ne upomyanem v etoj knige.
YA predlagayu vam posmotret' v Rukovodstve te komandy, kotorye
my uzhe obsuzhdali i vse, s kotorymi my budem vstrechat'sya. Vy
obnaruzhite, chto ne na vse komandy est' Rukovodstvo. Tomu
neskol'ko prichin. Odna - nekotorye stranicy Rukovodstva eshche prosto
ne napisany (the Linux Documentation Project - programma
podgotovki dokumentacii dlya Linux kak by otvechaet za reshenie
etoj problemy. My uzhe sobrali bol'shuyu chast' dokumentacii).
Vo-vtoryh, komanda mozhet byt' vnutrennej komandoj shell ili
sinonimom (alias), chto obsuzhdalos' v Razdele 3.2.4, v kazhdom iz
etih sluchaev dlya nih net sobstvennyh stranic. Voz'mem dlya primera
cd
, kotoraya yavlyaetsya vnutrennej komandoj shell. Shell vypolnyaet
etu komandu, no ona ne imeet svoej otdel'noj programmy.
|tot razdel predstavlyaet nekotorye naibolee poleznye bazovye komandy UNIX, vklyuchaya te, o kotoryh govorili v predydushchem razdele.
Obratite vnimanie, chto opcii obychno nachinayutsya s ``-
'' i vo
mnogih sluchayah neskol'ko odnobukvennyh opcij mogut sledovat' za
odnim minusom, zapisannye slitno. Naprimer, vmesto ispol'zovaniya
ls -l -F
, mozhno ispol'zovat' ls -lF
.
Vmesto perechisleniya vseh vozmozhnyh opcij kazhdoj komandy, my budem govorit' tol'ko o teh, kotorye polezny ili vazhny v dannoe vremya. Dejstvitel'no, bol'shinstvo iz etih komand imeet bol'shoe chislo opcij (bol'shinstvo iz kotoryh nikogda ne ispol'zuetsya). Vy mozhete dlya kazhdoj komandy s pomoshch'yu man posmotret' vse vozmozhnye opcii.
Obratite takzhe vnimanie na to, chto mnogie iz komand berut
spisok fajlov ili katalogov, kak argumenty, oboznachennye kak
``<file1> ... <fileN>''.
Naprimer, komanda cp
beret v kachestve
argumentov spisok fajlov, kotorye nado kopirovat', za kotorymi
sleduet imya celevogo fajla ili kataloga. Pri kopirovanii
neskol'kih fajlov v kachestve celevogo mozhet vystupat' tol'ko
katalog.
Izmenyaet tekushchij rabochij katalog.
Sintaksis: cd <directory>
;
<directory>
- katalog, v kotoryj perejti (``.'' ssylaetsya
na tekushij katalog, ``..'' - na roditel'skij katalog).
Primer: cd ../foo
perevodit iz tekushchego kataloga
v ../foo
.
Vydaet informaciyu o fajlah v kataloge.
Sintaksis: ls <file1> ... <fileN>
Gde <file1> ... <fileN>
imena fajlov ili katalogov,
informaciyu pro kotorye nado vydat'.
Opcii: Zdes' bol'she opcij, chem vy dumaete. Naibolee
chasto ispol'zuemye: -F
(dlya predstavleniya informacii o tipah
fajlov), i -l
(vydaet v dlinnom (``long'') formate
informaciyu o razmerah fajlov, vladel'cah, pravah dostupa i
t.d. V detalyah eto budet obsuzhdat'sya dalee).
Primer: ls -lF /home/larry
vydast soderzhimoe kataloga
/home/larry
.
Kopiruet fajl(y) v fajl ili katalog.
Sintaksis: cp <file1> ... <fileN> <destination>
Gde <file1> ... <fileN>
imena kopiruemyh fajlov, a
<destination>
fajl ili katalog, v kotoryj kopiruyut.
Primer: cp ../frog joe
kopiruet fajl ../frog
v fajl ili katalog joe
.
Peremeshchaet fajl(y) v drugoj fajl ili katalog.
|ta komanda ne ekvivalentna kopirovaniyu s posleduyushchim
unichtozheniem originala. Ona mozhet byt' ispol'zovana dlya
pereimenovaniya fajlov, kak komanda RENAME
iz MS-DOS.
Sintaksis: mv <file1> ... <fileN> <destination>
Gde <file1> ... <fileN>
imena peremeshchaemyh fajlov, a
<destination>
imya fajla ili kataloga, v kotoryj
peremeshchayut.
Primer: mv ../frog joe
peremeshchaet fajl ../frog
v fajl ili
katalog joe
.
Udalyaet fajly.
Imejte v vidu, kogda v UNIX udalyayutsya fajly, oni
nevosstanovimy (ne kak v MS-DOS, gde vy mozhete "razudalit'"
fajl).
Sintaksis: rm <file1> ... <fileN>
Gde <file1> ... <fileN>
imena udalyaemyh fajlov.
Opcii: -i
potrebuet vashego podtverzhdeniya pered udaleniem
fajla.
Primer: rm -i /home/larry/joe /home/larry/frog
udalyaet fajly
joe
i frog
v kataloge /home/larry
.
Sozdaet novye katalogi.
Sintaksis: mkdir <dir1> ... <dirN>
Gde <dir1> ... <dirN>
sozdavaemye katalogi.
Primer: mkdir /home/larry/test
sozdaet katalog
test
v
kataloge /home/larry
.
|ta komanda udalyaet pustye katalogi.
Pri ispol'zovanii rmdir
vash tekushchij rabochij katalog
dolzhen nahodit'sya vne udalyaemogo kataloga.
Sintaksis: rmdir <dir1> ... <dirN>
Gde <dir1> ... <dirN>
udalyaemye katalogi.
Primer: rmdir /home/larry/papers
udalyaet katalog
/home/larry/papers
, esli on pustoj.
Vydaet stranicu Rukovodstva po dannoj komande ili resursu.
(zdes' "resurs" - eto lyubaya sistemnaya utilita, kotoraya ne
yavlyaetsya komandoj, naprimer bibliotechnaya funkciya).
Sintaksis: man <command>
Gde <command>
imya komandy ili resursa, o kotorom
zaprashivaetsya informaciya.
Primer: man ls
- daet pomoshch' po komande ls
.
Vydaet soderzhimoe nazvannyh fajlov poekranno.
Sintaksis: more <file1> ... <fileN>
Gde <file1> ... <fileN>
otobrazhaemye fajly.
Primer: more papers/history-final
predstavlyaet fajl
papers/history-final
.
Ispol'zuetsya dlya konkatenacii fajlov.
cat
ispol'zuetsya takzhe dlya vydachi polnogo soderzhaniya fajla
razom
Sintaksis: cat <file1> ... <fileN>
Gde <file1> ... <fileN>
vydavaemye fajly.
Primer: cat letters/from-mdw
vydaet na displej fajl
letters/from-mdw
.
Prosto povtoryaet argumenty.
Sintaksis: echo <arg1> ... <argN>
Gde <arg1> ... <argN>
"povtoryaemye" argumenty.
Primer: echo "Hello world"
vydaet na ekran ``Hello world
''.
vydaet vse stroki v nazvannom fajle(lah),
kotorye soderzhat zadannyj obrazec.
Sintaksis: grep <pattern> <file1> ... <fileN>
Gde <pattern>
- obrazec (predstavlennyj regulyarnym
vyrazheniem) i <file1> ... <fileN>
- fajly,
v kotoryh proizvoditsya poisk.
Primer: grep loomer /etc/hosts
vydast vse stroki, v kotoryh
fajl /etc/hosts
, soderzhit obrazec ``loomer
''.
Fajlovaya sistema est' sobranie fajlov i ierarhiya katalogov. YA obeshchal povodit' vas po fajlovoj sisteme - i vremya nastalo. U vas dostatochno intellekta i znanij izvlech' pol'zu iz togo, chto ya govoryu i u vas est' karta dorog. (Smotrite Ris. 3.2.8).
Pervo-napervo vernemsya v kornevoj katalog (cd /
) i
sdelaem ls -F
. Vy, ochevidno, uvidite katalogi:
bin
, dev
, etc
,
home
, install
, lib
, mnt
, proc
, root
,
tmp
, user
, usr
i var
.
(Mozhete uvidet' i neskol'ko otlichnyj variant - ne volnujtes',
razlichnye versii Linux mogut imet' otlichiya).
Prismotrimsya k kazhdomu katalogu.
bin
- eto sokrashchenno ot ``binaries'' (t.e. dvoichnye ili
vypolnyaemye fajly). Zdes' nahoditsya mnogo vazhnyh sistemnyh
programm. Ispol'zujte komandu ``ls -F/bin
'' chtoby
posmotret' imeyushchijsya zdes' spisok fajlov. Vy mozhete
obnaruzhit' zdes' uzhe znakomye vam komandy, vrode cp
,
ls
i mv
. |to i est' programmy sootvetstvuyushchih komand. Kogda,
naprimer, vy ispol'zuete komandu cp
, vy vypolnyaete programmu
/bin/cp
.
Ispol'zuya ls -F
, vy uvidite, chto bol'shinstvo (esli ne vse)
fajlov v /bin
imeyut sprava ot imeni zvezdochku (``*
''). |to
govorit o tom, chto fajly vypolnyaemye, kak opisano v Razdele
3.3.2.
Sleduyushchaya ostanovka na nashem puti - dev
. Vnov'
posmotrite na soderzhimoe s pomoshch'yu ls -F
.
"Fajly" v /dev
izvestny kak drajvery ustrojstv - oni
ispol'zuyutsya dlya dostupa k ustrojstvam i resursam sistemy,
takim kak diski, modemy, pamyat' i t.d. Naprimer, kak vy
mozhete chitat' dannye iz fajla, tochno takzhe vy mozhete chitat'
vhodnye signaly ot myshi, imeya dostup k /dev/mouse
. Imena
fajlov, nachinayushchiesya na fd
- eto diskovody gibkih diskov.
fd0
- pervyj diskovod, fd1
- vtoroj. Teper' samye shustrye iz
vas zametyat, chto zdes' imeetsya bol'she diskovodov, chem te
dva, kotorye mnoyu upominalis': oni predstavlyayut
specificheskie tipy diskovodov. Naprimer, fd1H1440
predstavlyaet dostup k high-density, 3.5" disketam na
diskovode 1.
Vot perechen' nekotoryh iz naibolee ispol'zuemyh fajlov ustrojstv.
/dev/console/
otnositsya k sistemnoj konsoli, t.e. k
monitoru, napryamuyu svyazannomu s sistemoj.
/dev/ttyS
i /dev/cua
ustrojstva ispol'zuyutsya dlya
dostupa k posledovatel'nym portam. Naprimer, /dev/ttyS0
otnositsya k ``COM1'' pod MS-DOS. Ustrojstva /dev/cua
otnosyatsya k "zvonyashchim" (``callout'') ustrojstvam, kotorye
ispol'zuyutsya sovmestno s modemami.
hd
, imeyut dostup k zhestkim
diskam. /dev/hda
otnositsya ko vsemu pervomu zhestkomu disku,
a hda1
tol'ko k pervomu razdelu /dev/hda
.
sd
- SCSI-drajvery. Esli
u vas SCSI zhestkij disk, vmesto dostupa k nemu cherez
/dev/hda
, vy budete obrashchat'sya k /dev/sda
.
SCSI lenty
dostupny cherez ustrojstva st
, a SCSI CD-ROM cherez sr
.
lp
obespechivayut dostup k
parallel'nym portam. /dev/lp0
otnositsya k ``LPT1'' v MS-DOS.
/dev/null
ispol'zuetsya kak "chernaya dyra" - lyubye dannye,
poslannye syuda, kanut v Letu. Esli vy hotite podavit' vyvod
komandy na ekran, vy mozhete perenapravit' etot vyvod v
/dev/null
. My ob etom pozzhe eshche pogovorim.
/dev/tty
otnosyatsya k
"virtual'nym konsolyam" vashej sistemy (dostup putem nazhatiya
/dev/tty1
sootvetstvuet pervoj
VC, /dev/tty2
sootvetstvuet vtoroj i t.d.
/dev/pty
, eto
"psevdoterminaly". Oni ispol'zuyutsya dlya vhoda s udalennyh
"terminalov". Naprimer, esli vasha mashina v seti, vhod k vam
po telnet budet ispol'zovat' odno iz ustrojstv /dev/pty
./etc
soderzhit mnozhestvo vsevozmozhnyh sistemnyh fajlov
konfiguracii. Oni vklyuchayut /etc/passwd
(fajl parolej),
/etc/rc
(komandnyj fajl inicializacii) i t.d.
/sbin
ispol'zuetsya dlya hraneniya vazhnyh sistemnyh
dvoichnyh fajlov, ispol'zuemyh sistemnym administratorom.
home
soderzhit domashnie katalogi pol'zovatelej.
Naprimer, /home/larry
- domashnij katalog pol'zovatelya
``larry
''. Na vnov' installirovannoj sisteme etot katalog
mozhet byt' pust v svyazi s vremennym otsutstviem
zaregistrirovannyh pol'zovatelej.
/lib
soderzhit obrazy razdelyaemyh bibliotek
(shared library images). |ti fajly
soderzhat kod, kotoryj mogut ispol'zovat' mnogie programmy.
Vmesto togo, chtoby kazhdaya programma imela svoyu sobstvennuyu
kopiyu etih vypolnyaemyh fajlov, oni hranyatsya v odnom
obshchedostupnom meste - v /lib
. |to pozvolyaet sdelat'
vypolnyaemye fajly men'she i sekonomit mesto v sisteme.
/proc
-
eto "virtual'naya fajlovaya sistema", v kotoroj
fajly hranyatsya v pamyati, a ne na diske. Oni svyazany s razlichnymi
processami, proishodyashchimi v sisteme, i pozvolyayut poluchit'
informaciyu o tom, chto delayut programmy i processy v ukazannoe
vremya. Bolee detal'no my rassmotrim eto v Razdele 3.11.1.
Mnogie programmy nuzhdayutsya v sozdanii rabochih fajlov,
kotorye nuzhny korotkoe vremya. Kanonicheskoe mesto dlya etih
fajlov v /tmp
(tam obychno chashche provoditsya uborka musora).
/usr
- eto ochen' vazhnyj katalog.
On sostoit iz ryada
podkatalogov, kotorye v svoyu ochered' soderzhat naibolee
vazhnye i poleznye programmy i fajly konfiguracii,
ispol'zuemye sistemoj.
Razlichnye katalogi, opisannye vyshe, neobhodimy dlya
normal'nogo funkcionirovaniya sistemy, no bol'shinstvo veshchej,
soderzhashchihsya v /usr
neobyazatel'ny dlya sistemy. No eto takie
neobyazatel'nye veshchi, kotorye delayut sistemu poleznoj i
interesnoj. Bez /usr
vy by imeli dostatochno zanudnuyu
sistemu, soderzhashchuyu tol'ko programmy, vrode cp
i ls
.
/usr
soderzhit mnogo bol'shih programmnyh paketov i
konfiguracionnyh fajlov, kotorye ih soprovozhdayut.
/usr/X386
soderzhit The X Window System,
esli vy ee
installirovali. The X Window System - eto moshchnaya
graficheskaya sreda, kotoraya soderzhit bol'shoe kolichestvo
graficheskih utilit i programm, otobrazhayushchih "okna" na vashem
ekrane. Esli vy znakomy s Microsoft Windows ili Macintosh
environments, to X Windows budet vyglyadet' ves'ma pohozhe.
Katalog /usr/X386
soderzhit vse vypolnyaemye i
konfiguracionnye fajly X Window, a takzhe fajly podderzhki.
Bolee detal'no eto budet obsuzhdat'sya v Razdele 5.1.
/usr/bin
nastoyashchee hranilishche dlya razlichnyh programm
UNIX. On soderzhit bol'shinstvo vypolnyaemyh programm, kotoryh
net ni v kakih drugih mestah, naprimer, v tom zhe /bin
ih net.
Tochno takzhe, kak i /etc
, soderzhit vsevozmozhnye
sistemnye programmy i konfiguracionnye fajly. /usr/etc
soderzhit dazhe bol'she utilit i fajlov. V obshchem, fajly,
nahodyashchiesya v /usr/etc
nesushchestvenny dlya sistemy, v otlichie
ot teh, kotorye nahodyatsya v /etc
, i ochen' sushchestvenny.
/usr/include soderzhit include-fajly dlya
kompilyatora Si. |ti fajly (bol'shinstvo imen kotoryh
zakanchivaetsya na .h (ot slova ``header'') ob'yavlyayut imena
struktur dannyh, podprogramm i konstant, ispol'zuemyh pri
napisanii programm na Si. Te fajly, kotorye nahodyatsya v
/usr/include/sys
v obshchem sluchae ispol'zuyutsya pri
programmirovanii na sistemnom urovne UNIX. Esli vy znakomy s
yazykom programmirovaniya Si, zdes' vy najdete takie hedery
(fragmenty programm, vstavlyaemye obychno v nachalo programmy),
stdio.h
, kotorye opisyvayut takie funkcii, kak printf()
.
/usr/g++-include
soderzhit include-fajly dlya
kompilyatora Ci++ (ochen' pohozhie na /usr/include
).
/usr/lib
soderzhit biblioteki-"zaglushki" i
"staticheskie" biblioteki, ekvivalentnye fajlam iz /lib
. Pri
kompilyacii programma "svyazyvaetsya" s bibliotekami, nahodyashchimisya
v /usr/lib
, kotorye v svoyu ochered' napravlyayut
programmy obrashchat'sya v /lib
, esli im nuzhet aktual'nyj kod.
Krome togo, mnogie drugie programmy hranyat v /usr/lib
svoi
konfiguracionnye fajly.
/usr/local
v bol'shoj stepeni
pohozh na /usr
- on
soderzhit razlichnye programmy i fajly, nesushchestvennye dlya
sistemy, no prevrashchayushchie ee v udovol'stvie i vostorg. V obshchem,
eti programmy, nahodyashchiesya v /usr/local
specializiruyutsya na
specifike vashej sistemy, t.e. /usr/local
sil'no otlichaetsya v
razlichnyh UNIX. Zdes' vy najdete takie bol'shie programmnye
pakety, kak TeX (sistema formatirovaniya dokumentov) i Emacs
(bol'shoj i moshchnyj redaktor), esli vy ih ustanovite.
|tot katalog soderzhit stranicy Rukovodstva.
Zdes' dva podkataloga dlya kazhdogo "razdela" Rukovodstva.
(S pomoshch'yu komandy "man man" vy mozhete poluchit' bolee
podrobnuyu informaciyu). Naprimer, /usr/man/man1
soderzhit
ishodnye teksty (neotformatirovannyj original) stranic
Rukovodstva v razdele 1 i /usr/man/cat1
soderzhit
otformatirovannye stranicy dlya razdela 1.
/usr/src
soderzhit ishodnye kody
(neotkompilirovannye programmy) dlya razlichnyh programm vashej
sistemy. Naibolee vazhnaya veshch' zdes', eto /usr/src/linux
,
soderzhashchij ishodnye kody yadra Linux.
/var
soderzhit katalogi, kotorye chasto menyayutsya v
razmere ili imeyut tendenciyu bystro rasti. Mnogie iz etih
katalogov "kvartirovalis'" v /usr
, no poskol'ku my
stremimsya sdelat' ego dostatochno stabil'nym, katalogi, kotorye
chasto menyayutsya byli pereneseny v /var
. K chislu takih
katalogov otnosyatsya:
/var/adm
soderzhit razlichnye fajly, interesnye
sistemnomu administratoru, specificheskie sistemnye fajly,
fiksiruyushchie oshibki i problemy, voznikayushchie v sisteme. Drugie
fajly fiksiruyut vhody v sistemu, kak i neudachnye popytki
vojti. |to budet obsuzhdat'sya v Glave 4.
/var/spool
soderzhit fajly, kotorye predvaritel'no
formiruyutsya dlya drugih programm. Naprimer, esli vasha mashina
podklyuchena k seti, vhodnaya pochta budet pomeshchat'sya v
/var/spool/mail
do teh por, poka vy ne prochitaete ee ili ne
udalite. Vhodyashchie i ishodyashchie novosti pomeshchayutsya v
/var/spool/news
i t.d.
Kak ya uzhe mnogo raz govoril, UNIX - eto mnogozadachnaya, mnogopol'zovatel'skaya operacionnaya sistema. Mnogozadachnost' ochen' polezna - odnazhdy privyknuv k nej, vy budete vsegda ee ispol'zovat'. Prezhde vsego, vy smozhete vypolnyat' zadachi v fonovom rezhime, pereklyuchat' zadachi i ob'edinyat' ih v konvejer, dostigaya slozhnyh rezul'tatov prostymi sredstvami.
Mnogie iz vozmozhnostej, kotorye my budem obsuzhdat' v etom razdele, obespechivayutsya samoj obolochkoj (shell). Bud'te vnimatel'ny, ne putajte UNIX (fakticheskuyu operacionnuyu sistemu) s obolochkoj - obolochka, eto lish' interfejs s nahodyashchejsya za nej sistemoj. Obolochka obespechivaet vypolnenie gromadnogo chisla funkcij pomimo sobstvenno UNIX.
Obolochka - eto ne tol'ko interpretator interaktivnyh komand, kotorye vy mozhete vvesti, poluchiv ot obolochki podskazku (gotovnosti prinimat' komandy). |to takzhe moshchnyj komandnyj yazyk, kotoryj pozvolyaet pisat' programmy (shell-scripts), ob'edinyayushchie neskol'ko komand v komandnyj fajl. Pol'zovateli MS-DOS pochuvstvuyut zdes' nechto shozhee s ``batch-fajlami''. Ispol'zovanie programm na yazyke obolochki (shell) - eto ochen' moshchnoe sredstvo, kotoroe pozvolyaet avtomatizirovat' i i sushchestvenno povysit' effektivnost' ispol'zovaniya UNIX. Smotrite dopolnitel'no v Razdele 3.13.1.
Sushchestvuet neskol'ko tipov obolochek v mire UNIX. Dve glavnye
- eto ``Bourne shell''(shell Baurna) i ``C shell'. Shell Baurna
(ili prosto shell) ispol'zuet komandnyj sintaksis, pohozhij na
pervonachal'no dlya UNIX pridumannyj (vrode UNIX System III). V
bol'shinstve UNIX-sistem shell Baurna imeet imya /bin/sh
(gde sh
sokrashchenie ot ``shell''). C shell ispol'zuet inoj sintaksis,
chem-to napominayushchij sintaksis yazyka programmirovaniya Si. V
bol'shinstve UNIX-sistem on imeet imya /bin/csh
.
V Linux est' neskol'ko variacij etih obolochek. Dve naibolee
chasto ispol'zuemye, eto Novyj Shell Baurna (Bourne Again Shell)
ili ``Bash'' (/bin/bash
) i Tcsh (/bin/tcsh
).
Bash - eto razvitie
prezhnego shell s dobavleniem mnogih poleznyh vozmozhnostej,
chastichno soderzhashchihsya v C shell. Poskol'ku Bash mozhno
rassmatrivat' kak nadmnozhestvo sintaksisa prezhnego shell, lyubaya
programma, napisannaya na dobrom starom shell Baurna dolzhna
rabotat' i v Bash. Dlya teh, kto predpochitaet ispol'zovat'
sintaksis C shell, Linux podderzhivaet Tcsh, kotoryj
yavlyaetsya rasshirennoj versiej C shell.
Tip obolochki, kotoruyu vy reshili ispol'zovat' - eto pochti kak
vybor religii. Nekotorye predpochitayut sintaksis shell Baurna s
dopolnitel'nymi vozmozhnostyami, predostavlyaemymi Bash, a nekotorye -
bolee strukturirovannyj sintaksis C shell. Dlya
"normal'nyh" komand, takih kak cp
i ls
, tip ispol'zuemogo vami
shell nikakoj roli ne igraet. Tol'ko kogda vy nachnete pisat'
komandnye fajly ili ispol'zovt' nekotorye novye svojstva
obolochek, razlichiya mezhdu nimi stanovyatsya sushchestvennymi.
Pri obsuzhdenii dalee nekotoryh svojstv obolochek my budem
obrashchat' vnimanie na razlichie mezhdu Baurnovskim shell i C shell.
(Esli vam eto dejstvitel'no ochen' interesno, pochitajte
Rukovodstvo po povodu bash
i tcsh
).
Klyuchevoe svojstvo bol'shinstva obolochek Unix - eto
sposobnost' ssylat'sya srazu bolee, chem na odin fajl, ispol'zuya
dlya etogo special'nye simvoly. |ti, tak nazyvaemye "dikie karty"
(wildcards), pozvolyayut ssylat'sya, skazhem, na vse fajly,
soderzhashchie simvol "n
".
Uajldkard ``*'' otnositsya k lyubomu simvolu ili stroke
simvolov v imeni fajla. Naprimer, kogda vy ispol'zuete simvol
``*
'' v imeni fajla shell zamenyaet ee vsemi vozmozhnymi imenami
fajlov iz kataloga, na kotoryj vy ssylaetes'. Vot prosten'kij
primer. Predpolozhim, chto Larry imeet fajly frog
, joe
i
stuff
v
svoem tekushchem kataloge:
/home/larry# ls
frog joe stuff
/home/larry#
Dlya obrashcheniya srazu ko vsem fajlam s bukvoj ``o
'' v imeni,
my mozhem ispol'zovat' komandu
/home/larry# ls *o*
frog joe
/home/larry#
Kak vidite, ``*
'' uajldkard byla zamenena vsemi
vozmozhnymi imenami fajlov iz imevshihsya v tekushchem kataloge.
Ispol'zovanie prosto ``*
''dast sovpadenie so vsemi imenami,
poskol'ku vse simvoly sovpadayut s uajldkard.
/home/larry# ls *
frog joe stuff
/home/larry#
Vot eshche neskol'ko primerov.
/home/larry# ls f*
frog
/home/larry# ls *ff
stuff
/home/larry# ls *f*
frog stuff
/home/larry# ls s*f
stuff
/home/larry#
Process zameny ``*
'' na imena fajlov nazyvaetsya rasshireniem
uajldkard i vypolnyaetsya shell. |to vazhno: konkretnye komandy,
vrode ls
, nikogda ne vidyat ``*
'' v svoem spiske parametrov.
Shell, rasshiryaya uajldkard, vklyuchaet v spisok parametrov vse imena,
proshedshie sravnenie s shablonom. Tak chto komanda
/home/larry# ls *o*
rasshiryaetsya shell do fakticheskoj
/home/larry# ls frog joe
Odno vazhnoe zamechanie otnositel'no ``*
'' uajldkard.
Ispol'zovanie etoj uajldkard ne dast sovpadeniya s imenami fajlov,
kotorye nachinayutsya s tochki (``.
''). |ti fajly vosprinimayutsya kak
"spryatannye", hotya na samom dele ih nikuda ne pryatali. Oni ne
pokazyvayutsya v spiske, vydavaemom normal'noj komandoj ls
i ne
vybirayutsya pri ispol'zovanii ``*
'' uajldkard.
Vot primer. My uzhe upominali, chto kazhdyj katalog imeet
dva special'nyh fajla: ``.
'' - ukazanie na tekushchij katalog i
``..'' - ukazanie na roditel'skij katalog. Odnako, esli vy
ispol'zuete komandu ls
, eti dva fajla ne budut otobrazheny.
/home/larry# ls
frog joe stuff
/home/larry#
Esli vy ispol'zuete opciyu -a
v komande ls
, to vy smozhete
otobrazit' imena, nachinayushchiesya na ``.
'':
/home/larry# ls -a
. .. .bash_profile .bashrc frog joe
stuff
/home/larry#
Kak vidim, dva special'nyh fajla ``.
'' i ``..
'', takzhe,
kak dva drugih "spryatannyh" fajla - .bash_profile
i .bashrc
. |ti
dva fajla ispol'zuyutsya pri vhode larry v sistemu. Bolee podrobno
o nih v Razdele 3.13.3.
Obratite vnimanie, chto kogda my ispol'zuem ``*
'' uajldkard,
ni odin iz fajlov, s imenami, nachinayushchimisya na ``.
'' ne
otobrazhaetsya.
/home/larry# ls *
frog joe stuff
/home/larry#
|to mera predostorozhnosti: esli ``*
'' uajldkard vybirala by
imena fajlov, nachinayushchiesya na ``.
'', ona by takzhe vybrala imena
``.
'' i ``..
''. No eto mozhet byt' opasno pri vypolnenii ryada
komand.
Drugoj uajldkard yavlyaetsya ``?''. ``?
'' uajldkard pozvolyaet
podstavit' strogo odin simvol. Tak ``ls ?
'' vydast na tol'ko
imena fajlov, sostoyashchie iz odnogo simvola, a ``ls termca?
''
vydast ``termcap
'', no ne vydast na ekran ``termcap.backup
''. Vot
eshche odin primer:
/home/larry# ls j?e
joe
/home/larry# ls f??g
frog
/home/larry# ls ????f
stuff
/home/larry#
Kak vidite, uajldkard pozvolyaet opisyvat' mnogo fajlov za
odin raz. Pri obzore prostejshih komand v Razdele 3.4 my govorili,
chto komandy cp
i mv
mogut kopirovat' ili peremeshchat' mnozhestva
fajlov za odin raz. Naprimer,
/home/larry# cp /etc/s* /home/larry
skopiruet vse fajly v /etc
, nachinaya s ``s''v katalog
/home/larry
. Format komandy cp
na samom dele
cp <file1> ... <fileN> <destination>
gde <file1> ... <fileN>
- spisok kopiruemyh fajlov, a
<destination>
eto fajl ili katalog, v kotoryj proizvoditsya
kopirovanie. mv imeet analogichnyj sintaksis.
Obratite vnimanie, chto esli proizvoditsya kopirovanie ili
peremeshchenie bolee, chem odnogo fajla, <destination>
dolzhen byt'
katalogom. V fajl skopirovat' ili peremestit' mozhno tol'ko odin
fajl.
Mnogie komandy UNIX poluchayut informaciyu s tak nazyvaemogo standartnogo vhoda i posylayut informaciyu na (opyat' zhe) tak nazyvaemyj standartnyj vyhod. (Dlya nih chasto ispol'zuyutsya sokrashcheniya ``stdin'' i ``stdout'' sootvetstvenno). Vash shell organizuet delo tak, chto standartnym vhodom sluzhit klaviatura, a standartnym vyhodom - ekran.
Vot primer ispol'zovaniya komandy cat
. Normal'no cat chitaet
dannye iz fajlov, ch'i imena dany v komandnoj stroke i posylaet
eti dannye pryamehon'ko na stdout. Poetomu pri vypolnenii komandy
/home/larry/papers# cat history-final masters-thesis
na ekran pojdet fajl history-final
, a za nim sledom
masters-thesis
.
No esli komande cat ne dany imena fajlov v kachestve parametrov, ona chitaet dannye s stdin i opyat' zhe posylaet na stdout. Vot primer.
/home/larry/papers# cat
Hello there.
Hello there.
Bye.
Bye.
[ctrl-D]
/home/larry/papers#
Kak vidite, kazhdaya stroka, kotoruyu napechatal
pol'zovatel', nemedlenno vydaetsya komandoj cat na ekran. Pri
vvode so standartnogo vhoda komanda znaet, chto vvod zakonchen
togda, kogda ona poluchit v kakom-to vide signal EOT
(End-Of-Text). Obychno on obespechivaetsya nazhatiem
Vot drugoj primer. Komanda sortirovki sort chitaet postrochno tekst (zdes' opyat' s stdin, poskol'ku imena fajlov v parametrah ne ukazany, i posylaet otsortirovannyj rezul'tat na stdout. Poprobujte tak.
/home/larry/papers# sort
bananas
carrots
apples
[ctrl-D]
apples
bananas
carrots
/home/larry/papers#
Teper' my mozhem uporyadochit' nash spisok produktov, podlezhashchih zakupke, v leksikograficheskom poryadke... nu razve UNIX ne poleznaya veshch'?
Teper', predpolozhim, chto my hotim poslat' rezul'tat sortirovki v fajl, chtoby gde-to sohranit' spisok planiruemyh pokupok. Shell daet nam vozmozhnost' perenapravlyat' standartnyj vyhod v fajl, ispol'zuya simvol ``>''. Vot kak eto rabotaet.
/home/larry/papers# sort > shopping-list
bananas
carrots
apples
[ctrl-D]
/home/larry/papers#
Kak vy mozhete videt', rezul'tat raboty komandy sort
ne
otobrazhaetsya na ekrane, vmesto etogo on sohranyaetsya v fajle
shopping-list
(spisok pokupok). Davajte posmotrim na etot fajl.
/home/larry/papers# cat shopping-list
apples
bananas
carrots
/home/larry/papers#
Teper' my mozhem ne tol'ko sortirovat' (uporyadochivat') spisok
planiruemyh pokupok, no i sohranyat' ego! No predpolozhim,
chto my hranili nash neotsortirovannyj ishodnyj zakupochnyj spisok v
fajle pod imenem items
. Odin iz sposobov sortirovki i sohraneniya
ego, eto otsortirovat' fajl s dannym imenem, vmesto polucheniya
fajla so standartnogo vhoda, i perenapravit' standartnyj vyhod v
fajl. Naprimer tak
/home/larry/papers# sort items > shopping-list
/home/larry/papers# cat shopping-list
apples
bananas
carrots
/home/larry/papers#
No eto mozhno sdelat' i po-drugomu. Perenapravlen mozhet byt' ne tol'ko standartnyj vyhod, no takzhe i standartnyj vhod, ispol'zuya simvol ``<''.
/home/larry/papers# sort < items
apples
bananas
carrots
/home/larry/papers#
Tehnicheski, sort < items
ekvivalentno sort items
, no
poslednij variant pozvolyaet nam prodemonstrirovat' skazannoe:
sort < items
vedet sebya tak, slovno dannye fajla items
byli
napechatany na klaviature. shell obsluzhivaet perenapravlenie. sort
ne bylo dano imya fajla (items
) i komanda chitala so standartnogo
vhoda, kak budto shel vvod s klaviatury.
|to illyustriruet koncepciyu fil'tra. Fil'tr, eto programma,
kotoraya poluchaet dannye so standartnogo vhoda, obrabatyvaet ih
kakim-to obrazom i posylaet rezul'tat obrabotki na standartnyj
vyhod. S pomoshch'yu perenapravleniya standartnye vhod i vyhod mogut
byt' perevedeny na fajly. sort
- prostejshij fil'tr: ona sortiruet
vhodnye dannye i posylaet rezul'tat na standartnyj vyhod. cat
-
dazhe eshche proshche: ona nichego ne delaet so vhodnymi dannymi, a
tol'ko vydaet vse, chto ne postupit, na vyhod.
My uzhe pokazali, kak ispol'zovat' komandu sort v kachestve
fil'tra. No eti primery predpolagali, chto vy otkuda-to poluchili
dannye v fajl, ili vveli dannye s klaviatury svoimi sobstvennymi
rukami. A chto, esli dannye, kotorye vy hotite otsortirovat',
yavlyayutsya vyhodnymi dannymi drugoj programmy, naprimer, takoj kak
ls
? Esli vy ispol'zuete pri sortirovke opciyu -r
, dannye budut
raspolozheny v poryadke, obratnom leksikograficheskomu. Esli vy
hotite poluchit' perechen' fajlov vashego kataloga v obratnom
poryadke, odin iz sposobov sdelat' eto budet:
/home/larry/papers# ls
english-list
history-final
masters-thesis
notes
/home/larry/papers# ls > file-list
/home/larry/papers# sort -r file-list
notes
masters-thesis
history-final
english-list
/home/larry/papers#
Zdes' my sohranili rezul'tat raboty komandy ls
v fajle, a
zatem vypolnili sort -r
nad etim fajlom. No eto ochen' koryavo
vyglyadit i trebuet sozdaniya vremennogo fajla dlya hraneniya
rezul'tata raboty ls
.
Vyhod iz polozheniya daet truboprovod (pipeline)
(prim.
perevodchika: v nashej literature prinyat termin "konvejer", tak
dalee i budem perevodit' "pipeline").
Konvejer - eto eshche odno
zamechatel'noe svojstvo shell, kotoroe pozvolyaet svyazyvat'
posledovatel'nost' komand v konvejer, gde stdout pervoj komandy
posylaetsya pryamo na stdin vtoroj komandy i tak dalee. Zdes' my
hotim poslat' stdout komandy ls
na stdin komandy sort. Simvol
``|'' olicetvoryaet konvejer:
/home/larry/papers# ls | sort -r
notes
masters-thesis
history-final
english-list
/home/larry/papers#
|ta komanda namnogo koroche i, ochevidno, proshche nabiraetsya. Drugoj poleznyj primer. Komanda
/home/larry/papers# ls /usr/bin
vydaet na displej dlinnyj spisok imen fajlov, bol'shinstvo iz kotoryh slishkom bystro promel'knet na ekrane, chtoby vy uspeli prochitat' ih. Davajte podklyuchim k prosmotru perechnya imen fajlov kataloga /usr/bin komandu more.
/home/larry/papers# ls /usr/bin | more
Teper' vy mozhete postranichno listat' fajl v svoe udovol'stvie.
No chudesa na etom ne konchayutsya! My mozhem svyazat' v konvejer bolee, chem dve komandy. Komanda head predstavlyaet iz sebya fil'tr, kotoryj otobrazhaet pervye stroki vhodnogo potoka (zdes', prishedshego po konvejeru). Esli my hotim otobrazit' poslednee imya tekushchego kataloga, uporyadochennogo po alfavitu, my mozhem napisat':
/home/larry/papers# ls | sort -r | head -1
notes
/home/larry/papers#
gde head -1
prosto vydaet pervuyu stroku poluchaemogo vhodnogo
potoka (v dannom sluchae eto otsortirovannyj v obratnom poryadke
perechen' imen fajlov tekushchego kataloga, vydannyh komandoj ls
).
Ispol'zovanie ``>'' dlya perenapravleniya vyhoda smertel'no dlya fajla, v kotoryj proishodit perenapravlenie (esli bylo, chto unichtozhat'), drugimi slovami
/home/larry/papers# ls > file-list
unichtozhaet prezhnee soderzhimoe fajla file-list
. Esli vmesto
etogo ispol'zovat' simvol perenapravleniya ``>>'', vyhod budet
dobavlen k soderzhimomu nazvannogo fajla (vmesto togo, chtoby byt'
zapisanym na mesto starogo).
/home/larry/papers# ls >> file-list
dobavit vyhodnuyu informaciyu komandy ls v fajl file-list
.
Imejte v vidu, chto perenapravleniya i konvejer, eto sredstva, predostavlyaemye obolochkoj shell, eto sintaksis shell i simvoly ``>'', ``>>'' i ``|'' ne imeyut nikakogo otnosheniya k komandam, kak takovym.
Poskol'ku UNIX - mnogopol'zovatel'skaya sistema, chtoby zashchitit' fajly kazhdogo pol'zovatelya ot durnogo vliyaniya drugih pol'zovatelej, UNIX podderzhivaet mehanizm, izvestnyj, kak sistema prav dostupa k fajlam. |tot mehanizm pozvolyaet kazhdomu fajlu pripisat' konkretnogo vladel'ca. Kak primer, poskol'ku Larry sozdal fajly v svoem domashnem kataloge, imenno Larry vladelec etih fajlov i imeet k nim dostup.
UNIX pozvolyaet takzhe sovmestno ispol'zovat' fajly neskol'kim pol'zovatelyam i gruppam pol'zovatelej. Esli Larry tak pozhelaet, on mozhet zakryt' dostup k svoim fajlam tak, chto nikto drugoj ne smozhet k nim podstupit'sya. Odnako v bol'shinstve sistem po umolchaniyu drugim pol'zovatelyam razreshaetsya chitat' vashi fajly, no zapreshchaetsya izmenyat' ili udalyat'.
Kak ob'yasnyalos' vyshe, kazhdyj fajl imeet konkretnogo vladel'ca. No, krome togo fajlami, takzhe vladeyut konkretnye gruppy pol'zovatelej, kotorye opredelyayutsya pri registracii pol'zovatelej v sisteme. Kazhdyj pol'zovatel' stanovitsya chlenom kak minimum odnoj gruppy pol'zovatelej. Sistemnyj administrator mozhet darovat' pol'zovatelyu dostup bolee, chem k odnoj gruppe.
Gruppy obychno opredelyayutsya tipami pol'zovatelej dannoj
mashiny. Naprimer, v universitetskom UNIX pol'zovateli mogut byt'
razbity na gruppy student
, prepodavatel'
, rukovodstvo
,
gost'
.
Est' takzhe neskol'ko sistemno-zavisimyh grupp (vrode bin
i
admin
), kotorye ispol'zuyutsya samoj sistemoj dlya upravleniya
dostupom k resursam. Ochen' redko obychnyj pol'zovatel' prinadlezhit
k etim gruppam.
Prava dostupa podrazdelyayutsya na tri tipa: chtenie (read), zapis' (write) i vypolnenie (execute). |ti tipy prav dostupa mogut byt' predostavleny trem klassam pol'zovatelej: vladel'cu fajla, gruppe, v kotoruyu vhodit vladelec, i vsem (prochim) pol'zovatelyam.
Razreshenie na chtenie pozvolyaet pol'zovatelyu chitat'
soderzhimoe fajlov, a v sluchae katalogov - prosmatrivat'
perechen' imen fajlov v kataloge (ispol'zuya, naprimer, ls
).
Razreshenie na zapis' pozvolyaet pol'zovatelyu pisat' v fajl i
izmenyat' ego. Dlya katalogov eto daet pravo sozdavat' v
kataloge novye fajly i katalogi, ili udalyat' fajly v etom
kataloge. Nakonec, razreshenie na vypolnenie pozvolyaet
pol'zovatelyu vypolnyat' fajly (kak binarnye programmy, tak i
komandnye fajly). Razreshenie na vypolnenie primenitel'no k
katalogam oznachaet vozmozhnost' vypolnyat' komandy vrode cd.
Davajte rassmotrim primer, demonstriruyushchij rabotu s pravami
dostupa. Ispol'zuya komandu ls
s opciej -l
mozhno poluchit' na
ekrane perechen' fajlov dannogo kataloga v "dlinnom" formate,
vklyuchayushchem informaciyu o pravah dostupa.
/home/larry/foo# ls -l stuff
-rw-r--r-- 1 larry users 505 Mar 13 19:05 stuff
/home/larry/foo#
Pervoe pole v vyvedennoj stroke predstavlyaet prava dostupa.
Tret'e pole - vladel'ca fajla (larry
) i chetvertoe - gruppu
(users
).
Ochevidno, chto poslednee pole est' imya fajla (stuff
), a
ostal'nye polya my obsudim pozzhe.
|tim fajlom vladeet larry
, i on prinadlezhit gruppe users
.
Davajte posmotrim na prava dostupa. V stroke -rw-r--r--
po
poryadku ukazany prava vladel'ca, gruppy i vseh prochih.
Pervyyj simvol etoj stroki prav dostupa (``-
'') predstavlyaet
tip fajla. Simvol ``-
'' oznachaet, chto eto obychnyj fajl (v
protivopolozhnost' katalogu ili special'nomu fajlu kakogo-to
ustrojstva). Sleduyushchie tri pozicii (``rw-
'') predstavlyayut prava
dostupa, kotorye imeet vladelec fajla larry
. Simvol ``r
''oznachaet
``read''(chitat'), ``w
'' - ``write''(pisat'). Takim obrazom larry
mozhet chitat' fajl stuff
i pisat' v nego.
Kak my uzhe upominali, krome razreshenij na chtenie i zapis'
sushchestvuet razreshenie na vypolnenie ``execute'' - predstavlyaemoe
simvolom ``x
''. No v dannom sluchae na etoj pozicii ``-
'', tak chto
u Larry net prav na vypolnenie etogo fajla. I eto chudesno, fajl
stuff
sovsem dazhe ne yavlyaetsya programmoj. Razumeetsya, poskol'ku
Larry vladeet fajlom, on mozhet dat' sam sebe razreshenie na
vypolnenie etogo fajla, esli zahochet. My etu proceduru skoro
obsudim.
Sleduyushchie tri simvola r--
predstavlyayut prava dostupa gruppy
dlya etogo fajla. |ta gruppa imeet imya users
. Poskol'ku tut est'
tol'ko ``r
'', lyuboj pol'zovatel' etoj gruppy mozhet tol'ko chitat'
fajl.
Poslednie tri simvola predstavlyayut tu zhe kombinaciyu r--
, to
est' dlya vseh prochih dostupno chtenie etogo fajla i zapreshcheny
zapis' i vypolnenie.
Vot eshche neskol'ko primerov na prava dostupa.
Vladelec fajla mozhet chitat', pisat' i vypolnyat' fajl. CHleny gruppy i vse prochie pol'zovateli mogut chitat' i vypolnyat' fajl.
Vladelec fajla mozhet chitat' i pisat' v fajl. Vsem ostal'nym dostup k fajlu zakryt.
Vse mogut chitat' pisat' i vypolnyat' fajl.
Vazhno zametit', chto prava dostupa, kotorye imeet fajl
zavisyat takzhe ot prav dostupa k katalogu, v kotorom etot fajl
nahoditsya. Naprimer, dazhe esli fajl imeet -rwxrwxrwx
, drugie
pol'zovateli ne smogut do nego dobrat'sya, esli u nih ne budet
prav na chtenie i vypolnenie kataloga, v kotorom nahoditsya fajl.
Naprimer, esli Larry zahochet ogranichit' dostup ko vsem svoim
fajlam, on mozhet mozhet prosto izmenit' prava dostupa
svoego domashnego kataloga /home/larry
na
drwx------
. Takim
obrazom, nikto drugoj ne budet imet' dostup v ego katalog, a
sledovatel'no postoronnim budut nedostupny i vse fajly. Tak chto
Larry mozhet ne zabotit'sya ob individual'noj zashchite svoih fajlov.
Drugimi slovami, chtoby imet' dostup k fajlu, vy dolzhny imet' dostup ko vsem katalogam, lezhashchim na puti ot kornya k etomu fajlu, a takzhe razreshenie na dostup sobstvenno k etomu fajlu.
Obychno pol'zovateli UNIX ves'ma otkryty vsemi svoimi
fajlami. Obychno fajlam ustanavlivaetsya zashchita -rw-r--r--
, kotoraya
pozvolyaet drugim pol'zovatelyam chitat' fajly, no ni koim obrazom
ih ne menyat'. Katalogamm obychno ustanavlivayutsya prava dostupa
drwxr-xr-x
, chto pozvolyaet drugim pol'zovatelyam hodit' s pravami
ekskursantov po vashim katalogam. No nichego v nih ne trogat' i
ne zapisyvat'.
No mnogie pol'zovateli hotyat derzhat' drugih pol'zovatelej
podal'she ot svoih fajlov. Ustanoviv prava dostupa fajla,
-rw-------
vy nikomu ne pokazhete etot fajl i ne dadite zapisat' v
nego. Takzhe horosho zakryvaet ot vseh fajly zashchita sootvetstvuyushchego
kataloga drwx------
.
Komanda chmod
ispol'zuetsya dlya ustanovki (izmeneniya) prav
dostupa fajla. Tol'ko vladelec fajla mozhet menyat' prava dostupa k
nemu.
Sintaksis komandy imeet vid:
chmod {a,u,g,o}{+,-}{r,w,x} <filenames>
Kratko, vy vybiraete iz all (vse), user
(pol'zovatel'), group (gruppa) ili other (drugie). Dalee
ukazyvaete, libo vy dobavlyaete prava (+
), libo lishaete prav (-
). I
nakonec, vy ukazyvaete odin ili neskol'ko rezhimov: read, write
ili execute. Neskol'ko primerov dopustimyh komand:
Daet vsem pol'zovatelyam pravo chitat' fajl stuff.
To zhe samoe, chto i ranee (a - po umolchaniyu).
Lishaet prava na vypolnenie vseh, krome vladel'ca.
Razreshaet vladel'cu vse (read, write i execute).
Zapreshchaet vse (read, write i execute) pol'zovatelyam kategorii drugie (other).
Svyazi pozvolyayut davat' odnomu fizicheskomu fajlu mnogo imen.
Sistemoj fajly raspoznayutsya po indeksam fajlov, kotorye yavlyayutsya
unikal'nymi identifikatorami v ramkah sistemy.
ls -i
vydast vam indeksy fajlov.
Komanda ln
ispol'zuetsya dlya sozdaniya mnozhestva svyazej dlya
odnogo fajla. Naprimer, skazhem, chto u vas est' fajl foo
.
Ispol'zuya ls -i
mozhno posmotret' indeks etogo fajla.
# ls -i foo
22192 foo
#
Zdes' fajl foo
imeet v fajlovoj sisteme indeks 22192. My
mozhem sozdat' novuyu svyaz' dlya etogo fajla pod imenem bar:
# ln foo bar
S pomoshch'yu ls -i
mozhno ubedit'sya, chto oba fajla imeyut odin i
tot zhe indeks.
# ls -i foo bar
22192 bar 22192 foo
#
Teper', obrashchayas' k foo
ili bar
my fakticheski obratimsya k
odnom u tomu zhe fajlu. Poetomu, esli my menyaem chto-to v fajle
foo
, eti zhe samye izmeneniya proizojdut v fajle bar
.
|ti svyazi izvestny, kak zhestkie svyazi (hard links), poskol'ku oni realizuyutsya pryamoj ssylkoj na indeks fajla. Obratite vnimanie, chto v ramkah odnoj fajlovoj sistemy vy mozhete organizovat' tol'ko zhestkie svyazi; simvolicheskie svyazi (smotrite nizhe) ne imeyut etogo ogranicheniya.
Kogda vy udalyaete fajl komandoj rm
, na samom dele vy
udalyaete tol'ko odnu ssylku na fajl. Esli vy vvedete komandu
# rm foo
Udalayaetsya tol'ko svyaz', imeyushchaya imya foo
; bar
budet kak i
prezhde sushchestvovat'. Fajl tol'ko togda dejstvitel'no udalyaetsya,
kogda na nego bol'she net svyazej. Obychno fajly imeyut tol'ko odnu
svyaz', tak chto komanda rm dejstvitel'no privedet k udaleniyu
fajla. Odnako, esli fajl imeet mnogo ssylok, primenenie rm
privedet tol'ko k udaleniyu odnoj svyazi; dlya togo, chtoby udalit'
fajl, vy dolzhny udalit' vse svyazi na etot fajl.
Komanda ls -l
pokazhet chislo ssylok na fajl (krome prochej
informacii)
# ls -l foo bar
-rw-r--r-- 2 root root 12 Aug 5 16:51 bar
-rw-r--r-- 2 root root 12 Aug 5 16:50 foo
#
Vtoraya kolonka s cifroj ``2'' pokazyvaet chislo svyazej fajla.
Samom dele okazyvaetsya, chto katalogi predstavlyayut iz
sebya spravochnik tipa "imena-indeksy". Krome prochego, kazhdyj
katalog imeet minimum dve zhestkie ssylki: ``.
'' (ssylka,
ukazyvayushchaya na samogo sebya) i ``..
'' (ssylka, ukazyvayushchaya na
roditel'skij katalog). V kornevom kataloge (/
) ssylka
``..
'' ukazyvaet na sam zhe katalog /
.
Simvolicheskie svyazi, eto drugoj tip svyazej, otlichayushchijsya ot zhestkih svyazej. Simvolicheskie svyazi pozvolyayut davat' novye imena fajlam, no pri etom ne ssylayutsya na indeks fajla.
Komanda ln -s
sozdast simvolicheskuyu ssylku na ukazannyj
fajl. Naprimer, esli my vospol'zuemsya komandoj
# ln -s foo bar
my sozdadim simvol'nuyu ssylku bar
, ukazyvayushchuyu na fajl foo
.
Esli teper' ispol'zuem komandu ls -i
, to uvidim, chto dva fajla
imeyut razlichnye indeksy.
# ls -i foo bar
22195 bar 22192 foo
#
Odnako, ispol'zuya ls -l
, my vidim, chto fajl bar
imeet
simvolicheskij ukazatel' na foo
.
# ls -l foo bar
lrwxrwxrwx 1 root root 3 Aug 5 16:51 bar -> foo
-rw-r--r-- 1 root root 12 Aug 5 16:50 foo
#
Pri simvolicheskoj ssylke ne ispol'zuyutsya bity prav dostupa
(oni vsegda otobrazhayutsya, kak rwxrwxrwx
). Vmesto etogo, prava
dostupa k fajlu, poluchennomu simvolicheskoj ssylkoj, opredelyayutsya
pravami dostupa k fajlu, na kotoryj on ssylaetsya (v nashem
primere opredelyaetsya pravami fajla foo
).
Funkcional'no, zhestkie ssylki i simvolicheskie ssylki pohozhi, no est' nekotorye razlichiya. Naprimer, vy mozhete sozdat' simvolicheskuyu ssylku na fajl, kotoryj ne sushchestvuet; tak nel'zya sdelat' primenitel'no k zhestkoj ssylke. Simvolicheskie ssylki obrabatyvayutsya yadrom inym obrazom, chem zhestkie. |to skoree tehnicheskoe otlichie, no inogda vazhnoe. Simvolicheskie ssylki polezny, poskol'ku oni pozvolyayut identificirovat' fajl, na kotoryj oni ukazyvayut; dlya zhestkih ssylok net prostogo sposoba opredelit', kakie fajly privyazany k odnomu i tomu zhe indeksu.
Ssylki ispol'zuyutsya vo mnogih mestah sistemy Linux.
Simvolicheskie ssylki osobenno vazhny dlya obrazov razdelyaemyh
bibliotek v /lib
. Smotri dopolnitel'nuyu informaciyu v Razdele
4.7.2.
Upravlenie rabotami (job control)
eto vozmozhnost', kotoruyu predostavlyayut
mnogie obolochki, vklyuchaya (Bash i Tcsh). Upravlenie rabotami
Kazhdyj raz, kogda vy vypolnyaete programmu, vy nachinaete to,
chto izvestno, kak process. Process - eto nazvanie dlya
vypolnyaemoj programmy. Komanda ps
vydaet perechen' imeyushchih mesto v
dannyj moment processov. Vot primer:
/home/larry# ps
PID TT STAT TIME COMMAND
24 3 S 0:03 (bash)
161 3 R 0:00 ps
/home/larry#
PID (Process IDentificator), perechislennye v pervoj kolonke, eto nepovtoryayushchiesya chisla pripisannye vsem idushchim processam.
Poslednij stolbec (COMMAND) daet imya vypolnyaemoj komandy.
Zdes' my vidim tol'ko processy, kotorye iniciiroval Larry. (V
sisteme vypolnyaetsya i mnogo drugih processov. Komanda ``ps -aux
''
mozhet vydat' perechen' vseh proishodyashchih v dannyj moment
processov).
V vyvedennom perechne ukazany bash
(eto obolochka,
ispol'zuemaya Larry) i sama komanda ps
. Kak vy vidite, bash
vypolnyaetsya parallel'no s komandoj ps
. bash vypolnit ps
, kogda
Larry vvedet komandu. Posle okonchaniya ps
(posle togo, kak vydana
tablica processov), upravlenie vozvrashchaetsya k processu bash
,
kotoryj vydaet na ekran podskazk gotovnosti k priemu novyh komand.
Vypolnyaemyj process izvesten shell kak rabota. Terminy process i rabota vzaimozamenyaemy. Odnako process obychno vosprinimaetsya, kak "rabota", kogda rech' idet ob upravlenii rabotami (job control)- svojstve shell, pozvolyayushchem udelyat' vnimanie neskol'kim nezavisimym rabotam.
V bol'shinstve sluchaev pol'zovateli vypolnyayut v kazhdyj moment vremeni odnu rabotu, tu kotoraya sootvetstvuet poslednej peredannoj shell komande. Odnako, ispol'zuya upravlenie rabotami, vy mozhete odnovremenno vypolnyat' neskol'ko rabot, po neobhodimosti pereklyuchayas' s odnoj na druguyu. Kakaya ot etogo pol'za? Davajte predpolozhim, chto vy redaktiruete tekstovyj fajl i neozhidanno hotite prervat'sya i sdelat' chto-to drugoe. S pomoshch'yu upravleniya rabotami vy mozhete otlozhit' redaktirovanie i, vernuvshis' k podskazke shell, nachat' kakuyu-to druguyu rabotu. Posle etogo vy mozhete vernut'sya k redaktirovaniyu, imenno k tomu mestu, gde vy prervali redaktirovanie. |to vsego odin primer. Upravlenie rabotami ochen' polezno na praktike.
Raboty mogut vypolnyat'sya kak na perednem plane, tak i v fone. Na perednem plane v kazhdyj moment mozhet byt' tol'ko odna rabota. Rabota perednego plana, eto rabota, s kotoroj vy vzaimodejstvuete, ona poluchaet informaciyu s klaviatury i posylaet rezul'taty na vash ekran. (Krome, razumeetsya, sluchaev, kogda vy sami perenapravlyaete vhod ili vyhod, kak opisyvalos' v Razdele 3.8). S drugoj storony, fonovye raboty ne poluchayut informacii s terminala, v obshchem sluchae oni tiho (v smysle - mirno) vypolnyayutsya, ne ispytyvaya potrebnosti v obshchenii s pol'zovatelem.
Nekotorye raboty trebuyut ochen' bol'shogo vremeni dlya svoego zaversheniya i ne svershayut nichego vneshne interesnogo v processe etoj raboty. Kompilyaciya programm - odna iz takih rabot, kak i kompressiya bol'shih fajlov. Net vrazumitel'nyh prichin, pochemu vy dolzhny pri etom sidet' ryadom i muchitel'no zhdat', kogda eti raboty zakonchatsya. Vy mozhete prosto zapustit' ih v fone. Poka oni tam vypolnyayutsya, vy mozhete zanyat'sya drugimi programmami.
Raboty mogut byt' takzhe otlozheny. Otlozhennaya rabota - eto rabota, kotoraya v dannyj moment ne vypolnyaetsya i vremenno ostanovlena. Posle togo, kak vy ostanovili rabotu, v dal'nejshem vy mozhete ee prodolzhit' kak na perednem plane, tak i v fone. Vozobnovlenie priostanovlennoj raboty ne izmenit ee sostoyaniya - pri vozobnovlenii ona nachnetsya s togo mesta, na kotorom byla priostanovlena.
Imejte v vidu, chto priostanovka raboty, eto ne preryvanie
raboty. Kogda vy preryvaete idushchij process (nazhimaya klavishi
preryvaniya, obychno eto
Davajte nachnem s prostogo primera. Komanda yes
- vrode by
bespoleznaya komanda, posylayushchaya beskonechnyj potok "y" na
standartnyj vyhod. (No eto ochen' polezno. Esli vy napravite cherez
konvejer eti "y" na vhod drugoj komandy, kotoraya trebuet
otvetov yes
i "no" na voprosy, potok "y" dast podtverzhdenie
na vse voprosy). Poprobujte.
/home/larry# yes
y
y
y
y
y
|to zakonchitsya v beskonechnosti. Vy mozhete ubit' process,
nazhav klavishi preryvaniya; obychno eto /dev/null
. Kak vy pomnite, /dev/null
vystupaet v kachestve "chernoj
dyry" dlya dannyh. V nej ischezayut bessledno lyubye dannye.
/home/larry# yes > /dev/null
Oh, teper' namnogo luchshe. Nichego ne pechataetsya, no i podskazka
shell ne poyavlyaetsya. |to potomu, chto programma prodolzhaet
rabotat', posylat' "y" v /dev/null
. Snova nazhmite klavishi
preryvaniya, chtoby prekratit' eto.
Davajte predpolozhim, chto my hotim, chtoby komanda yes
prodolzhala rabotat', no takzhe hotim poluchit' obratno podskazku
shell, chtoby vypolnyat' drugie raboty. My mozhem perevesti komandu
yes
v fonovyj rezhim, chto pozvolit ej vypolnyat'sya, no bez vyhoda na
vzaimodejstvie s pol'zovatelem.
CHtoby peremestit' process v fonovyj rezhim, neobhodimo posle
komandy simvol ``&
''.
/home/larry# yes > /dev/null &;
[1] 164
/home/larry#
Vy vidite, chto my vnov' poluchili podskazku. No chto
znachit ``yes
na samom dele?
``yes
. Shell
pripisyvaet nomer kazhdoj vypolnyaemoj rabote. Poskol'ku "yes" - odna
edinstvennaya rabota, kotoraya v dannyj moment vypolnyaetsya, ej
prisvoen nomer 1. ``164'' - identifikator processa (PID); eto
nomer, prisvoennyj sistemoj rabote. Lyuboj iz etih nomerov mozhno
ispol'zovat' pri obrashchenii k rabote, kak eto budet pokazano v
dal'nejshem.
Teper' my imeem vypolnyaemyj process yes
v fonovom rezhime,
nepreryvno posylayushchij potok "y"-kov v /dev/null
. CHtoby proverit'
sostoyanie etogo processa, ispol'zujte vnutrennyuyu komandu shell -
jobs
.
/home/larry# jobs
[1]+ Running yes >/dev/null &
/home/larry#
YAsno, chto ona vypolnyaetsya. Vy mozhete takzhe vospol'zovat'sya
komandoj ps
, pokazannoj ranee, dlya proverki statusa rabot.
Dlya zaversheniya raboty ispol'zujte komandu kill
. |ta komanda
mozhet brat' v kachestve argumenta kak nomer raboty, tak i
identifikator processa. |to byla rabota nomer 1, tak chto ispol'zuya
komandu
/home/larry# kill %1
my likvidiruem rabotu. Pri identifikacii raboty po nomeru neobhodimo vperedi stavit' simvol procenta (``%'').
Teper', posle likvidacii, my mozhem snova ispol'zovat' jobs
dlya proverki:
/home/larry# jobs
[1]+ Terminated yes >/dev/null
/home/larry#
Rabota dejstvitel'no mertva, i esli my snova vospol'zuemsya
komandoj jobs
, nichego ne budet vyvedeno na ekran.
Vy mozhete takzhe ubit' rabotu, ispol'zuya nomer identifikatora processa (PID), kotoryj vyvoditsya naryadu s rabotoj, kogda vy nachinaete rabotu (v fonovom rezhime). V nashem primer PID raven 164, tak chto komanda
/home/larry# kill 164
ekvivalentna
/home/larry# kill %1
Vam ne nado ispol'zovat' ``%
'', kogda vy obrashchaetes' k
rabote po nomeru identifikatora processa.
Est' drugoj sposob perevesti rabotu v fonovyj rezhim. Vy mozhete nachat' rabotu normal'no (v rezhime perednego plana), ostanovit' rabotu i prodolzhit' v fonovom rezhime.
Snachala nachnem rabotu "normal'no":
/home/larry# yes > /dev/null
Poskol'ku opyat' rabota vypolnyaetsya na perednem plane, vy ne poluchite obratno na ekran podskazku shell.
Teper', vmesto togo, chtoby preryvat' rabotu s pomoshch'yu
/home/larry# yes > /dev/null
[ctrl-Z]
[1]+ Stopped yes >/dev/null
/home/larry#
Poka rabota ostanovlena, ona prosto ne vypolnyaetsya. Na nee ne tratitsya vremya processora. No vy vsegda mozhete vozobnovit' rabotu, i ona prodolzhitsya kak ni v chem ne byvalo.
Dlya vozobnovleniya raboty v rezhime perednego plana
ispol'zujte komandu fg
(``foreground'' - perednij plan).
/home/larry# fg
yes >/dev/null
Shell snova vydast na ekran imya komandy, chtoby vy mogli
prokontrolirovat', kakuyu rabotu vy aktivizirovali v rezhime
perednego plana. Vnov' ostanovite rabotu s pomoshch'yu bg
(``background'' - zadnij plan,
fonovyj rezhim), chtoby perevesti rabotu v fonovyj rezhim. |ffekt
budet analogichen tomu, kak esli by vy nabrali posle komandy
``&
''.
/home/larry# bg
[1]+ yes >/dev/null &
/home/larry#
I my poluchili nazad podskazku. Komanda jobs soobshchit, chto
komanda yes dejstvitel'no vypolnyaetsya, i my mozhem snova ee ubit'
s pomoshch'yu komandy kill
, kak my eto uzhe delali.
Kak teper' ostanovit' rabotu? Ispol'zovanie fg
kak dlya ostanovlennyh rabot, tak i dlya
rabot, nahodyashchihsya v fone.
Sushchestvuet bol'shaya raznica mezhdu fonovoj rabotoj i ostanovlennoj. Ostanovlennaya rabota ne vypolnyaetsya i ne ispol'zuet vremya processora, da i nikakoj raboty, chestno govorya, v etot moment ne delaet (no zanimaet pamyat', hotya po vole svoppinga mozhet okazat'sya na diske). Rabota v fonovom rezhime i vypolnyaetsya, i zanimaet pamyat'. Ona mozhet dazhe vyvodit' chto-to na ekran, hotya eto mozhet razdrazhat' vas, kogda vy rabotaete nad chem-to drugim. Naprimer, esli vy ispol'zovali komandu:
/home/larry# yes &
bez perenapravleniya stdout v /dev/null
, potok "y" budet
vyvodit'sya na ekran bez vozmozhnosti prervat' eto (vy ne smozhete
ispol'zovat'
Eshche odno zamechanie. Komandy fg
i bg
obychno perevodyat na
perednij plan ili v fonovyj rezhim raboty, kotorye byli
ostanovleny poslednimi (chto opredelyaetsya simvolom ``+
'' posle
nomera raboty, eto kogda vy ispol'zuete komandu jobs). Esli vy
vypolnyaete mnogo rabot odnovremenno, vy mozhete perevesti na
perednij plan ili, naoborot, v fonovyj rezhim konkretnuyu rabotu
zadaniem identifikatora raboty v kachestve argumenta komand fg ili
bg, kak v
/home/larry# fg %2
(perevod na perednij plan raboty nomer 2) ili
/home/larry# bg %3
(perevod v fon raboty nomer 3).
Dlya etih komand nel'zya ispol'zovat' identifikatory processov. Krome togo, ispol'zovanie tol'ko nomerov rabot, kak v
/home/larry# %2
ekvivalentno
/home/larry# fg %2
Pomnite, chto upravlenie rabotami, eto svojstvo shell.
Komandy fg
, bg
i jobs
- vnutrennie komandy shell. Esli po
kakoj-to prichine vy ispol'zuete shell, kotoryj ne podderzhivaet
upravlenie rabotami, tam vy ne najdete etih komand.
V dopolnenie k etomu, est' nekotorye aspekty upravleniya rabotami, kotorye razlichayutsya v Bash i Tcsh. Nekotorye obolochki ne imeyut upravleniya rabotami, hotya bol'shinstvo obolochek Linux imeyut takuyu vozmozhnost'.
Tekstovyj redaktor, eto programma, ispol'zuemaya dlya
redaktirovaniya fajlov, kotorye soderzhat tekst, naprimer pis'ma,
S-programmy ili sistemnye konfiguracionnye fajly. Hotya v Linux
mnogo vsyakih raznyh redaktorov, edinstvennyj redaktor, kotoryj vy
s garantiej najdete v lyubom UNIX - eto vi
(``visual editor''). vi
- eto ne samyj prostoj v ispol'zovanii redaktor. No poskol'ku on
tak rasprostranen v mire UNIX i v lyuboj moment mozhet vam
potrebovat'sya, on zasluzhivaet hot' kakogo-to opisaniya zdes'.
Vybor redaktora, eto delo personal'nogo vkusa i stilya.
Mnogie pol'zovateli predpochitayut vitievatyj i moshchnyj Emacs -
redaktor s samym bol'shim naborom vozmozhnostej, po sravneniyu so
vsemi drugimi redaktorami v mire UNIX. Naprimer, Emacs imeet svoj
sobstvennyj vstroennyj dialekt yazyka programmirovaniya LISP i
mnozhestvo rasshirenij (odno iz kotoryh ``Eliza''- v nekotorom rode
programma iskusstvennogo intellekta). Odnako, poskol'ku Emacs so
vsemi podderzhivayushchimi ego fajlami sravnitel'no velik, ego net na
mnogih sistemah. vi
, naoborot, malen'kij i udalen'kij, no, uvy,
bolee slozhnyj v ispol'zovanii. No kogda vy s nim osvoites', vy
pojmete, chto on ochen' prostoj. Pravda osvaivat' ego slozhno.
|tot razdel - vrazumitel'noe vvedenie v vi
. My ne budem
obsuzhdat' vse ego svojstva, a tol'ko te, kotorye vy dolzhny znat',
chtoby nachat' rabotat'. Esli vy pozhelaete znat' bol'she detalej, obratites'
k stranicam Rukovodstva.
Pri ispol'zovanii vi
v lyuboe vremya vy mozhete nahodit'sya v
odnom iz treh rezhimov raboty. |ti rezhimy izvestny kak komandnyj
rezhim, rezhim vstavki i rezhim poslednej stroki.
Kogda vy nachinaete rabotat' s vi
- vy v komandnom rezhime.
|tot rezhim pozvolyaet ispol'zovat' opredelennye komandy dlya
redaktirovaniya fajlov ili perehoda v drugie rezhimy. Naprimer,
napechatav ``x
'' pri nahozhdenii v komandnom rezhime, udalyaete
simvol, nahodyashchijsya pered kursorom. Strelki peredvigayut kursor po
redaktiruemomu fajlu. Bol'shinstvo komand, ispol'zuemyh v
komandnom rezhime, sostoit iz odnogo ili dvuh simvolov.
Vstavku ili redaktirovanie teksta vy osushchestvlyaete v rezhime
vstavki. Pri ispol'zovanii vi
vy, vozmozhno, bol'shuyu chast' vremeni
nahodites' imenno v etom rezhime. Vy perehodite v rezhim vstavki s
pomoshch'yu komandy ``i
'' (``insert'' - vstavka) iz komandnogo
rezhima. V rezhime vstavki vy vstavlyaete tekst v dokument na mesto,
ukazyvaemoe kursorom. Dlya zaversheniya rezhima vstavki i vozvrata v
komandnyj rezhim sleduet nazhat'
Rezhim poslednej stroki - eto special'nyj rezhim, ispol'zuemyj
dlya rasshireniya vozmozhnostej komandnogo rezhima. Pri vvode takih
komand oni poyavlyayutsya v poslednej stroke ekrana. Naprimer, esli
vy napechataete ``:'' v komandnom rezhime, vy perejdete v rezhim
poslednej stroki i smozhete ispol'zovat' takie komandy, kak ``wq
''
(zapisat' (write) fajl i vyjti (quit) iz vi), ili ``q!
'' (vyjti
iz vi bez sohraneniya izmenenij). Rezhim poslednej stroki v obshchem
sluchae ispol'zuetsya dlya komand vi
, kotorye dlinnee odnogo
simvola. V rezhime poslednej stroki vy vvodite odnostrochnye
komandy i nazhimaete
Luchshij sposob osvoit' etu koncepciyu, eto vyzvat'
vi
i otredaktirovat' fajl. V primere
``screens
'', privodimom nizhe, my sobiraemsya tol'ko pokazat'
neskol'ko strok teksta, budto by ekran sostoit vsego iz
shesti strok (vmesto dvadcati chetyreh).
Vyzov vi
vi <filename>
gde <filename>
- imya redaktiruemogo fajla.
Nu tak vyzovite vi
, napechatav
/home/larry# vi test
dlya redaktirovaniya fajla test
. Vy uvidite nechto vrode
____________________________________________________________________
|~_ |
|~ |
|~ |
|~ |
|~ |
|"test"_[New_file]__________________________________________________|
Stolbec simvolov ``~'' govorit o tom, chto vy stoite na konce fajla.
Vy nahodites' v komandnom rezhime; dlya togo, chtoby vstavlyat'
tekst v fajl, nazhmite
____________________________________________________________________
|Now is the time for all good men to come to the aid of the party._ |
|~ |
|~ |
|~ |
|~ |
|~__________________________________________________________________|
Pri vstavke teksta vy mozhete napechatat' stol'ko strok,
skol'ko pozhelaete (nazhimaya
Dlya zaversheniya rezhima vstavki i vozvrata v komandnyj rezhim
nazhmite
V komandnom rezhime vy mozhete ispol'zovat' klavishi so strelkami dlya peremeshcheniya po fajlu. Zdes', poskol'ku my imeem tol'ko odnu stroku teksta, popytki ispol'zovat' strelki "vverh" i "vniz" privedut lish' k tomu, chto vi na vas zagudit.
Est' neskol'ko sposobov vstavki teksta, otlichnyh ot
ispol'zovaniya komandy i
. Naprimer, komanda a
vstavlyaet v tekst,
nachinaya posle tekushchego polozheniya kursora, vmesto tekushchej pozicii
kursora. Ispol'zujte levuyu strelku dlya peremeshcheniya
kursora mezhdu slovami ``good'' i ``men''.
____________________________________________________________________
|Now is the time for all good_men to come to the aid of the party. |
|~ |
|~ |
|~ |
|~ |
|~__________________________________________________________________|
Nazhmite wo
'',
a zatem nazhmite
____________________________________________________________________
|Now is the time for all good women to come to the aid of the party.|
|~ |
|~ |
|~ |
|~ |
|~__________________________________________________________________|
Dlya togo, chtoby nachat' vstavku teksta v stroku nizhe tekushchej,
ispol'zujte komandu ``o
''. Naprimer, nazhmite
____________________________________________________________________
|Now is the time for all good women to come to the aid of the party.|
|Afterwards, we'll go out for pizza and beer._ |
|~ |
|~ |
|~ |
|~__________________________________________________________________|
No pomnite, chto v lyuboe vremya vy nahodites' libo v komandnom
rezhime (gde komandy, takie kak i
, a ili o mogut primenyat'sya) ili
v rezhime vstavki (gde vy vstavlyaete tekst, a zatem s pomoshch'yu
V komandnom rezhime komanda "x
" udalyaet simvol pered
kursorom. Esli vy nazhmete
____________________________________________________________________
|Now is the time for all good women to come to the aid of the party.|
|Afterwards, we'll go out for pizza and _ |
|~ |
|~ |
|~ |
|~__________________________________________________________________|
Teper' nazhmite
____________________________________________________________________
|Now is the time for all good women to come to the aid of the party.|
|Afterwards, we'll go out for pizza and Diet Coke._ |
|~ |
|~ |
|~ |
|~__________________________________________________________________|
Vy mozhete udalyat' celye stroki, nabiraya komandu dd
(t.e.
nazhimaya dd
,
____________________________________________________________________
|Now is the time for all good women to come to the aid of the party.|
|~ |
|~ |
|~ |
|~ |
|~__________________________________________________________________|
CHtoby udalit' slovo, na kotorom nahoditsya kursor,
ispol'zujte komandu dw
. Pomestite kursor na slovo ``good'' i
napechatajte dw
.
____________________________________________________________________
|Now is the time for all women to come to the aid of the party. |
|~ |
|~ |
|~ |
|~ |
|~__________________________________________________________________|
Vy mozhete zamenit' fragmenty teksta, ispol'zuya komandu R
.
Pomestite kursor na pervuyu bukvu slova ``party'', nazhmite
____________________________________________________________________
|Now is the time for all women to come to the aid of the hungry._ |
|~ |
|~ |
|~ |
|~ |
|~__________________________________________________________________|
Ispol'zovanie R
dlya redaktirovaniya teksta ochen' pohodit na
na komandy i
i a
, no R
zamenyaet prezhnij tekst vmesto vstavki v
nego.
Komanda r
zamenyaet odin simvol, otmechennyj kursorom.
Naprimer, peremestite kursor na nachalo slova ``Now'' i
napechatajte r
, a sledom C
, to vy poluchite:
____________________________________________________________________
|Cow is the time for all women to come to the aid of the hungry._ |
|~ |
|~ |
|~ |
|~ |
|~__________________________________________________________________|
Komanda ``˜
'' izmenyaet razmer bukvy, otmechennoj kursorom:
bol'shuyu delaet malen'koj i naoborot. Naprimer, esli vy pomestite
kursor na ``o'' v ``Cow'' i zatem posledovatel'no budete nazhimat'
____________________________________________________________________
|COW IS THE TIME FOR ALL WOMEN TO COME TO THE AID OF THE HUNGRY. |
|~ |
|~ |
|~ |
|~ |
|~__________________________________________________________________|
Vy uzhe znaete, kak ispol'zovat' strelki dlya peremeshchenij po
dokumentu. Vy takzhe mozhete ispol'zovat' komandy h
, j
,
k
, i l
dlya
peremeshcheniya kursora vlevo, vniz, vverh i vpravo sootvetstvenno.
|to udobno, esli (po kakim-to prichinam) vashi klavishi
so strelkami ne rabotayut kak nado.
Komanda w
peremeshchaet kursor na nachalo sleduyushchego slova; b
-
peremeshchaet na nachalo predydushchego slova.
Komanda 0
(eto nol') peredvigaet kursor na nachalo tekushchej
stroki, a komanda $
peremeshchaet na konec stroki.
Pri redaktirovanii bol'shih fajlov vy hotite peremeshchat'sya
vpered i nazad srazu na razmer ekrana. Nazhatiem
Dlya togo, chtoby peremestit' kursor v konec fajla,
napechatajte G
. Mozhno peremestit'sya takzhe na lyubuyu stroku,
napechatav komandu 10G
vy peremestite kursor na desyatuyu stroku
fajla. Dlya togo, chtoby vstat' na nachalo (na pervuyu stroku),
ispol'zujte 1G
.
Vy mozhete sochetat' komandy peremeshcheniya s drugimi komandami,
takimi kak udalenie. Naprimer, komanda d$
udalit' ot
mestopolozheniya kursora do konca stroki; dG
udalit vse ot kursora
do konca fajla i t.d.
Dlya vyhoda iz
vi
bez vneseniya izmenenij v ranee sushchestvovavshij fajl ispol'zujte komandu
:q!
.
Kogda vy napechataete ``:
'', kursor peremestitsya na poslednyuyu stroku ekrana,
poskol'ku vy perejdete v rezhim poslednej stroki.
____________________________________________________________________
|COW IS THE TIME FOR ALL WOMEN TO COME TO THE AID OF THE HUNGRY. |
|~ |
|~ |
|~ |
|~ |
|~ |
|:__________________________________________________________________|
V rezhime poslednej stroki mogut vypolnyat'sya nekotorye
rasshirennye komandy. Odna iz nih - q!
, kotoraya pozvolyaet vyjti iz
vi
bez zapisi. Komanda :wq
sohranyaet (zapisyvaet) fajl, a zatem
vyhodit iz vi
. Komanda ZZ
(v rezhime komand,
bez `:
'')
ekvivalentna :wq
. Pomnite, chto vy dolzhny nazhat' vi
, ispol'zujte prosto :w
.
Dlya togo, chtoby otredaktirovat' drugoj fajl, ispol'zujte
komandu :e
. Naprimer, chtoby prekratit' redaktirovanie fajla test
i perejti k redaktirovaniyu fajla foo
, ispol'zujte komandu
____________________________________________________________________
|COW IS THE TIME FOR ALL WOMEN TO COME TO THE AID OF THE HUNGRY. |
|~ |
|~ |
|~ |
|~ |
|~ |
|:e foo_____________________________________________________________|
Esli vy ispol'zuete :e bez predvaritel'nogo sohraneniya fajla, to snachala vy poluchite soobshchenie ob oshibke.
____________________________________________________________________
|No_write_since_last_change_(":edit!"_overrides)____________________|
kotoroe prosto oznachaet, chto vi
ne zhelaet redaktirovat'
drugoj fajl, poka ne budet sohranen pervyj. V etot moment vy
mozhete ispol'zovat' :w
, chtoby sohranit' ishodnyj fajl, a zatem
ispol'zovat' :e
ili ispol'zovat' komandu
____________________________________________________________________
|COW IS THE TIME FOR ALL WOMEN TO COME TO THE AID OF THE HUNGRY. |
|~ |
|~ |
|~ |
|~ |
|~ |
|:e! foo_____________________________________________________________|
``!
'' govorit vi
, chto vy na samom dele imeete v vidu -
redaktirovat' novyj fajl bez sohraneniya izmenenij, kotorye
delalis' v pervom.
Esli vy ispol'zuete komandu :r
, vy mozhete vklyuchit'
soderzhimoe drugogo fajla v tekushchij fajl. Naprimer, komanda
:r foo.txt
vstavit soderzhimoe fajla foo.txt
v dannoe mesto teksta.
Vy mozhete takzhe vypolnyat' komandy pryamo iz vi
. Komanda :r!
rabotaet kak :r
, no vmesto chteniya fajla ona vstavlyaet vyhod
dannoj komandy v bufer, v mesto, gde nahoditsya kursor. Naprimer,
esli vy ispol'zuete komandu
:r! ls -F
vy poluchite v rezul'tate
____________________________________________________________________
|COW IS THE TIME FOR ALL WOMEN TO COME TO THE AID OF THE HUNGRY. |
|letters/ |
|misc/ |
|papers/_ |
|~ |
|~__________________________________________________________________|
Vy mozhete vypolnit' komandu a
, nahodyas' v redaktore vi
i
vernut'sya v redaktor posle ee zaversheniya Naprmier, esli vy
ispol'zuete komandu
:! ls -F
budet vypolnena komanda ls -F
, a rezul'tat vydan na
ekran, a ne vstavlen v redaktiruemyj fajl. Esli vy ispol'zuete
komandu
:shell
vi
zapustit shell, kotoryj pozvolit vremenno "otlozhit'" vi i
vypolnit' komandy. Posle vyhoda iz shell (ispol'zuya komandu exit
)
vy vernetes' v vi
.
vi
ne slishkom silen v interaktivnoj pomoshchi (da i bol'shinstvo
UNIX-ov takzhe), no vy vsegda mozhete posmotret' stranicy
Rukovodstva dlya vi
. vi
- eto "vizual'naya sostavlyayushchaya" redaktora
ex
; eto ex
delaet mnogoe dlya podderzhaniya rezhima poslednej stroki
i komandnogo rezhima v vi
. Tak chto v dopolnenie k chteniyu
Rukovodstva po vi
posmotrite takzhe Rukovodstvo po ex
.
Shell obespechivaet razlichnye mehanizmy nastrojki vashej rabochej sredy. My uzhe upominali ranee, chto shell bol'she, chem komanda interpretacii - eto takzhe moshchnyj yazyk programmirovaniya. No obsuzhdenie programmirovaniya na shell uvelo by nas daleko v storonu, a my by hoteli poznakomit' vas s nekotorymi sposobami uproshcheniya vashej raboty v UNIX za schet ispol'zovaniya nekotoryh dopolnitel'nyh poleznyh svojstv shell.
Kak my upominali ranee, razlichnye obolochki ispol'zuyut
razlichnyj sintaksis dlya napisaniya svoih programm. Naprimer, Tcsh
ispol'zuet sintaksis, pohozhij na yazyk Si, v to vremya kak shell
Baurna imeet drugoj sintaksis. V etom razdele my ne budem
zanimat'sya ih razlichiyami, a rassmotrim primery, ispol'zuya
sintaksis shell Baurna
Predpolozhim, chto vy chasto ispol'zuete seriyu komand i hoteli by sokratit' ob'em postoyannoj pechati za schet gruppirovki ih v odnu komandu. Naprimer, komandy
/home/larry# cat chapter1 chapter2 chapter3 > book
/home/larry# wc -l book
/home/larry# lp book
ob'edinyayut fajly, soderzhashchie glavy knigi: chapter1
,
chapter2
, chapter3
i pomeshchayut rezul'tat v fajl book
.
Zatem
podschityvaetsya chislo strok v knige (v fajle book
) i otobrazhaetsya
na displee i, nakonec, pechataetsya komandoj lp
.
Vmesto vvedeniya kazhdyj raz etih komand, vy mozhete sobrat' ih v odin scenarij (komandnyj fajl). Scenarii shell my kratko opishem v Razdele 3.13.1. A scenarij, kotoryj vypolnit vysheprivedennye komandy, budet vyglyadet' sleduyushchim obrazom
#!/bin/sh
# A shell script to create and print the book
cat chapter1 chapter2 chapter3 > book
wc -l book
lp book
Esli etot scenarij budet pomeshchen v fajl makebook
, to vy
mozhete prosto ispol'zovat' dalee komandu
/home/larry# makebook
kotoraya vypolnit vse komandy scenariya. Scenarii shell - eto
obychnye tekstovye fajly, kotorye vy mozhete sozdavat' s pomoshch'yu
redaktora vrode emacs
ili vi
. (vi
obsuzhdalsya v Razdele 3.12)
Davajte posmotrim na etot scenarij. Pervaya stroka
``#!
bin/sh/'' govorit o tom, chto etot fajl est' scenarij i
soobshchaet shell, kak vypolnit' scenarij. V dannom sluchae
neobhodimo peredat' scenarij dlya vypolneniya komande bin/sh/, gde
bin/sh/ - sama programma shell. Pochemu eto vazhno? V bol'shinstve
sistem UNIX
bin/sh/ - eto shell Baurnovskogo tipa, naprimer
bash
.
Iniciiruya rabotu scenariya shell vypolnyaetsya, ispol'zuya bin/sh/,
pri etom my garantiruem, chto scenarij budet vypolnyat'sya imenno
pod shell Baurnovskogo tipa (a ne, skazhem, pod C shell). |tot
scenarij budet vypolnyat'sya pod shell Baurna, dazhe esli vy
ispol'zuete Tcsh (ili kakoj-to drugoj C shell) kak svoyu rabochuyu
obolochku.
Vtoraya stroka predstavlyaet iz sebya kommentarij. Kommentarii
nachinayutsya simvolom ``#
'' i mogut prodolzhat'sya do konca stroki -
oni ignoriruyutsya shell i mogut ispol'zovat'sya programmistom dlya
poyasnenij.
Ostal'nye stroki scenariya - obychnye komandy v tom vide, v kakom by vy ih vvodili pryamo na vypolnenie. Shell chitaet kazhduyu stroku scenariya i vypolnyaet etu stroku, kak budto vy vveli etu stroku v otvet na podskazku shell.
Prava dostupa vazhny dlya scenariev. Esli vy sozdali scenarij,
vy dolzhny ubedit'sya, chto vy imeete prava na ego vypolnenie.
/home/larry# chmod u+x makebook
chtoby dat' samomu sebe razreshenie na vypolnenie
shell-scenariya makebook
.
Shell pozvolyaet opredelyat' peremennye, kak i bol'shinstvo
yazykov programmirovaniya. Peremennaya - eto porciya dannyh, kotoroj
dano imya.
VNIMANIE! Imejte v vidu, chto Tcsh, takzhe, kak i C shell,
ispol'zuyut razlichnye mehanizmy opredeleniya peremennyh,
otlichayushchiesya ot ispol'zuemyh zdes'. Zdes' obsuzhdaetsya shell
Baurna. Kogda vy prisvoite znachenie peremennoj (ispol'zuya
operator ``=
'' ), vy smozhete poluchit' eto znachenie, dobaviv pered
imenem peremennoj simvol ``$
'', kak eto pokazano nizhe
/home/larry# foo=``hello there''
Peremennoj foo prisvoeno znachenie ``hello there
''. Teper' vy
mozhete obratit'sya k etoj peremennoj, dobaviv pered imenem
simvol ``$
''. Komanda
/home/larry# echo $foo
hello there
/home/larry#
daet tot zhe samyj rezul'tat, chto i
/home/larry# echo ``hello there''
hello there
/home/larry#
|ti peremennye yavlyayutsya vnutrennimi dlya shell. |to oznachaet, chto tol'ko shell imeet dostup k etim peremennym. |to mozhet byt' polezno dlya scenariev; esli vam nado sohranit' informaciyu o imeni fajla, vy, naprimer, mozhete pomestit' ego v peremennuyu. Komanda set mozhet pokazat' vam perechen' vseh opredelennyh peremennyh shell.
Shell pozvolyaet eksportirovat' peremennye v sredu. Sreda -
eto mnozhestvo peremennyh, k kotorym mogut imet' dostup
vse vypolnyaemye komandy. Opredeliv odnazhdy peremennuyu vnutri shell
export
vy mozhete peredat' ee srede.
VNIMANIE! Zdes' vnov' est' otlichie mezhdu Bash i Tcsh. Pri
ispol'zovanii Tcsh ispol'zuetsya drugoj sisntaksis dlya pomeshcheniya
peremennyh v sredu (ispol'zuetsya komanda setenv
). Dopolnitel'nuyu
informaciyu mozhno najti v Rukovodstve po Tcsh.
Sreda ochen' vazhna v sistemah UNIX. Ona pozvolyaet konfigurirovat' nekotorye komandy za schet ustanovki peremennyh, o kotoryh znayut komandy.
Vot nebol'shoj primer. Peremennaya sredy PAGER
ispol'zuetsya
komandoj man. Ona ukazyvaet komandu, kotoraya ispol'zuetsya v svoyu
ochered' komandoj man dlya prosmotra Rukovodstva na ekrane. Esli vy
ustanovite v kachestve znacheniya PAGER
imya drugoj komandy, to eta
komanda vmesto budet obespechivat' prosmotr vmesto more (kotoraya
primenyalas' po umolchaniyu).
Prisvojte PAGER
znachenie ``cat
''. Vydacha na ekran rukovodstva
budet vsya razom, a ne poekranno, kak eto delala komanda more.
/home/larry# PAGER=cat
Teper' eksportirujte PAGER
v sredu.
/home/larry# export PAGER
Poprobujte komandu man ls
. Rukovodstvo promel'knet po vashemu
ekranu bez (zhelatel'nyh) zaderzhek.
Teper', esli prisvoit' PAGER
znachenie ``more
'', to dlya
vydachi na ekran budet ispol'zovat'sya komanda more.
/home/larry# PAGER=more
Obratim vnimanie na to, chto nam ne nado zanovo ispol'zovat'
komandu export
posle izmeneniya znacheniya PAGER
. Neobhodimo tol'ko
raz eksportirovat' peremennuyu; lyubye izmeneniya, kotorye budut
proishodit' posle etogo, budut otrazhat'sya v srede.
Stranicy Rukovodstva dlya konkretnyh komand soderzhat
informaciyu o tom, ispol'zuet li komanda kakie-to peremennye
sredy. Naprimer, Rukovodstvo po komande man govorit o tom, chto
dlya opredeleniya rezhima vydachi stranicy rukovodstva na ekran
ispol'zuetsya peremennaya PAGER
. Nekotorye komandy sovmestno
ispol'zuyut peremennye sredy, naprimer, mnogie komandy ispol'zuyut
peremennuyu sredy EDITOR
dlya ukazaniya ispol'zuemogo redaktora.
Peremennye sredy ispol'zuyutsya takzhe dlya sohraneniya vazhnoj informacii
o procedure vhoda. Naprimer peremennaya HOME
soderzhit imya
vashego domashnego kataloga.
/home/larry/papers# echo $HOME /home/larry
Drugaya interesnaya peremennaya sredy - PS1
, kotoraya opredelyaet
glavnuyu podskazkn shell. Naprimer,
/home/larry# PS1=``Your command, please: '' Your command, please:
Dlya pereustanovki podskazki obratno v normal'noe sostoyanie
(kogda ona pokazyvaet tekushchij rabochij katalog, posle
kotorogo sleduet znachek ``#
''), vypolnite sleduyushchee:
Your command, please: PS1=``\w# '' /home/larry#
V Rukovodstve bash
est' podrobnoe opisanie sintaksisa,
ispol'zuemogo pri ustanovke podskazki.
Kogda vy ispol'zuete komandu ls
, kak shell nahodit
sootvetstvuyushchij vypolnyaemyj fajl (programmu) dlya ls
? Na samom dele
v bol'shinstve sistem ls
nahoditsya v /bin/ls
. shell ispol'zuet
peremennuyu sredy PATH
("TROPA") dlya ukazaniya vozmozhnogo
mestopolozheniya vypolnyaemyh fajlov sootvetstvuyushchih komand.
Naprimer, vasha peremennayaPATH
mozhet imet' znachenie
/bin:/usr/bin:/usr/local/bin:.
|to spisok katalogov (v kotoryh shell budet iskat'
komandu), otdelyaemyh drug ot druga dvoetochiem ``:
''. Kogda vy
ispol'zuete komandu ls
, shell
prezhde vsego proveryaet nalichie
/bin/ls
, zatem /usr/bin/ls
i t.d.
Obratite vnimanie na to, chto peremennaya PATH
ne pomogaet
nahodit' obychnye fajly. Naprimer, esli vy ispol'zuete komandu
/home/larry# cp foo bar
shell ne ispol'zuet PATH
dlya nahozhdeniya mestoprebyvaniya
fajlov foo
i bar
- predpolagaetsya, chto eti imena odnoznachno
opredelyayut mesto. shell ispol'zuet PATH
tol'ko dlya nahozhdeniya
komandy cp.
|to ekonomit vam massu vremeni; eto oznachaet, chto vy ne
obyazany pomnit', gde nahodyatsya vypolnyaemye fajly komand. Vo
mnogih sistemah vypolnyaemye fajly razbrosany vo mnogih mestah,
takih kak /usr/bin
, /bin
ili /usr/local/bin
.
Vmesto togo, chtoby
pisat' polnoe imya komandy (vrode /usr/bin/cp
), vy prosto
ukazyvaete v PATH
perechen' katalogov, kotorye by vy hoteli,
chtoby shell avtomaticheski prosmatrival.
Obratite vnimanie, chto PATH
soderzhit ``.
'', chto oznachaet
"tekushchij rabochij katalog". |to pozvolyaet vam sozdavat'
shell-scenarii ili programmy i vypolnyat' ih kak komandy iz
tekushchego kataloga, bez neobhodimosti ukazyvat' eto pryamo (kak v
sluchae ./makebook
). Esli katalog ne ukazan v PATH
, to shell ne
budet ego prosmatrivat' v poiske komand, eto kasaetsya i tekushchego
kataloga.
V dopolnenie k shell-scenariyam, kotorye sozdaete vy, sushchestvuet mnozhestvo scenariev, kotorye ispol'zuet sam shell dlya svoih celej. Naibolee vazhnymi sredi nih yavlyayutsya scenarii inicializacii, kotorye avtomaticheski vypolnyayutsya shell pri vashem vhode v sistemu.
Scenarii inicializacii sami po sebe - eto obychnye scenarii,
kak eto opisyvalos' vyshe. No oni ochen' polezny pri ustanovke
vyshej sredy putem avtomaticheskogo vypolneniya nabora komand pri
vashem vhode v sistemu. Naprimer, esli vy vsegda ispol'zuete
komandu mail
dlya proverki svoej pochty v moment vhoda v sistemu,
vy mozhete pomestit' etu komandu v svoj scenarij inicializacii i
ona budet vypolnena avtomaticheski.
Kak Bash, tak i Tcsh delayut razlichie mezhdu nachal'nym shell
(vyzyvaemym pri vhode v sistemu) i prochimi vyzovami shell.
Nachal'nyj shell vyzyvaetsya v moment vhoda pol'zovatelya v sistemu;
chasto eto edinstvennyj ekzemplyar shell, kotoryj vy ispol'zuete.
No esli vy vyzyvaete shell iz drugoj programmy, takoj kakvi
, vy
tem samym zapuskaete novyj (ekzemplyar) shell. Krome togo, kogda
vy zapuskaete na vypolnenie shell-scenarii, vy avtomaticheski
iniciiruete novyj ekzemplyar shell.
Fajly inicializacii, ispol'zuemye v Bash: /etc/profile
(ustanavlivaetsya sistemnym administratorom, vypolnyaetsya vsemi
ekzemplyarami nachal'nyh pol'zovatel'skih bash
, vyzvannymi pri
vhode pol'zovatelej v sistemu), $HOME/.bash_profile
(vypolnyaetsya
pri vhode pol'zovatelya) i $HOME/.bashrc
(vypolnyaemyj vsemi
prochimi bash
). Esli .bash_profile
otsutstvuet, vmesto nego ispol'zuetsya .profile
.
Tcsh ispol'zuet sleduyushchie scenarii inicializcii:
/etc/csh.login
(vypolnyaetsya vsemi pol'zovatel'skimi tcsh
v moment
vhoda v sistemu), $HOME/.tcshrc
(vypolnyaetsya vo vremya vhoda v
sistemu i vsemi novymi ekzemplyarami tcsh
)
i $HOME/.login
(vypolnyaetsya vo vremya vhoda posle .tcshrc
). Esli .tcshrc
otsutstvuet, vmesto nego ispol'zuetsya .cshrc
.
Dlya togo, chtoby luchshe ponyat' funkcii etih fajlov, vam
sleduet bol'she uznat' o shell. Programmirovanie na shell slozhnyj
vopros, daleko vyhodyashchij za ramki etoj knigi. Dopolnitel'nuyu
informaciyu mozhno poluchit' iz Rukovodstva na bash
i tcsh
.
Nadeemsya, chto my dali dostatochno informacii otnositel'no togo, kak ispol'zovat' sistemu. Imejte v vidu, chto bol'shaya chast' interesnyh i vazhnyh aspektov Linux zdes' ne obsuzhdalas' - zdes' rassmatrivalis' tol'ko samye bazovye. No etot fundament pomozhet vam bystro osvoit' i ispol'zovat' bolee slozhnye prilozheniya. Esli vse rassmotrennoe zdes' vam ne pokazalos' volnuyushche interesnym, ne unyvajte - v Linux est' eshche mnogo togo, s chem sledovalo by poznakomit'sya. Odin iz nezamenimyh sposobov izucheniya sistemy - eto chtenie Rukovodstva. Hotya mnogie stranicy Rukovodstva mogut vyglyadet' i dostatochno slozhnymi, esli vy budete dostatochno gluboko kopat', vy otkopaete nesmetnye rossypi poleznoj informacii.
My takzhe sovetuem prochitat' kakuyu-to polnuyu knigu po sisteme UNIX. V UNIX znachitel'no bol'she raznoobraznyh vozmozhnostej, chem mozhno uvidet' s pevogo vzglyada - k sozhaleniyu, oni vyhodyat za ramki etoj knigi. Nekotorye horoshie knigi po UNIX ukazany v Prilozhenii A.
Soderzhimoe etoj glavy, Glavnoe oglavlenie
Nachalo dokumenta, Nachalo etoj glavy