Struktura imenikov in datotek v Linuxu je zelo podobna tisti v DOS/Windows. Datoteke imajo imena, za katera veljajo določena pravila, in so shranjene v imenikih. Nekatere od njih so programi in večina med temi pozna ukazne izbire. Nadalje, uporabljate lahko džokerje, preusmeritve in nizanje ukazov. Obstaja le nekaj manjših razlik:
NOTENOUG.TXT
. V Linuxu je
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 pa zato, ker...
DATOTEKA.tar.gz
in datoteka.tar.gz
dve
različni datoteki. ls
pomeni ukaz; LS
pomeni napako.
Nadalje: nekateri znaki niso dovoljeni, med njimi so$ # naslednji ukaz ustvari imenik "Stare datoteke" $ mkdir "Stare datoteke" $ ls Stare datoteke bin tmp
!*$&#
.
*
` na koncu, kadar izpišete vsebino
imenika z ukazom ls -F
. Na primer:
Datoteki$ ls -F I_am_a_dir/ cindy.jpg cjpg* letter_to_Joe my_1st_script* old~
cjpg*
in my_1st_script*
sta izvedljivi, torej
programa. V DOS imajo varnostne kopije pripono .BAK; v Linuxu se
končajo z vijugo ,~
`. Še nekaj: če se ime datoteke začne s
piko, na primer .skrita_datoteka
, ga ukaz ls
ne prikaže.
/izbira
), v programih v Linuxu in Unixu nasploh pa
ena ali dve črtici, torej -izbira
ali --dolga-izbira
. Ukaz
dir /s
, denimo, tako postane ls -R
. Verjetno ste že
opazili, da tudi številni programi za DOS uporabljajo ta slog 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 naprej.
Unix pozna zvrst datoteke, ki je v okolju DOS ni: simbolne povezave. Lahko si jih zamišljamo kot kazalce na datoteke ali imenike in jih uporabljamo namesto datotek ali imenikov, na katere kažejo; nekaj podobnega so bližnjice v Windows 95. Zgleda simbolnih povezav sta imenik /usr/X11, ki kaže na /usr/X11R6/, in enota /dev/modem, ki kaže bodisi na /dev/ttyS0 bodisi na /dev/ttyS1.
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 (skriti, angl. hidden), R (dovoljeni samo za branje, angl. read-only), ali S (sistemski). Samo H in R sta smiselna tudi v Linuxu: imena skritih datotek in imenikov se začnejo s piko, o prilastku R pa več v nadaljevanju.
V Unixu ima vsaka datoteka svoje dovolilnice (angl. permissions) in lastnika (angl. owner), ki nadalje pripada eni ali več skupinam uporabnikov (group). Oglejmo si naslednji zgled:
$ 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. Druge informacije za zdaj 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 naprej). Preostale znake
beremo v trojicah. rwx
so dovolilnice za lastnika. Ta lahko
datoteko bere (read), piše ali 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 za zdaj ne bomo obravnavali;
dokler ste začetnik ali začetnica, lahko preživite tudi brez njega.
Zadnji r-x
so dovolilnice za vse druge 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 zbrisati datoteke /bin/sl: razen če ste root, nimate dovoljenja spreminjati te datoteke. Dovolilnice za posamezno datoteko lahko spreminjate z ukazom:
$ chmod <kdoXdovoljenje> <datoteka>
,,Kdo`` je lahko u
(uporabnik, torej lastnik), g
(skupina),
ali o
(drugi). Namesto X je bodisi +
(izdamo
dovolilnico) bodisi -
(prekličemo dovolilnico). In, končno,
,,dovoljenje`` je lahko r
(dovoljenje za branje, angl. read),
w
(dovoljenje za pisanje ali spreminjanje; angl. write) ali
x
(dovoljenje za izvajanje, angl. execute). Sledi nekaj običajnih
zgledov rabe ukaza chmod
:
$ chmod +x datoteka
Datoteko smo napravili izvedljivo.
$ chmod go-rw datoteka
Umaknili smo dovoljenje za branje in pisanje za skupino in vse druge, datoteko lahko bere in spreminja le še lastnik.
$ chmod ugo+rwx datoteko.
S tako 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 (navadno datoteke izvajamo z lastnimi pooblastili). To je tako imenovana datoteka vrste ,,setuid`` ali ,,suid``. Navadno gre za sistemske datoteke, denimo strežnik X, katerih lastnik je root, saj lahko le z njegovimi pooblastili uporabljamo nekatere sistemske vire.
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 se morda
zdi težavno, z nekaj prakse pa boste hitro razumeli koncept.
Edino superuporabnik, root, lahko spreminja dovolilnice za katerokoli datoteko v sistemu, drugi pa le svoje. Več informacij v priročniku
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 v 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 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
, zato dvakrat
premislite, preden karkoli zbrišete.
< > >>
, ki jih poznamo
iz okolja DOS, dovoljuje Linux tudi preusmeritve oblike 2>
. S tem
preusmerimo standardni izhod za napake (stderr); konstrukt
2>&1
tako preusmeri standardni izhod za napake (stderr) na
standardni izhod (stdout), 1>&2
pa nasprotno.
[]
. Uporaba: [abc]*
ujame vse datoteke, katerih imena se začnejo 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 je,
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 skript, dostopen na naslovu
ftp://metalab.unc.edu/pub/Linux/utils/file
cp -i
and mv -i
, ki vas opozorita,
preden bi bila kakšna datoteka prepisana.
Program poženete tako, da vtipkate njegovo ime, torej enako kakor v
DOS. Če je imenik (glejte razdelek
Uporaba imenikov), v katerem je program, na poti (PATH; razdelek
Sistemske inicializacijske datoteke), boste s tem pognali program. Za razliko od DOS pa Linux
ne po pognal programa iz trenutnega imenika, če ta imenik ni naveden na
poti. Rešitev: iz trenutnega imenika program poženite z ukazom
./program
.
Običajna ukazna vrstica je videti 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 poglavitnih 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 nemoteno nadaljujete delo. Še več: v Linuxu 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. Zgled 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.
&
`:
Ukazna lupina prepoznava procese po številki opravila (npr.$ program [-izbire] [parametri] [< vhod] [> izhod] & [1] 123
[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 končali po običajni
poti. Prekinjate lahko samo svoje procese, izjema je root, ki lahko
prekine katerikoli proces. Tu in tam je proces mogoče 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 raztegnete drugo arhivsko datoteko, pa imate še vedno dostop do pozivnika. Pa poskusite kaj takega v DOS! Poskusite še v Windows (če bo sistem to preživel) in si oglejte razliko v hitrosti.
Programe v drugem računalniku, katerega popolno omrežno ime je
nekje.drugje.si
, lahko poganjamo tako, da se vanj prijavimo s
programom telnet:
$ telnet nekje.drugje.si
Ko ste prijavljeni, preprosto poženite želeni program. Verjetno je odveč omenjati, da morate tudi v tem drugem računalniku imeti odprt uporabniški račun.
V okenskem okolju X11 lahko v drugem računalniku celo poganjamo
programe, pisane za to okolje, na svojem pa prikazujemo rezultate. Naj
bo nekje.drugje.si
oddaljeni računalnik, moj.linux.si
pa naš
mlinček z Linuxom. Spodnji postopek opisuje, kako z računalnika
moj.linux.si
poženemo program v drugem
računalniku, nekje.drugje.si
:
xterm
ali ustrezni terminalski
posnemovalnik. Potem tipkamo:
$ xhost +nekje.drugje.si $ telnet nekje.drugje.si
(Odvisno od uporabljene ukazne lupine v drugem računalniku boste morda namesto vrsticeremote:$ DISPLAY=moj.linux.si:0.0 remote:$ moj_program &
DISPLAY...
morali natipkati setenv DISPLAY
moj.linux.si:0.0
.)
Tako! 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. Kar smo povedali, je tudi
zelo groba metoda, ki ni povsem v skladu s pogledi na računalniško
varnost. Več o tem si lahko preberete v spisu ,,Remote X Apps
mini-HOWTO``,
http://www.linuxdoc.org/HOWTO/mini/Remote-X-Apps.html.