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:
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...
DATOTEKA.tar.gz
in datoteka.tar.gz
dve
različni datoteki. ls
pomeni ukaz; LS
pomeni napako.
$ # naslednji ukaz ustvari imenik "Stare datoteke"
$ mkdir "Stare datoteke"
$ ls
Stare datoteke bin tmp
Nadalje: nekateri znaki niso dovoljeni, med njimi so
!*$&
.
*
` 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.
/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.
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 <datoteka_ali_imenik> <ime_povezave>
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
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 <kdoXdovoljenje> <datoteka>
,,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.
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
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:
*
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``.
more
pritiskajte <SPACE> za naslednjo
stran, ,q` za konec. Ukaz less
je bolj intuitiven in dovoljuje
uporabo kurzorskih tipk.
UNDELETE
ne obstaja, zato dvakrat
premislite, preden karkoli pobrišete.
< > >>
, 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.
[]
. 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;
lpr
<file> 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
;
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
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 $
.
cp -i
and mv -i
, ki vas opozorita,
preden bi kakšna datoteka bila prepisana.
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!
su - <prijavno_ime>
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.
exit
. Če imate še
kakšne ustavljene procese (več o njih v nadaljevanju), boste na to
opozorjeni.
&
`:
$ 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).
ps -ax
.
kill <PID>
. 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 <PID>
.
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``.
jobs
. Tu so opravila
navedena le s številko opravila, ne s PID.
bg
<job>
(s tem postane opravilo).
fg <job>
. Brez
dodatnega argumenta ukaz fg
prikliče v ospredje zadnje opravilo,
ki smo ga poslali v ozadje.
kill <%opravilo>
, pri
čemer je <opravilo> š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.
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
:
xterm
ali ekvivalentni terminalski
emulator. Potem tipkamo:
$ xhost +nekje.drugje.si
$ telnet nekje.drugje.si
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.