Z DOS/Windows na Linux Guido Gonzato, guido@ibogfs.cineca.it v1.3.0, 15. april 1998 Ta HOWTO je posvečen vsem bodočim bivšim uporabnikom sistemov DOS in Windows, ki so se odločili za prehod na Linux, prost klon Unixa. Ta spis naj bi bralcu pomagal prestaviti svoje znanje sistemov DOS in Windows v novo okolje, kot tudi ponudil nasvete glede izmenjave datotek in virov med enim in drugim operacijskim sistemom. ______________________________________________________________________ Kazalo 1. Uvod 1.1 Je Linux prava stvar za vas? 1.2 Je. Povejte mi več o njem! 1.2.1 Uvodni pojmi 1.2.2 Kako do pomoči 1.3 Dogovori 2. Za nestrpne 3. Datoteke in programi 3.1 Datoteke: uvodni pojmi 3.2 Simbolne povezave 3.3 Dovolilnice in lastništvo nad datotekami 3.4 Datoteke: primerjava ukazov 3.4.1 Primeri 3.5 Poganjanje programov: večopravilnost in seanse 3.6 Poganjanje programov na drugih računalnikih 4. Imeniki 4.1 Imeniki: pripravljalni pojmi 4.2 Imeniki in dovolilnice 4.3 Imeniki: vzporedba ukazov 4.3.1 Primeri 5. Disketniki, diski in podobno 5.1 Delo z enotami po dosovsko 5.2 Delo z enotami v duhu Unixa 5.3 Varnostne kopije 6. Kaj pa okna? 7. Ukrojitev sistema 7.1 Sistemske inicializacijske datoteke 7.2 Programske inicializacijske datoteke 8. Kanček programiranja 8.1 Skripte: datoteke .BAT na steroidih 8.2 C za vas 9. Preostali 1% 9.1 Arhiviranje datotek: tar in gzip 9.2 Nameščanje dodatnih programov 9.3 Nasveti brez katerih ne gre 9.4 Kje najdemo programe 9.5 Sladkorčki 9.6 Pripone imen datotek in programi, ki jih uporabljajo 9.7 Pretvorba datotek 10. Konec, zaenkrat 10.1 Copyright 10.2 Pravni poduk ______________________________________________________________________ 1. Uvod 1.1. Je Linux prava stvar za vas? Bi tudi vi radi prešli z okolja DOS/Windows na Linux? Dobra ideja: Linux je tehnično superioren glede na DOS, Windows 95 in celo glede na Windows NT. Ampak pazite: če niste iz prave zvrsti uporabnikov, morda za vas ne bo uporaben. V resnici se DOS in Windows uporabljata večinoma za igranje igric in pisarniška opravila, medtem ko Linux blesti pri omrežnih povezavah, razvoju programja in pisanju znanstvenih programov. Linux je izjemno zmogljiv, vendar pa navadno zahteva nekaj časa, preden se naučite krotiti to moč. Če torej večinoma uporabljate računalnik za pisarniška dela, ali če nimate pravega veselja do učenja novih ukazov in pojmov, potem Linux verjetno ni za vas. Dela se sicer na tem, da bi bil Linux enostavnejši za uporabo, vseeno pa ne pričakujte, da ga boste obvladali, ne da bi prebrali veliko dokumentacije in ga vsaj nekaj mesecev uporabljali. Linux vam ne bo dal instantnih rezultatov. Navzlic tem opozorilom pa vam stoodstotno zagotavljam, da ste, če ste le pravi tip uporabnice ali uporabnika, v Linuxu našli svojo računalniško Nirvano, in da ne boste nikoli več hoteli iti nazaj na DOS ali Windows. In mimogrede: Linux ter DOS in Windows lahko mirno sobivajo na istem stroju. Predpogoji za ta spis: predpostavljam, da * poznate osnovne ukaze in pojme okolja DOS * je Linux, po možnosti skupaj z X Window System, že pravilno nameščen na vašem osebnem računalniku * je vaša ukazna lupina (ekvivalent COMMAND.COM) bash. Če ni poudarjeno drugače, se vse informacije v tem spisu nanašajo na slabi stari DOS. Tu in tam se najde kakšna informacija o Windows, védite pa, da sta Windws in Linux popolnoma različna pojma, za razliko od okolja DOS, ki je, resda uborna, paralela Unixu. Prosim, razumite tudi, da ta spis ni ne celovit uvod v Linux, niti priročnik za njegovo nastavitev. 1.2. Je. Povejte mi več o njem! Na svoj računalnik ste namestili Linux in vse potrebne programe. Ustvarili ste svoj uporabniški račun (če ga še niste, napravite to takoj z ukazom adduser), in Linux lepo teče. Ravnokar ste vnesli svoje uporabniško ime in geslo, in zdaj ste se zazrli v zaslon z mislijo: ,,No, kaj pa zdaj?`` Ne obupujte. Skoraj ste že pripravljeni, da boste počeli vse stvari, ki ste jih počeli pod DOS/Windows, in še mnogo več. Pod prejšnjim okoljem ste verjetno počeli naslednje stvari: * poganjali ste programe; ustvarjali, prepisovali, pregledovali, brisali, tiskali in preimenovali datoteke * z ukazi CD, MD, RD in DIR ste se premikali po vaših imenikih, ustvarjali nove, jih brisali, in izpisovali njihovo vsebino * formatirali ste diskete in prepisovali datoteke z njih na disk in nazaj * okolje ste si prikrojili po svoje * pisali ste datoteke .BAT in programirali v svojem najljubšem programskem jeziku * preostali 1% Razveselili se boste novice, da se vsa omenjena opravila izvajajo pod Linuxom na podoben način. V okolju DOS povprečni uporabnik uporablja le kak ducat od nekaj čez 100 obstoječih ukazov, podobno do neke mere velja za Linux. 1.2.1. Uvodni pojmi Najboljši način, da se naučite česa novega je, da tudi sami skočite v vodo. Eksperimentiranje in igranje z Linuxom je nadvse priporočljivo, saj z njim ne morete poškodovati sistema. Nekaj točk: * Najprej se naučite, kako varno končate delo z Linuxom. Če ste v tekstovnem načinu, pritisnite , počakajte, da se sistem znova zažene, in računalnik ugasnite, še preden začne z diska nalagati operacijski sistem. Če delate v okolju X Window System, pritisnite najprej , da se vrnete v tekstovni način, potem pa še . Nikoli ne ugašajte računalnika ali pritiskajte tipke Reset sredi dela, to lahko poškoduje vaše podatke na disku. * Za razliko od okolja DOS/Windows ima Linux vgrajene varnostne mehanizme. Datoteke in imeniki imajo dovoljenje za pisanje in branje, in kot rezultat tega, do nekaterih kot navaden uporabnik ne morete (oglejte si še razdelek ``Dovolilnice in lastništvo nad datotekami''. DOS vam na drugi strani dovoli, da pobrišete celotno vsebino vašega diska. * Obstaja posebni ,,superuporabnik`` z imenom ,,root``. To je upravnik sistema, ki ima dovolj moči, da lahko odloča o življenju in smrti stroja. Če delate na svojem osebnem računalniku, boste sami morali tudi upravljati sistem. Delati kot root je nevarno: vsaka napaka lahko resno poškoduje ali celo uniči celoten sistem, enako kot pod DOS/Windows. Zato se prijavite kot root le, če res ne gre drugače. * V precejšnji meri je za kompleksnost Linuxa kriva njegova izjemna nastavljivost; takorekoč vsako njegovo lastnost in vsak program si lahko prek ene ali večih nastavitvenih datotek prikrojite po lastnih željah in potrebah. Zapletenost je pač cena, ki smo jo plačali za to možnost. * Preusmeritev in nizanje ukazov sta obstranski strani v DOS, v Linuxu pa zelo pomembni in predvsem neprimerno močnejši. Preproste ukaze lahko nanizate za dosego zapletenih opravil. Močno priporočam, da se naučite ravnanja z njimi. 1.2.2. Kako do pomoči Mnogo načinov je, kako priti do pomoči, če se z Linuxom kaj zatakne. Najpomembnejši so: * Branje navodil. Resno mislim. Čeprav lahko spis, ki ga berete, služi kot uvod v Linux, ne more nadomestiti branja katere od naslednjih knjig: Matt Welsh ,,Linux Installation and Getting Started`` ( , slovenski prevod je v pripravi), Larry Greenfield ,,Linux User Guide`` (), in spisek pogosto zastavljanih vprašanj o Linuxu (). Imejte slabo vest, dokler ne preberete vsaj ene od njih. * Dokumentacijo za nameščene programske pakete dostikrat najdete v podimenikih imenika /usr/doc/. * Navodila za katerega od internih ukazov ukazne lupine dobite z ukazom help. Izčrpnejše informacije dobite z ukazoma man bash ali info bash. * Navodila za posamezen ukaz dobite z ukazom man ukaz. Ta prikaže stran iz priročnika (angl. manual), ki pripada iskanemu ukazu. Alternativa je ukaz info ukaz, ki, če je na voljo, prikliče poglavje ukaz iz informacijskega sistema info. Hipertekstni informacijski sistem info prvi hip morda ne deluje najbolj intuitivno. In končno lahko poskusite apropos ukaz ali whatis ukaz. Iz vseh naštetih dokumentacijskih sistemov se izmotate s pritiskom na tipko ,q`. 1.3. Dogovori V tem spisu bodo zgledi pogosto sledili naslednjemu vzorcu: z <...> označimo obvezni argument ukaza, z [...] pa neobveznega. Primer: $ tar -tf [> preusmerjena_datoteka] datoteka.tar mora biti določena, preusmeritev v preusmerjeno_datoteko pa je neobvezna. Koderkoli je kot pozivnik pri zgledu ukaza zapisan znak ,#`, to pomeni, da lahko ukaz izvede samo root. 2. Za nestrpne Vas že srbijo prsti? Oglejte si naslednjo tabelo: DOS Linux Opombe ---------------------------------------------------------------------------- ATTRIB (+-)attr file chmod file čisto nekaj drugega BACKUP tar -Mcvf device dir/ prav tako CD dirname\ cd dirname/ skoraj enaka skladnja COPY file1 file2 cp file1 file2 prav tako DEL file rm file pazite -- ukaza undelete ni DELTREE dirname rm -R dirname/ prav tako DIR ls različna skladnja DIR file /S find . -name file povsem različna EDIT file vi file ne vem, če vam bo všeč jstar file ta je tak kot edit v DOS FORMAT fdformat, mount, umount precej drugačna skladnja HELP command man command, ista filozofija info command MD dirname mkdir dirname/ skoraj enaka skladnja MOVE file1 file2 mv file1 file2 prav tako NUL /dev/null prav tako PRINT file lpr file prav tako PRN /dev/lp0, /dev/lp1 prav tako RD dirname rmdir dirname/ prav tako REN file1 file2 mv file1 file2 ne gre za več datotek RESTORE tar -Mxpvf device različna skladnja TYPE file less file bistveno boljši WIN startx kot severni in južni tečaj! Če vam ta tabela ne zadošča, si oglejte naslednje razdelke. 3. Datoteke in programi 3.1. Datoteke: uvodni pojmi Struktura imenikov in datotek na Linuxu je zelo podobna tisti na DOS/Windows. Datoteke imajo imena, za katera veljajo določena pravila, in so shranjena v imenikih. Nekatere od njih so programi, in večina med njimi pozna ukazne izbire. Nadalje, uporabljate lahko džokerje, preusmeritve in nizanje ukazov. Obstaja le nekaj manjših razlik: * V DOS velja za imena datotek omejitev 8+3 (do osem znakov imena, do tri znake pripone), npr. NOTENOUG.TXT. Pod Linuxom so stvari lepše. Če ste namestili Linux z datotečnim sistemom, kot sta na primer ext2 ali umsdos, lahko uporabljate daljša imena datotek (do 255 znakov) in več kot eno piko v imenu, na primer To_je.zelo_dolgo.IME.datoteke. Verjetno ste opazili, da sem uporabil velike in male črke, to je zato, ker... * Linux razlikuje med velikimi in malimi črkami v imenih datotek ali ukazov. Zato sta DATOTEKA.tar.gz in datoteka.tar.gz dve različni datoteki. ls pomeni ukaz; LS pomeni napako. * Posebno opozorilo za uporabnike Windows 95. Če ime datoteke vsebuje presledke (kar ni pametno, je pa načeloma možno), morate pri vsakem sklicu nanj navesti takšno ime znotraj dvojnih narekovajev. Zgled: $ # naslednji ukaz ustvari imenik "Stare datoteke" $ mkdir "Stare datoteke" $ ls Stare datoteke bin tmp Nadalje: nekateri znaki niso dovoljeni, med njimi so !*$&. * Nobenih obveznih pripon kot na primer .COM in .EXE za programe ali .BAT za paketne datoteke ni. Izvodljive datoteke so označene z zvezdico ,*` na koncu, kadar izpišete vsebino imenika z ukazom ls -F. Na primer: $ ls -F I_am_a_dir/ cindy.jpg cjpg* letter_to_Joe my_1st_script* old~ Datoteki cjpg* in my_1st_script* sta izvodljivi, torej programa. V DOS imajo varnostne kopije pripono .BAK; v Linuxu se končajo s tildo ,~`. Še nekaj: če se ime datoteke začne s piko, na primer .skrita_datoteka, ga ukaz ls ne prikaže. * Izbire v programih za DOS navadno uvede poševnica (npr. /izbira), v programih na Linuxu in Unixu nasplošno pa ena ali dve črtici, torej -izbira ali --dolga-izbira. Ukaz dir /s, na primer, tako postane ls -R. Verjetno ste že opazili, da tudi mnogi programi za DOS uporabljajo ta stil določanja izbir, med njimi PKZIP in ARJ. Zdaj lahko tudi preskočite na razdelek ``Datoteke: primerjava ukazov'', na vašem mestu pa bi bral dalje. 3.2. Simbolne povezave Unix pozna zvrst datoteke, ki na DOS ne obstaja: simbolne povezave. Lahko si jih zamišljamo kot kazalce na datoteke ali imenike, in jih lahko uporabljamo namesto datotek ali imenikov, na katere kažejo; podobno kot bližnjice na Windows 95. Primera simbolnih povezav sta imenik /usr/X11, ki kaže na /usr/X11R6/ in enota /dev/modem, ki kaže bodisi na /dev/cua0 ali /dev/cua1. Simbolno povezavo napravimo takole: $ ln -s Zgled: $ ln -s /usr/doc/g77/DOC g77manual.txt Zdaj se lahko sklicujemo na g77manual.txt namesto na /usr/doc/g77/DOC. Simbolnim povezavam se pri izpisu vsebine imenika doda znak ,@` na koncu. $ ls -F g77manual.txt@ $ ls -l (druge reči...) g77manual.txt -> /usr/doc/g77/DOC 3.3. Dovolilnice in lastništvo nad datotekami Datoteke in imeniki v DOS imajo lahko naslednje prilastke: A (arhivski), H (skrit, angl. hidden), R (dovoljen samo za branje, angl. read-only), ali S (sistemski). Samo H in R sta smiselna tudi pod Linuxom: imena skritih datotek in imenikov se začnejo s piko, o prilastku R pa več v nadaljevanju. Pod Unixom ima vsaka datoteka dovolilnice (angl. permissions) in lastnika (angl. owner), ki nadalje pripada eni ali večim skupinam uporabnikov (group). Poglejmo si naslednji primer: $ ls -l /bin/ls -rwxr-xr-x 1 root bin 27281 Aug 15 1995 /bin/ls* Ime datoteke, /bin/ls, je izpisano v zadnjem polju. Prvo polje so dovolilnice za datoteko. Vidimo tudi, da je lastnik datoteke root, pripada pa skupini bin. Ostale informacije zaenkrat pustimo ob strani in si oglejmo dovolilnice. -rwxr-xr-x pomeni, od leve proti desni: Prvi - je zvrst datoteke (- je navadna datoteka, d imenik, l simbolna povezava in tako dalje.) Preostale znake beremo v trojicah. rwx so dovolilnice za lastnika. Ta lahko datoteko bere (read), piše oz. briše (write) in izvaja (execute). r-x so dovolilnice za uporabnike iz skupine bin. Ti jo lahko berejo (read) in izvajajo (execute), ne morejo pa je spreminjati (pisati ali brisati). Pojma skupine zaenkrat ne bomo obravnavali; dokler ste začetnik ali začetnica, lahko preživite tudi brez njega. Zadnji r-x so dovolilnice za vse ostale uporabnike. Tudi ti lahko datoteko berejo in izvajajo, ne morejo pa je spreminjati. Tudi imenik /bin ima svoje dovolilnice; za podrobnosti si oglejte ``Imeniki in dovolilnice''. Dovolilnice so razlog, zakaj ne morete pobrisati datoteke /bin/sl, razen če niste root: nimate dovoljenja za spreminjanje te datoteke. Dovolilnice za posamezno datoteko lahko spreminjate z ukazom: $ chmod ,,Kdo`` je lahko u (uporabnik, torej lastnik), g (skupina), ali o (ostali). Namesto X stoji bodisi + (izdamo dovolilnico) ali - (prekličemo dovolilnico). In končno, ,,dovoljenje`` je lahko r (dovoljenje za branje, angl. read), w (dovoljenje za pisanje oz. spreminjanje; angl. write), ali x (dovoljenje za izvajanje, angl. execute). Sledi nekaj običajnih primerov uporabe ukaza chmod: $ chmod +x datoteka Datoteko smo napravili izvodljivo. $ chmod go-rw datoteka Umaknili smo dovoljenje za branje in pisanje za skupino in vse ostale, datoteko lahko bere in spreminja le še lastnik. $ chmod ugo+rwx datoteko. S takšno dovolilnico lahko vsakdo bere, spreminja ali izvaja datoteko. # chmod +s datoteka Izdali smo dovolilnico, s katero lahko vsakdo izvaja to datoteko z enakimi pooblastili, kot jih ima lastnik te datoteke (običajno datoteke izvajamo z lastnimi pooblastili). To je takoimenovana datoteka vrste ,,setuid`` ali ,,suid``. Navadno gre za sistemske datoteke kot npr. strežnik X, katerih lastnik je root, saj lahko le z njegovimi pooblastili dostopamo do nekaterih sistemskih virov. Na dovolilnice se lahko sklicujemo tudi z osmiško kodo: rwxr-xr-x tako na primer izrazimo kot 755 (vsaki črki iz trojice ustreza en bit: --- je 0, --x je 1, -w- je 2, -wx je 3 itd.). Na prvi pogled zgleda težavno, z nekaj prakse pa boste hitro razumeli koncept. Edino superuporabnik, root, lahko spreminja dovolilnice za katerokoli datoteko na sistemu, ostali pa le svoje. RMP. 3.4. Datoteke: primerjava ukazov Na levi je ukaz DOS, na desni enakovredni ukaz v Linuxu ATTRIB: chmod COPY: cp DEL: rm MOVE: mv REN: mv TYPE: more, less, cat Preusmeritev in nizanje ukazov: < > >> | Džokerji: * ? nul: /dev/null prn, lpt1: /dev/lp0 or /dev/lp1; lpr 3.4.1. Primeri DOS Linux --------------------------------------------------------------------- C:\GUIDO>ATTRIB +R FILE.TXT $ chmod 400 file.txt C:\GUIDO>COPY JOE.TXT JOE.DOC $ cp joe.txt joe.doc C:\GUIDO>COPY *.* TOTAL $ cat * > total C:\GUIDO>COPY FRACTALS.DOC PRN $ cp fractals.doc /dev/lp1 C:\GUIDO>DEL TEMP $ rm temp C:\GUIDO>DEL *.BAK $ rm *~ C:\GUIDO>MOVE PAPER.TXT TMP\ $ mv paper.txt tmp/ C:\GUIDO>REN PAPER.TXT PAPER.ASC $ mv paper.txt paper.asc C:\GUIDO>PRINT LETTER.TXT $ lpr letter.txt C:\GUIDO>TYPE LETTER.TXT $ more letter.txt C:\GUIDO>TYPE LETTER.TXT $ less letter.txt C:\GUIDO>TYPE LETTER.TXT > NUL $ cat letter.txt > /dev/null n/a $ more *.txt *.asc n/a $ cat section*.txt | less Opombe: * Džoker * je na Linuxu pametnejši: * ujame vse datoteke razen skritih; .* ujame vse skrite datoteke (vendar tudi trenutni imenik ,.` in imenik nad njim, ,..`, zato previdno!); *.* ujame le tiste datoteke, ki imajo sredi imena piko, ali pa se končajo s piko. p*r ujame ,,parameter`` kot ,,papir``; *c* ujame tako ,,Kitajec`` kot ,,akcija``. * Pri uporabi more pritiskajte za naslednjo stran, ,q` za konec. Ukaz less je bolj intuitiven in dovoljuje uporabo kurzorskih tipk. * Nič takega kot UNDELETE ne obstaja, zato dvakrat premislite, preden karkoli pobrišete. * Dodatno k preusmeritvam < > >>, ki jih poznamo iz DOS, dovoljuje Linux tudi prusmeritve oblike 2>. S slednjo preusmerimo standardni izhod za napake (stderr); konstrukt 2>&1 tako preusmeri standardni izhod za napake (stderr) na standardni izhod (stdout), 1>&2 pa obratno. * Linux pozna še eno zvrst džokerjev []. Uporaba: [abc]* ujame vse datoteke, katerih imena se začno z a, b, c; *[I-N1-3] pa vsa imena, ki se končajo na I, J, K, L, M, N, 1, 2, 3; * Ukaz lpr natisne datoteko v ozadju. Če vas zanima, kaj se z njo dogaja in na katerem mestu v vrsti za tiskanje se nahaja, uporabite lpq; iz vrste za tiskanje jo umaknemo z ukazom lprm; * Nobenega ukaza ni, ki bi se obnašal kot RENAME v DOS; konkretno, mv *.xxx *.yyy ne napravi tega, kar si morda želite, da bi. Namesto tega lahko uporabite spodnjo skripto, oglejte si razdelek ``Skripte ukazne lupine: datoteke .BAT na steroidih'' za podrobnosti. ___________________________________________________________________ #!/bin/sh # ren: preimenuj več dat if [ $# -lt 3 ] ; then echo "usage: ren \"pattern\" \"replacement\" files..." exit 1 fi OLD=$1 ; NEW=$2 ; shift ; shift for file in $* do new=`echo ${file} | sed s/${OLD}/${NEW}/g` mv ${file} $new done ___________________________________________________________________ Opozorilo: skripta se ne obnaša enako kot REN v DOS, ampak uporablja tkim. regularne izraze, o katerih še ni tekla beseda. Na kratko: če bi s to skripto radi spremenili pripone več datotek naenkrat, to storite kot v tem zgledu: ren "htm$" "html" *htm. Ne pozabite na znak $. * Uporabljajte ukaza cp -i and mv -i, ki vas opozorita, preden bi kakšna datoteka bila prepisana. 3.5. Poganjanje programov: večopravilnost in seanse Program poženete tako, da vtipkate njegovo ime, torej enako kot v DOS. Če se imenik (glejte razdelek ``Uporaba imenikov''), kjer se program nahaja, nahaja v poti (PATH; razdelek ``Sistemske inicializacijske datoteke''), boste s tem program pognali. Za razliko od DOS pa Linux ne po pognal programa iz trenutnega imenika, če ta imenik ni naveden v poti. Izogib: iz trenutnega imenika program poženite z ukazom ./program. Običajna ukazna vrstica izgleda nekako takole: $ ukaz [-s1 [-s2] ... [-sn]] [par1 [par2] ... [parn]] [< vhod] [> izhod] Pri tem so -s1 ... -sn izbire programa, par1 ... parn pa parametri. V isti vrstici lahko zaporedoma poženete več ukazov, če jih med seboj ločite s podpičji: $ ukaz1 ; ukaz2 ; ... ; ukazn To je pravzaprav vse, kar morate vedeti o poganjanju programov. Čisto enostaven pa je tudi naslednji korak. Eden od glavnih razlogov za uporabo Linuxa je ta, da je večopravilni sistem -- več programov (od zdaj bomo programom med tekom rekli procesi) lahko teče hkrati. V ozadju lahko poženete nov proces in nemotemo nadaljujete s svojim delom. Še več: pod Linuxom ste lahko hkrati večkrat prijavljeni -- kot bi imeli več računalnikov! * Med prijavnimi seansami 1..6 na virtualni konzoli lahko preklapljate s pritiskom na ... * Znotraj prijavne seanso v virtualni konzoli lahko z ukazom su - poženete novo prijavno seanso, ne da bi s tem končali tekočo prijavno seanso. Primer su - root. Stvar je uporabna na primer pri kratkih opravilih, ki pa jih lahko izvaja samo root. * Prijavno seanso zaključite z ukazom exit. Če imate še kakšne ustavljene procese (več o njih v nadaljevanju), boste na to opozorjeni. * Proces poženete v ozadju tako, da na koncu ukazne vrstice dodate znak ,&`: $ program [-izbire] [parametri] [< vhod] [> izhod] & [1] 123 Ukazna lupina prepoznava procese po številki opravila (npr. [1]; več o opravilih v naslednji točki) in po identifikacijski številki procesa (angl. PID, Process Identification Number; v našem zgledu je to 123). * Seznam trenutno tekočih procesov dobite z ukazom ps -ax. * Proces prekinemo z ukazom kill . K temu se moramo včasih zateči, če ne vemo, kako bi zaključili po običajni poti. Prekinjate lahko samo svoje procese, izjema je root, ki lahko prekine katerikoli proces. Občasno je proces možno prekiniti samo z ukazom kill -SIGKILL . Ukazna lupina poleg prekinjanja dovoljuje tudi, da proces ustavimo ali začasno zamrznemo, določimo, da se izvaja v ozadju, ali pa prikličeno iz ozadja nazaj v ospredje. V tem kontekstu pravimo procesom ,,opravila``. * Seznam tekočih opravil dobite z ukazom jobs. Tu so opravila navedena le s številko opravila, ne s PID. * Proces ki teče v ospredju ustavimo s pritiskom na (ne dela nujno vedno). * Proces v ospredju zamrznemo s pritiskom na (tudi to de deluje vedno). * Zamrznjen proces pošljemo v izvajanje v ozadje z ukazom bg (s tem postane opravilo). * Opravilo prikličemo iz ozadja z ukazom fg . Brez dodatnega argumenta ukaz fg prikliče v ospredje zadnje opravilo, ki smo ga poslali v ozadje. * Opravilo prekinemo z ukazom kill <%opravilo>, pri čemer je številka posla: 1, 2, 3... S temi ukazi lahko obenem formatirate disk, pospravljate kopico datotek v arhiv, prevajate program in dekomprimirate drugo arhivsko datoteko, pa imate še vedno dostop do pozivnika. Pa poskusite kaj takega v DOS! Poskusite še v Windows (če bodo preživeli), da vidite razliko v hitrosti. 3.6. Poganjanje programov na drugih računalnikih Programe na drugem računalniku, katerega popolno mrežno ime je nekje.drugje.si, lahko poganjamo tako, da se nanj prijavimo s programom telnet: $ telnet nekje.drugje.si Ko ste prijavljeni, preprosto poženite program, ki ga želite. Verjetno je odveč povedati, da morate tudi na tem drugem računalniku imeti odprt uporabniški račun. V okenskem okolju X11 lahko na drugem računalniku celo poganjate programe, pisane za to okolje, na svojem pa prikazujete rezultate. Naj bo nekje.drugje.si oddaljeni računalnik, moj.linux.si pa naš mlinček z Linuxom. Postopek spodaj opisuje, kako z računalnika moj.linux.si poženemo program, ki se nahaja na drugem računalniku, nekje.drugje.si: * Poženemo X11 in v njih xterm ali ekvivalentni terminalski emulator. Potem tipkamo: $ xhost +nekje.drugje.si $ telnet nekje.drugje.si * Po prijavi na drug računalnik vtipkamo: remote:$ DISPLAY=moj.linux.si:0.0 remote:$ moj_program & (Odvisno od uporabljane ukazne lupine na drugem računalniku boste morda namesto vrstice DISPLAY... morali natipkati setenv DISPLAY moj.linux.si:0.0.) Et voila! Zdaj se bo moj_program pognal na nekje.drugje.si in uporabljal naš zaslon za prikaz. Ne poskušajte pa tega prek modema -- prepočasi gre, da bi bilo zares uporabno. 4. Imeniki 4.1. Imeniki: pripravljalni pojmi Ogledali smo si že razlike med datotekami pod DOS in pod Linuxom, zdaj pa so na vrsti imeniki. Pod DOS je vrhnji imenik \, medtem ko je pod Linuxom /. Podobno je tudi s podimeniki -- pod DOS so nivoji ločeni z obrnjeno poševnico (\), pod Linuxom pa s poševnico (/). Primera poti do datotek v enem in drugem primeru: DOS: C:\PAPERS\GEOLOGY\MID_EOC.TEX Linux: /home/guido/papers/geology/middle_eocene.tex Kot običajno .. označuje imenik nad trenutnim, . pa trenutni imenik. Vsak uporabnik ima svoj domači imenik, ki mu ga ustvari upravnik sistema; na mojem domačem računalniku je to na primer /home/guido. Spomnite se, da vam sistem ne bo dovolil izvajati ukazov cd, rd, ali md koderkoli bi si želeli. 4.2. Imeniki in dovolilnice Ne le datoteke, tudi imeniki imajo dovolilnice. Kar smo se v razdelku ``Lastništvo nad datotekami in dovolilnice'' naučili o lastniku, skupini in ostalih uporabnikih, velja tudi za imenike. Pri imeniku rx pomeni da lahko napravite cd v ta imenik, w pa pomeni, da lahko v njem ustvarite novo datoteko, zbrišete obstoječo datoteko, če njena dovolilnica to dovoljuje, ali zbrišete sam imenik. Za zgled si oglejmo, kako preprečimo, da bi uporabniki iz drugih skupin vohljali po naših besedilih: /home/guido/text: $ chmod o-rwx /home/guido/text 4.3. Imeniki: vzporedba ukazov DIR: ls, find, du CD: cd, pwd MD: mkdir RD: rmdir DELTREE: rm -R MOVE: mv 4.3.1. Primeri DOS Linux --------------------------------------------------------------------- C:\GUIDO>DIR $ ls C:\GUIDO>DIR FILE.TXT $ ls file.txt C:\GUIDO>DIR *.H *.C $ ls *.h *.c C:\GUIDO>DIR/P $ ls | more C:\GUIDO>DIR/A $ ls -l C:\GUIDO>DIR *.TMP /S $ find / -name "*.tmp" C:\GUIDO>CD $ pwd ga ni - glejte opombe $ cd enako $ cd ~ enako $ cd ~/temp C:\GUIDO>CD \OTHER $ cd /other C:\GUIDO>CD ..\TEMP\TRASH $ cd ../temp/trash C:\GUIDO>MD NEWPROGS $ mkdir newprogs C:\GUIDO>MOVE PROG .. $ mv prog .. C:\GUIDO>MD \PROGS\TURBO $ mkdir /progs/turbo C:\GUIDO>DELTREE TEMP\TRASH $ rm -R temp/trash C:\GUIDO>RD NEWPROGS $ rmdir newprogs C:\GUIDO>RD \PROGS\TURBO $ rmdir /progs/turbo Opombe: 1. Pri uporabi rmdir mora biti imenik, ki ga želimo zbrisati, prazen. Če bi radi pobrisali imenik z vsemi podimeniki in datotekami v njih, uporabite ukaz rm -R. Na lastno odgovornost. 2. Tilda (,~`) je bližnjica za ime vašega domačega imenika. Ukaz cd ali cd ~ vas prestavi naravnost v vaš domač imenik, kjerkoli že ste; ukaz cd ~/tmp vas prestavi v imenik tmp vašega domačega imenika. 3. Ukaz cd - prikliče nazadnje izvedeni cd. 5. Disketniki, diski in podobno Z enotami lahko v Linuxu delamo na dva načina: tako kot dela DOS, ali pa tako, kot dela Unix. Izbira je vaša. 5.1. Delo z enotami po dosovsko Večina distribucij Linuxa vsebuje paket Mtools, zbirko ukazov, ki so popolnoma enakovredni svojim dvojnikom iz DOS. Od njih se bolj ali manj ločijo le po začetnem ,m` v imenu; torej mformat, mdir, mdel, mmd in tako dalje. Ukazi iz paketa podpirajo tudi dolga imena, dovolilnic za datoteke in imenike pa ne. Paket ukrojite po svojih željah z datoteko /etc/mtools.conf (vzorec je priložen zbirki), in z njim lahko dostopate do particij z DOS in Windows, CD-ROM, ali enote ZIP. Neformatirane diskete pa ne morete formatirati z ukazom mformat. Pred njim morate kot root prej pognati fdformat: # fdformat /dev/fd0H1440 Pazite: pri tem načinu do datotek na disketah ne morete dostopati enako kot do datotek na disku; ne morete na primer napraviti less a:besedilo.txt. To je slabost opisanega načina dostopanja do enot. 5.2. Delo z enotami v duhu Unixa Unix upravlja z enotami drugače kot DOS ali Windows. Logičnih enot ne ločuje z oznakami kot A: ali C:, ampak vse enote (diske, diskete, CD- ROM, prek NFS tudi diske na drugih računalnikih) vidimo kot del enotnega datotečnega sistema. Operaciji, s katero dodamo enoto v datotečni sistem, pravimo ,,priklop`` (angl. mount). Ko enote ne potrebujemo več (npr. ko želimo disketo izvreči iz disketnika), jo moramo ,,odklopiti`` (angl. unmount). Fizično formatiranje diska in ustvarjanje datotečnega sistema na njem sta dve različni stvari. Ukaz FORMAT A: v DOS napravi oboje, v Linuxu pa sta ukaza ločena. Ukaz za formatiranje smo si že ogledali malo prej, datotečni sistem na disketi pa napravimo takole: # mkfs -t ext2 -c /dev/fd0H1440 Namesto ext2 lahko navedete tudi drugo vrsto datotečnega sistema, npr. minix, vfat ali dos. Ko ste s tem končali, disketo priklopite z ukazom: # mount -t ext2 /dev/fd0 /mnt Če ste v prejšnjem ukazu namesto ext2 uporabili kako drugo vrsto datotečnega sistema, morate tudi zdaj navesti isto. Zdaj lahko dostopate do datotek na disketi. Vse, kar ste doslej počeli z A: ali B: se zdaj počne z /mnt. Primeri: DOS Linux --------------------------------------------------------------------- C:\GUIDO>DIR A: $ ls /mnt C:\GUIDO>COPY A:*.* $ cp /mnt/* . C:\GUIDO>COPY *.ZIP A: $ cp *.zip /mnt C:\GUIDO>EDIT A:FILE.TXT $ jstar /mnt/file.txt C:\GUIDO>A: $ cd /mnt A:\>_ /mnt/$ _ Ne pozabite, da morate po opravljenem delu obvezno odklopiti enoto: # umount /mnt Jasno je, da ukaza fdformat in mkfs uporabljate samo na neformatiranih disketah, ne pa na tistih, ki ste jih že uporabljali. Če bi radi uporabljali disketno enoto B:, zamenjajte vse fd0H1440 in fd0 v prejšnjih zgledih s fd1H1440 oziroma fd1. Odveč je verjetno tudi poudarjati, da vse, kar velja za disketnike, velja tudi za ostale enote, kot so diski in CD-ROM. Takole priklopimo slednjega: # mount -t iso9660 /dev/cdrom /mnt To je bil ,,uradni`` način za priklop disketnikov in drugih enot, zdaj pa še zvijača, s katero si lahko delo malce olajšate. Nerodno je namreč, da lahko priklaplja in odklaplja enote samo root; včasih bi bilo prav uporabno, če bi vsaj diskete in CD-ROM lahko priklapljali tudi ostali uporabniki. * Kot root napravite naslednje (zgled predpostavlja, da je CD-ROM priključen na /dev/hdb, torej kot druga enota na vodilu EIDE; prilagodite vaši situaciji): # mkdir /mnt/a: ; mkdir /mnt/a ; mkdir /mnt/cdrom # chmod 777 /mnt/a* /mnt/cd* # chmod 666 /dev/hdb ; chmod 666 /dev/fd* * V datoteko /etc/fstab dodamo naslednje tri vrstice: /dev/hdb /mnt/cdrom iso9660 ro,user,noauto 0 0 /dev/fd0 /mnt/a: msdos user,noauto 0 0 /dev/fd0 /mnt/a ext2 user,noauto 0 0 Disketo z datotečnim sistemom DOS, disketo z datotečnim sistemom ext2 ali CD-ROM lahko zdaj priklopimo enostavno z ukazi: $ mount /mnt/a: $ mount /mnt/a $ mount /mnt/cdrom Enote /mnt/a, /mnt/a:, in /mnt/cdrom lahko zdaj priklaplja in odklaplja vsak uporabnik. Opozoriti pa vas moramo, da je prav to tudi slabost s stališča varnosti vašega sistema. Dva uporabna ukaza sta še df, ki poda informacije o trenutno priklopljenih enotah, ter du imenik, ki izpiše porabo prostora za podani imenik. 5.3. Varnostne kopije Več paketov obstaja, s katerimi si lahko pomagate pri izdelavi varnostnih kopij. Najosnovneši ukaz, s katerim lahko kot root napravite varnostno kopijo imenika na disketo (ali več disket, odvisno od velikosti), pa je: # tar -M -cvf /dev/fd0H1440 arhivirani_imenik/ Pazite, da imate ob tem formatirano disketo v disketniku, še več nadaljnih pa pripravljenih. Podatke lahko v celoti restavrirate tako, da vtaknete prvo disketo v disketnik in natipkate: # tar -M -xpvf /dev/fd0H1440 6. Kaj pa okna? Ekvivalent okolju Windows je na Linuxu okensko okolje X Window System, ali na kratko X11. Za razliko od Macintosha ali Windows prvo izhodišče pri zasnovi X11 ni bila enostavnost uporabe ali lep izgled, ampak le nudenje grafičnih možnosti za delovne postaje s sistemom Unix. Glavne razlike med Windows in X11 so naslednje: * Windows izgledajo bolj ali manj podobno širom sveta, X11 pa ne: je neprimerno bolj ukrojljiv. Izgled okolja X11 določa ključni element, imenovan ,,upravljalnik oken`` (angl. window manager). In izbirate lahko med široko paleto slednjih: fvwm -- osnoven, a prijeten in učinkovit pri delu s pomnilnikom; fvwm2-95, s katerim vaš Linux izgleda kot Windows 95; Afterstep, ki mu da izgled okolja NEXTstep, in tako naprej. Upravljalnika oken navadno poženemo v datoteki ~/.xinitrc. * Upravljalnika oken lahko nastavimo tako, da se okna obnašajo tako kot v okolju Windows: z miško kliknemo na okno in ga tako prikličemo na površje. Druga možnost pa je, da priplava na površje avtomatično, ko z miško zapeljemo kazalček na okno. Tudi postavljanje novih oken na zaslon gre lahko avtomatično ali pa interaktivno. Slednjega imate, če se ob zagonu programa namesto programa na zaslonu pojavi nekakšen okvir. Z miško pripeljite okvir na željeno mesto in pritisnite levi gumb. * Večino obnašanja upravljalnika oken lahko ukrojite po svoje s spremembo te ali one nastavitvene datoteke. Preberite navodila za upravljalnika oken, ki ga uporabljate; datoteka se lahko imenuje .fvwmrc, .fvwm2rc95, .steprc in tako dalje. Vzorčno nastavitveno datoteko navadno najdete v /etc/X11/upravljalnik_oken/system.upravljalnik_oken. * Programi za X11 so pisani tako, da uporabljajo posebne knjižnice grafičnih elementov (angl. ,,widget set``). Ker je slednjih več, tudi programi med seboj izgledajo različno. Najosnovnejši nabor grafičnih elementov je Athena, uporabljajo ga xdvi, xman ali xcalc. Drugi uporabljajo Motif (npr. netscape), Tcl/Tk, XForms, Qt, Gtk ali kaj četrtega. Nekatere, ne pa vse od teh knjižnic ponujajo približno enak izgled in občutek kot Windows. * Za občutek maloprej povedano žal ne velja vedno. Na primer, če z miško pobarvate vrstico besedila in pritisnete , verjetno pričakujete, da bo vrstica izginila, kajne? Res bo, če program uporablja knjižnice Motif, Qt, Gtk ali Tcl/Tk, ne pa tudi, če uporablja Atheno. * Delovanje drsnikov in spreminjanje velikosti oken je tudi odvisno od uporabljenega upravljalnika oken ter knjižnice grafičnih elementov. Namig: če se drsnik ne obnaša tako, kot bi pričakovali, uporabite namesto levega srednji gumb na miški (ali levega in desnega hkrati, če imate miško s samo dvema gumboma). * Programi nimajo nujno privzete ikone; lahko pa jih imajo mnogo. V večini upravljalnikov oken se pokaže menu, če kliknete na ozadje (,,korensko okno``, angl. root window). Odveč je govoriti, da se da tudi menu ukrojiti po svoje. Izgled korenskega okna lahko spremenite z ukazoma xsetroot ali xloadimage. * V odložišče (angl. clipboard) lahko odlagamo le besedilo, in še to se obnaša neobičajno. Tisti hip, ko ste pobarvali besedilo, je to tudi že v odložišču; premaknite se kamorkoli želite in pritisnite srednji gumb na miški, pa ga boste prenesli na nov kraj. Obstaja tudi program xclipboard, ki vas oskrbi z več predalčki za odlaganje. * ,,Povleci in spusti`` deluje samo v tistih programih za X11, ki to podpirajo. Na disku bi prihranili nekaj prostora, če bi uporabljali programe, ki si delijo isto knjižnico grafičnih elementov. V praksi je to zaenkrat težko izvedljivo. Projekta K Desktop Environment (KDE) in Gnome sta si zastavila, da napravita X11 v obnašanju enako koherentne kot Windows. Oba sta zaenkrat še v testni fazi, kar je videti, pa obljublja veliko. Prvega najdete na , drugega na . 7. Ukrojitev sistema 7.1. Sistemske inicializacijske datoteke Dve pomembni datoteki pod DOS sta AUTOEXEC.BAT in CONFIG.SYS, ki se prebereta ob zagonu in inicializirata sistem, nastavita nekaj spremenljivk okolja (npr. PATH in FILES), in po možnosti zaženeta kakšen program ali skripta. Pod Linuxom je inicializacijskih datotek več. Nekatere od njih so takšne, da se jih raje ne dotikajte, če ne veste zelo dobro, kaj počenjate. Tole je vseeno spisek najpomembnejših: DATOTEKE OPOMBE /etc/inittab zaenkrat se ne dotikajte! /etc/rc.d/* enako Če je vse, kar potrebujete nastavitev $PATH ali kakšne druge spremenljivke okolja, če bi radi zamenjali prijavno sporočilo ali ob prijavi avtomatično zagnali kak program, si oglejte naslednje datoteke: DATOTEKE OPOMBE /etc/issue nastavi sporočilo pred prijavo /etc/motd nastavi sporočilo takoj po prijavi /etc/profile nastavi $PATH in druge spremenljivke /etc/bashrc nastavi vzdevke, funkcije ipd. /home/uporabnik/.bashrc nastavi uporabniške vzdevke in funkcije /home/uporabnik/.bash_profile ali /home/uporabnik/.profile nastavi uporabniško okolje, zažene prog. Če slednja datoteka obstaja (opazite, da je skrita datoteka), se bo prebrala in tolmačila po prijavi. Za primer si oglejmo ta .bash_profile: ______________________________________________________________________ # To je komentar echo Spremenljivke okolja: printenv | less # podobno kot ukaz SET pod DOS alias d='ls -l' # enostaven in razumljiv zgled, kaj so vzdevki alias up='cd ..' echo "Ponovimo, pot je "$PATH echo "Današnji datum je `date`" # uporabimo izpis ukaza ,,date`` echo "Lep dan želim, "$LOGNAME # Sledi funkcija ctgz() # Izpis vsebine arhivov .tar.gz { for file in $* do gzip -dc ${file} | tar tf - done } # Konec .profile ______________________________________________________________________ Pravilno ste uganili, $PATH in $LOGNAME sta spremenljivki okolja. Še več zanimivih je, preberite si priročnik za less in bash. 7.2. Programske inicializacijske datoteke Pod Linuxom si lahko takorekoč karkoli ukrojite po svojih potrebah. Večina programov ima eno ali tudi več inicializacijskih datotek, s katerimi lahko eksperimentirate. Navadno se inicializacijski datoteki za program moj_program pravi kar .moj_programrc in počiva v domačem imeniku. Prve, ki bodo verjetno prišle na vrsto za spreminjanje, so: * .inputrc: uporablja jo ukazna lupina bash za določanje pomena tipk * .xinitrc: prebere jo startx pri zagonu X Window System * .fvwmrc: uporablja jo upravljalnik oken fvwm * .joerc: uporablja jo urejevalnik joe * .jedrc: uporablja jo urejevalnik jed * .pinerc: uporablja jo program pine za delo z elektronsko pošto * .Xdefault: uporabljajo jo mnogi programi za X11 Za vse naštete in vse ostale, na katere boste naleteli: preberite priročnik. Za konec mi dovolite, da vam priporočim branje spisa Configuration HOWTO. Najdete ga na . 8. Kanček programiranja 8.1. Skripte: datoteke .BAT na steroidih Če ste, tako kot pisec, uporabljali datoteke .BAT za to, da ste dolge ukazne vrstice nadomestili z bližnjicami, ste medtem verjetno že ugotovili, da gre na Linuxu to z vzdevki v datoteki .profile. Če pa so bile vaše datoteke .BAT bolj zapletene, boste gotovo navdušeni nad skriptnim jezikom, ki ga ponuja ukazna lupina. Vsaj tako močan je kot QBasic, če ne bolj. Pozna spremenljivke, strukture kot while, for, case, if..then..else, in veliko drugih dobrot; lahko ga imamo za dobro alternativo ,,pravim`` programskim jezikom. Skripta -- ekvivalent datoteki .BAT v DOS -- je enostavna tekstovna datoteka z ukazi, ki jo lahko napišemo s katerimkoli urejevalnikom, shranimo, in napravimo izvedljivo z ukazom chmod +x . Poženemo ga enostavno tako, da vtipkamo njegovo ime. Majhno opozorilo. S sistemskim urejevalnikom vi ima večina novih uporabnikov precejšnje težave. Tukaj ne bomo razlagali, kako se ga uporablja, ker ga pisec tega spisa ne mara. Zadovoljiti se boste morali z najnujnejšim: * Novo besedilo vnesemo tako, da pritisnemo tipko ,i` in začnemo z vnašanjem * Znak pobrišemo tako, da pritisnemo , zatem pa ,x` * Urejevalnik zapustimo, ne da bi shranili spremembe, s pritiskom na tipko , zatem pa vtipkamo :q! * Shranimo in končamo s pritiskom na , zatem vtipkamo :wq. Dober urejevalnik za začetnike je joe. Če ga pokličemo z imenom jstar, se obnaša enako kot urejevalnik v DOS. jed v načinu WordStar ali IDE je še boljši. O tem, kje najdete enega in drugega, se poučite v razdelku ``Kje najdemo programe''. Pisanje skript v bash je tako obsežna tema, da bi sama zahtevala celo knjigo. Tu se ne bomo več spuščali v globine te teme, ampak bomo navrgli samo še en primer skripte, iz katerega se lahko naučite nekaj osnovnih pravil: ______________________________________________________________________ #!/bin/sh # zgled.sh # To je komentar # Ne spreminjajte prve vrstice! echo "Sistem: `uname -a`" # uporabimo izpis zunanjega ukaza uname echo "Tej skripti je ime $0" # vgrajene spremenljivke echo "Podali ste $# parametrov; ti so: "$* echo "Prvi parameter je: "$1 echo -n "Vaše ime? " ; read ime echo Opazite razliko: "hi $ime" # dvojni narekovaji echo Opazite razliko: 'hi $ime' # enojni narekovaji DIRS=0 ; FILES=0 for file in `ls .` ; do if [ -d ${file} ] ; then # imenik? DIRS=`expr $DIRS + 1` # DIRS = DIRS + 1 elif [ -f ${file} ] ; then FILES=`expr $FILES + 1` fi case ${file} in *.gif|*jpg) echo "${file}: slika" ;; *.txt|*.tex) echo "${file}: besedilo" ;; *.c|*.f|*.for) echo "${file}: izvorna koda programa" ;; *) echo "${file}: druga datoteka" ;; esac done echo "Imenikov je ${DIRS}, datotek pa ${FILES}" ls | grep "ZxY--!!!WKW" if [ $? != 0 ] ; then # izhodna koda zadnjega ukaza echo "ZxY--!!!WKW not found" fi echo "dovolj... 'man bash' vam bo postregel z dodatnimi informacijami." ______________________________________________________________________ 8.2. C za vas Na Unixih je sistemski jezik C, najsi vam je všeč ali ne. Na voljo pa je tudi kopica drugih jezikov: Java, Fortran, Pascal, Lisp, Perl, Awk... Ker verjamemo, da C že znate, bomo tu le navedli nekaj napotkov za tiste, ki vas je razvadil Turbo C++ ali kaj sorodnega. Prevajalnik za C na Linuxu se imenuje gcc in ne vključuje lepot, kot jih njegovi dvojniki v DOS: ne vsebuje integriranega okolja za delo, interaktivne pomoči, integriranega razhroščevalnika in podobnega. Je res samo surovi prevajalnik, ki ga poženemo iz ukazne vrstice (kot prevajalnik pa je resda zelo močan in učinkovit). Običajni programček hello.c prevedemo z ukazom: $ gcc hello.c To bo proizvedlo izvodljiv program z imenom a.out. Če želimo izvodljiv program poimenovati kako drugače, lahko to navedemo v ukazni vrstici, npr.: $ gcc -o hola hello.c Če bi radi v izvodljiv program povezali še knjižnico, dodamo izbiro -l. Takole na primer povežemo program s standardno matematično knjižnico: $ gcc -o matemprog matemprog.c -lm (Izbira -l pove prevajalniku gcc, naj v izvodljiv program poveže še knjižnico /usr/lib/lib.a; tako -lm iz prejšnjega zgleda poveže knjižnico /usr/lib/libm.a). To je takorekoč vse, kar boste potrebovali za prevajanje kratkih programčkov. Kadar pa pišete dolg program, katerega izvorna koda je razbita v več manjših datotek, si boste precej olajšali delo s programom make. Recimo, da pišete razčlenjevalnik izrazov. Izvorna koda se imenuje parser.c in kliče deklaracije iz glav parser.h in xy.h. Funkcije, definirane v parser.c pa želite uporabiti v drugem programu, recimo calc.c, ki prav tako prebere glavo parser.h. Kakšna zmešnjava! Kaj morate torej napraviti, da prevedete calc.c? Kar morate napraviti, je napisati takoimenovani makefile, ki vodi evidenco o odvisnostih med izvornimi ter prevedenimi datotekami. V našem primeru bi bila takšna: ______________________________________________________________________ # makefile za prevajanje calc.c # Vnesite kjer je označeno calc: calc.o parser.o gcc -o calc calc.o parser.o -lm # Program calc je odvisen od dveh prevedenih datotek: calc.o in parser.o calc.o: calc.c parser.h gcc -c calc.c # calc.o je odvisen od izvorne datoteke calc.c in glave parser.h parser.o: parser.c parser.h xy.h gcc -c parser.c # parser.o je odvisen od izvorne datoteke parser.c in dveh glav # To je vse. ______________________________________________________________________ Shranite to datoteko pod imenom Makefile. Zdaj preprosto napišete make, ki bo prevedel cel paket. Alternativno jo lahko shranite tudi pod drugačnim imenom, denimo calc.mak, le da boste to ime zdaj morali navesti kot parameter: make -f calc.mak. Več o tem se boste naučili ob branju priročnika. Tudi funkcije iz standardne knjižnice imajo svoje strani v priročniku, in sicer v tretjem poglavju. Zgled kaže, kako do navodil za funkcijo printf: $ man 3 printf Napake v programih lahko odpravljate z razhroščevalnikom gdb. Ukaz info gdb vas bo poučil o podrobnostih. Programerju je na voljo zelo veliko število različnih knjižnic. Med prvimi, ki se jih boste morda ogledali, sta ncurses, ki podpira delo z znakovnim zaslonom, ter svgalib za delo v grafičnem načinu. Če ste dovolj pogumni, da se boste lotili programiranja za X11, obstajo že omenjene knjižnice XForms, Qt, Gtk in mnoge druge, ki pisanje programov za X11 znatno olajšajo. Oglejte si na primer še . Mnogi urejevalniki se tudi lahko obnašajo kot integrirano okolje. emacs in jed, na primer, podpirata barvanje sintakse, zamikanje programske kode in podobno. Alternativa pa je paket rhide, ki ga lahko snamete z . Je kopija Borlandovega integriranega okolja, in precej verjetno je, da vam bo všeč. 9. Preostali 1% Pravzaprav več kot le 1%... 9.1. Arhiviranje datotek: tar in gzip Programa tar in gzip sta standardno uporabljana programa za arhiviranje in stiskanje datotek na Unixu. Prvi služi za izdelavo arhivov -- podobno kot PKZIP na DOS, le da arhiva ne stisne. Nov arhiv ustvarimo takole: $ tar -cvf [datoteka...] Iz arhiva izluščimo posamezno datoteko ali več datotek: $ tar -xpvf [datoteka...] Vsebino arhiva izpišemo z ukazom: $ tar -tf | less Arhiv (ali kakršnokoli drugo datoteko) lahko stisnemo s programoma compress ali gzip. Drugi je novejši in precej bolj učinkovit pri stiskanju, zato uporabo prvega odsvetujemo. $ compress $ gzip Rezultat je stisnjena datoteka, ki ima bodisi pripono .Z (compress) ali .gz (gzip). Nobeden od njiju ni arhivski program in stisneta le po eno datoteko naenkrat. Stisnjene datoteke razpnemo z obratnima ukazoma: $ compress -d $ gzip -d Več o enem in drugem preberite v priročniku. Obstajajo tudi programi unarj, zip in unzip. Slednja sta povsem združljiva s parom PKZIP/PKUNZIP. Arhivske datoteke s pripono .tar.gz ali .tgz so v svetu Unixa enako pogoste kot datoteke .ZIP v svetu DOS. Gre za datoteke, ki so bile najprej arhivirane s programom tar, zatem pa še stisnjene s programom gzip. Vsebino stisnjene arhivske datoteke si ogledamo tako, da progranu tar dodatno podamo še izbiro -z: $ tar -ztf | less 9.2. Nameščanje dodatnih programov Najprej: nameščanje dodatnih programov je delo sistemskega skrbnika. Večina programskih paketov za Linux se razpečuje kot arhiv .tar.gz. Arhiv navadno vsebuje podimenik z imenom programskega paketa, ta pa vsebuje vse datoteke in eventuelne podimenike. Dodatne programe navadno nameščamo v imenik /usr/local. Arhiv razpakiramo z ukazom: # tar -zxf Navodila za namestitev so navadno v datoteki README ali INSTALL. Dostikrat je programski paket na voljo le kot izvorna koda, kar pomeni, da ga morate najprej prevesti. Dostikrat gre to enostavno z zaporedjem ukazom ./configure, make in make install. Seveda potrebujete prevajalnik gcc ali g++. Drugi arhivi morajo biti razpakirani iz korenskega imenika /; takšni arhivi so recimo Slackware (.tgz). Spet tretji ne vsebujejo podimenika, ampak se datoteke razpakirajo kar v trenutnem imeniku. Vedno je pametno prej z izbiro -t izpisati vsebino arhiva, preden ga z izbiro -x v resnici razpakiramo. Paketi za distribucije Debian, Red Hat in Caldera uporabljajo lasten arhivski format; prva .deb, drugi dve .rpm. Posebno drug format je precej razširjen; takšne pakete namestimo enostavno z ukazom: # rpm -i paket.rpm 9.3. Nasveti brez katerih ne gre Avtomatična dopolnitev ukazov: pritisk na tipko pri tipkanju v ukazni lupini avtomatično dopolni vrstico. Na primer, če prevajate program, gcc precej_dolgo_ime_datoteke.c, je dovolj, če natipkate začetek imena in pritisnete : gcc prec (začetek mora biti dovolj dolg, da enolično določa datoteko; v nasprotnem primeru bo ukazna lupina prikazala vse datoteke, ki ustrezajo pogoju). Pomikanje nazaj po izpisu: pri izpisovanju na zaslon se dostikrat zgodi, da je tisto zanimivo ravnokar izginilo na vrhu zaslona. Nekaj zadnjih strani izpisa (koliko, je odvisno od grafične kartice) je kljub vsemu še shranjeno, do njih pridete s pritiskom na tipki +. Vrnitev zaslona v normalno stanje: če ste na zaslon s programoma more ali cat izpisali kakšno čudno, recimo binarno, datoteko, je zaslon lahko ostal v neuporabnem stanju. Poskusite na slepo natipkati reset ali pa naslednji niz znakov: echo CTRL-V ESC c RETURN. Odreži in prilepi: za znakovni zaslon glej spodaj; v X11 kliknite in povlecite miško, da označite (pobarvate) besedilo, potem kazalček prestavite na željeno mesto in pritisnite srednji gumb na miški (ali levega in desnega hkrati, če imate miš z dvema gumboma). Obstaja tudi odlagališče xclipboard (kamor lahko odlagamo samo besedilo); naj vas pri njem ne zmede zelo dolg odzivni čas. Miška in znakovni zaslon: če ste namestili paket gpm, gonilnik za miško za znakovni zaslon, lahko z klikom in potegom označite besedilo, s klikom na desni gumb pa ga prenesete na nov kraj. Deluje tudi prek več virtualnih konzol. Sporočila jedra operacijskega sistema: v datoteko /var/adm/messages (ali /var/log/messages) se zapisujejo sporočila jedra, vključno z izpisom ob zagonu. Tudi ukaz dmesg je uporaben. 9.4. Kje najdemo programe Če vas skrbi, kje boste našli nadomestila za svoje stare programe z DOS/Windows, vam svetujemo, da se najprej obrnete na enega od glavnih arhivov programja za Linux: , , ali (vsi so zrcaljeni širom sveta, tako da poiščite najbližje zrcalo). Drug imeniten kraj je stran ,,Linux Applications and Utilities Page`` na . 9.5. Sladkorčki Na Linuxu lahko počenjate cel kup stvari, ki jih je bilo nerodno, težko ali pa sploh nemogoče izvesti pod DOS/Windows. Tole je kratek seznam; le toliko, da dobite okus: * Ukaz at omogoča izvajanje ukazov ob določenem času * awk je preprost, a močan jezik za delo s podatkovnimi datotekami (in ne samo z njimi). Če je podatki.dat tabela s podatki, lahko z naslednjim enovrstičnim programčkom izpišete prvo in četrto polje vseh zapisov, ki v drugem polju vsebujejo niz ,,abc``: $ awk '$2 ~ "abc" {print $1, "\t", $4}' podatki.dat * Ukaz cron je uporaben za izvajanje periodičnih opravil (ob danem dnevu in/ali uri). Glejte man 5 crontab za podrobnosti. * Ukaz file poskusi uganiti zvrst datoteke (besedilo, program, arhiv ipd.). * Ukaz find (glejte tudi razdelek ``Imeniki: vzporedba ukazov'') je eden najmočnejših in najuporabnejših. Uporablja se za iskanje datotek, ki zadoščajo navedenim pogojem, obenem pa lahko na njih tudi delujemo. Splošna skladnja ukaza je: $ find kjer vključuje pogoje iskanja ter delovanje na najdene datoteke. Primeri: $ find . -type l -exec ls -l {} \; poišče vse datoteke, ki so simbolične povezave, in izpiše, kam kažejo. $ find / -name "*.old" -ok rm {} \; poišče vse datoteke s pripono .old in jih pobriše, pri vsaki pa vpraša za potrditev. $ find . -perm +111 poišče vse izvodljive datoteke. $ find . -user root poišče vse datoteke, katerih lastnik je root. Možnosti je še veliko, glejte priročnik. * Ukaz grep poišče regularne izraze (seveda tudi enostavne nize) v datotekah. Spodnji primer preišče vse datoteke s pripono .tex v trenutnem imeniku in izpiše tiste, v katerih nastopa niz ,,geološk*``: geološka, geološkega, geološkim... $ grep -l "geološk*" *.tex * Regularni izraz so navidez zapleten, vendar hudirjevo močan način za iskanje po besedilih. Naslednji regularni izraz, ^a[^a- m]X{4,}txt$ poišče vse vrstice, ki zadoščajo naslednjim pogojem: začnejo se z ,a`, temu sledi katerikoli znak razen črk z intervala a-m, temu sledijo štiri ali več črk X, in se končajo s ,,txt``. Regularne izraze poznajo vsi spodobni urejevalniki, less, in mnogi drugi programi. man grep vam lahko služi kot uvod v regularne izraze. * Ukaz script piše dnevniško datoteko komunikacije uporabnik-računalnik v navedeno datoteko, dokler ne vtipkamo ukaza exit. Uporabno pri odkrivanju napak. * Ukaz sudo selektivno dovoljuje uporabnikom nekatera opravila, ki so sicer dovoljena samo sistemskemu skrbniku, npr. formatiranje in priklapljanje diskov. Preberite priročnik za dodatne informacije. * Ukaz uname -a izpiše osnovne informacije o sistemu. * Naslednji ukazi tudi lahko kdaj pridejo prav: bc, cal, chsh, cmp, cut, fmt, head, hexdump, nl, passwd, printf, sort, split, strings, tac, tail, tee, touch, uniq, w, wall, wc, whereis, write, xargs, znew. Preberite ustrezne strani priročnika. 9.6. Pripone imen datotek in programi, ki jih uporabljajo Pri imenih datotek ste morda naleteli na celo kopico različnih pripon. Če izpustimo nekatere bolj eksotične (datoteke s pisavami in podobno), naslednja tabela podaja, kaj je kaj. * 1 ... 8: sestavki referenčnega priročnika (angl. man pages). Uporablja jih program man. * arj: arhivi, napravljeni s programom arj. * dvi: izhodna datoteka, ki jo izdela TeX (glejte spodaj). Prikažete jo s programom xdvi, s programom dvips pa jo lahko odtisnete ali pa predelate v format PostScript (pripona .ps). * gz: stisnjena datoteka; razpnemo jo z ukazom gzip -d. * info: hipertekstna datoteka informacijskega sistema GNU texinfo. Prikažete jo s programom info. * lsm: datoteka Linux Software Map. Navadna besedilna datoteka z opisom programskega paketa. * ps: datoteka v formatu PostScript. Prikažemo ali odtisnemo jo s paketom GhostScript (ukaz gs) in, neobvezno, ghostview ali gv. * rpm: paket Red Hat. Namestite ga z namestitvenim programom rpm. * taz, tar.Z: arhivska datoteka izdelana s programom tar in stisnjena s programom compress. * tgz, tar.gz: arhivska datoteka izdelana s programom tar in stisnjena s programom gzip. * tex: izvorna datoteka za stavni sistem TeX. Namestite paket tex, ki je na voljo v mnogih distribucijah. Paket je precej obsežen. Nekaj časa je krožila okrog distribucija NTeX s pokvarjenimi pisavami, pazite nanjo. * texi: izvorna datoteka za dokumentacijski sistem GNU texinfo, iz katere lahko pridelamo datoteko .tex in interaktivno hipertekstno datoteko .info. Potrebujete paket texinfo. * xbm, xpm, xwd: bitne slike. Prikazujete in popravljate jih lahko s programom xpaint. * Z: datoteka, stisnjena s programom compress. 9.7. Pretvorba datotek Pri izmenjavi besedilnih datotek med okolji DOS/Windows in Linux pazite na dejstvo, da sistema zaključujeta vrstice na različen način. V DOS se vsaka vrstica zaključi z dvema znakoma, CR/LF (Carriage Return/Line Feed; pomik na začetek vrstice, skok v novo vrstico), pod Linuxom pa samo z LF. Datoteke z DOS zato na Linuxu izgledajo okrancljane z znaki ^M na koncu vsake vrstice; obratno pa datoteke z Linuxa DOS razume kot eno samo kilometrsko vrstico. Orodja kot so dos2unix in unix2dos prevajajo iz enega formata v drugega. Za zapis naših znakov se uporablja kar nekaj različnik kodnih razporedov. Pod DOS se največ uporablja CP852 ali stari sedembitni standard JUS I.B1.002, pod Windows CP1250, na Linuxu pa ISO 8859-2 (Latin 2). Med različnimi kodnimi nabori lahko pretvarjate z orodjem recode. Pretvorba iz formatov Word ali WordPerfect v navadno besedilo je malenkost zahtevnejša, je pa možna. Potrebujete eno od orodij, ki jih najdete na primer na . Poskusite s paketom word2x iz imenika /pub/tex/tools/', ali pa katerega od paketov iz imenika /pub/tex/support/. 10. Konec, zaenkrat Čestitamo! Zdaj imate že nekaj pojma o Unixu in lahko začnete z delom. Zavedajte pa se, da je vaše poznavanje sistema zaenkrat še vedno omejeno, in da potrebujete več prakse, preden se boste v Linuxu počutili kot doma. Če pa je vaš namen le, da se naučite katerega od uporabniških programov, s katerimi boste delali, pa je tukaj zapisano za najosnovnejše poznavanje sistema že čisto dovolj. Prepričan sem, da boste uživali ob Linuxu in se naučili vse več in več o njem -- tako kot vsi. Stavim tudi, da se ne boste nikoli več vrnili nazaj na DOS in Windows. Nazadnje upam, da je zapisano jasno povedano, in da je bilo v pomoč vsem trem ali štirim bralcem, ki so se prebili do tod. 10.1. Copyright Če ni drugače povedano, so spisi Linux HOWTO pravno zaščiteni s strani svojih avtorjev. Spisi Linux HOWTO se smejo razmnoževati in razširjati v delu ali v celoti, v tiskani ali elektronski obliki, pod pogojem, da je to sporočilo v vseh kopijah ohranjeno v nespremenjeni obliki. Redistribuiranje s pridobitnimi nameni je dovoljeno in vzpodbujano, vendar pa avtor želi biti obveščen o takšnih distribucijah. Vsi prevodi, izpeljana dela ali zbirke, ki vključujejo katerikoli spis Linux HOWTO se morajo razširjati pod enakimi pogoji. Iz spisov HOWTO tako ne morete izvesti izpeljanega dela in ga razširjati pod pogoji, ki so bolj omejujoči od navedenih. Izjemo pod določenimi pogoji lahko dovoli urednik projekta Linux HOWTO; naslov je naveden nižje v besedilu. Na kratko, pomagati hočemo, da se ta informacija razširi skozi čimveč kanalov, vendar pa se ne odrekamo svojim avtorskim pravicam, in želimo biti obveščeni o načrtih za razširjanje spisov HOWTO. Če imate vprašanja, prosim stopite v stik s Timom Bynumom, urednikom spisov Linux HOWTO. Prek e-pošte je dosegljiv na naslovu linux-howto@metalab.unc.edu. 10.2. Pravni poduk ``From DOS to Linux HOWTO'' je napisal Guido Gonzato, guido@ibogfs.cineca.it. Prevod v slovenščino z nekaj priredbami je delo Primoža Peterlina, primoz.peterlin@biofiz.mf.uni-lj.si. Pisec se zahvaljuje Mattu Welshu, avtorju ``Linux Installation and Getting Started'', Ianu Jacksonu, avtorju ``Linux frequently asked questions with answers'', Giuseppu Zanettiju, avtorju italijanske knjige ``Linux'', vsem, ki so mi po elektronski pošti poslali predloge, posebej pa Linusu Torvaldsu in skupini GNU, ki so nam dali Linux. Ta spis je ponujen takšen, kot je. Veliko napora je bilo vloženega v to, da bi bila zapisana informacija čim točnejša, vendar pa jo uporabljate izključno na lastno odgovornost. Ne pisec in ne prevajalec ne odgovarjata za kakršnokoli škodo, ki bi morebiti sledila iz uporabe tega dela. Odziv -- prošnje, predlogi, opljuvanja in podobno -- je vedno dobrodošel. Uživajte Linux in življenje, Guido =8-)