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