A Linuxban a könyvtárak és a benne lévő fájlok struktúrája nagyon hasonló a DOSWin-ben megismerthez. Minden fájlnak adott szabályokhoz illeszkedő neve van, a fájlokat könyvtárakban tárolják, néhányuk végrehajtható, néhányuk speciális kapcsolókat is igényel ill. megenged. Sőt használhatsz dzsóker karaktereket, átirányítást, csöveket. Csak néhány kisebb különbség van.
NOTENOUG.TXT
.
Linux alatt ez jobban megoldott. Ha a Linuxot egy olyan fájlrendszerrel
(nem szükséges, hogy tudd pontosan, mi is ez most) telepíted, mint az
ext2, vagy az umsdos, akkor hosszabb neveket is használhatsz (egészen
255 karakterig), több ponttal a névben. Például,
Ez.egy_IGEN.hosszú.Fájlnév
. Kérlek, vedd észre, hogy kisbetűket és
nagybetűket is használtam. Valójában ...
FÁJLNÉV.tar.gz
és a fájlnév.tar.gz
nevek két külőnböző fájlt jelölnek.
Ugyanez igaz a parancsokkal kapcsolatban is. Ha az ls
parancsot kiadod,
(ez ugyanaz mint a DOS-ban a DIR), akkor könyvtáradban található fájlok
listáját kapod, míg ha az LS
parancsot adod ki, akkor egy hibaüzenetet.
$ # A következő parancs létrehozza a "Régi fájljaim" könyvtárat.
$ mkdir "Régi fájljaim"
$ ls
Régi fájljaim bin tmp
Továbbá van néhány karakter, ami nem lehet a fájlnév része, pl.
!*$&#
.
*
' különbözteti meg a fájlnév végén ha az ls -F
paranccsal
listáztattad ki. Például:
$ ls -F
levél_Józsinak Cindy.jpg cjpg* Ez_egy_könyvtár/ első_scriptem* régi~
A cjpg*
és az első_scriptem*
fájlok végrehajthatóak -- ``programok''. DOS
alatt a .BAK végződés a biztonsági másolat (backup) fájlokat jelöli; a Linuxban
az ilyen típusú fájlok tilde `~
' karakterre végződnek. Továbbá, ha egy
fájlnevet ponttal kezdesz, akkor ez a fájl rejtett fájlként lesz
nyilvántartva. Például: az .én.egy.rejtett.fájl.vagyok
fájl nem fog
megjelenni az ls
parancs után.
/kapcsoló
formában
kell megadni, míg a Linux alatt a -kapcsoló
vagy a --kapcsoló
használatos. Például a dir /s
-nek az ls -R
a megfelelője.
Megjegyzem sok DOS program -- mint a PKZIP
vagy az ARJ
-- Unix stílusú
kapcsolókat használ.
Most már akár a DOS-os parancsok Linuxos megfelelői fejezetre ugorhatsz, de a helyedben én tovább olvasnék.
A Unix rendelkezik egy fájltípussal, ami nem létezik DOS alatt: ez a
szimbolikus link. Tekinthetjük ezt úgy, mint egy fájlra vagy könyvtárra
mutató pointert, és használhatjuk őket az eredeti fájl vagy könyvtár helyett.
Ez hasonló a Windows parancsikonjaihoz. Példa szimbolikus linkre az /usr/X11
,
amely az /usr/X11R6
-ra mutat, és a /dev/modem
, amely vagy a
/dev/ttyS0
-ra vagy a /dev/ttyS1
-re mutat.
Szimbolikus link létrehozása:
$ ln -s <fájl_vagy_könyvtár> <linknév>
Example:
$ ln -s /usr/doc/g77/DOC g77manual.txt
Mostantól g77manual.txt
-ként is hivatkozhatsz az /usr/doc/g77/DOC
fájlra.
A linkek így jelennek meg a könyvtárlistában:
$ ls -F
g77manual.txt@
$ ls -l
(egy csomó dolog...) g77manual.txt -> /usr/doc/g77/DOC
A DOS-os fájlok és könyvtárak a következő tulajdonságokkal (attribútumokkal) rendelkezhetnek: A (archív), H (rejtett), R (csak olvasható), és S (rendszer fájl). Csupán a H-nak és az R-nek van értelme Linux alatt. A rejtett fájlok egy ponttal kezdődnek, míg az R megfelelőjét a lentiekben tárgyaljuk.
Unix alatt egy fájl rendelkezik hozzáférési engedélyekkel és tulajdonossal, aki egy ``csoporthoz'' tartozik. Itt egy példa:
$ ls -l /bin/ls
-rwxr-xr-x 1 root bin 27281 Aug 15 1995 /bin/ls*
Az első mező tartalmazz a /bin/ls
fájl hozzáférési engedélyeit.
Ez a fájlt a root felhasználóhoz és a bin csoporthoz tartozik.
A többi információtól eltekintve, jegyezd meg, hogy a -rwxr-xr-x
a következőket jelenti (balról jobbra):
-
a fájl típusa (-
= közönséges fájl, d
= könyvtár,
l
= link, stb.); rwx
a fájl tulajdonosának a hozzáférési engedélyei
(olvasható, írható, végrehajtható); r-x
a fájltulajdonos csoportjának az
engedélyei (olvasható, végrehajtható); (most nem részletezem a csoport fogalmát,
kezdőként egyelőre jól megleszel nélküle ;-) végül r-x
az összes többi
felhasználó engedélyei (olvasható, végrehajtható).
A /bin
könyvtárnak szintén vannak hozzáférési engedélyei, olvasd
el a
Könyvtárak hozzáférési engedélyei
fejezetet a részletekért. Emiatt nem törölheted az /bin/ls
fájlt,
hacsak nem te vagy a root, nincs írási jogot, hogy ezt megtedd. Egy fájl
hozzáfárési engedélyeinek megváltoztatása a következőképpen lehetséges:
$ chmod <kiXengedély> <fájl>
ahol a `ki' helyén u
(user, azaz a tulajdonos), g
(group, azaz a csoport) vagy o
(other, azaz bárki más) állhat, az `X' vagy
+
vagy -
, az `engedély' lehet r
(read, azaz olvasható), w
(write, azaz írható) vagy x
(execute, azaz végrehajtható). Általános példák a chmod
parancsra:
$ chmod +x file
Ez végrehajthatóvá teszi a file
-t. A
$ chmod go-rw file
eltávolítja a fájlról az írási és a olvasási engedélyeket mindenki számára, kivétel csupán a fájl a tulajdonosa. A
$ chmod ugo+rwx file
mindenkinek olvasási, írási és végrehajtási jogot ad. Végül, de nem utolsósorban a
# chmod +s file
paranccsal hozhatóak létre egy úgynevezett ``setuid'' vagy ``suid'' fájl, azaz olyan fájl, amelyet mindenki végrehajthat a tulajdonos jogaival. Általában a root tulajdonában levő suid fájlokkal fogsz találkozni, ezek többnyire fontos rendszerfájlok, mint például az X szerver.
Van egy rövidebb mód is az engedélyek megadására, ez számokkal történik.
Az rwxr-xr-x
kifejezhető úgy, mint 755. Minden betűnek egy bit felel meg,
a ---
0, a --x
1, a -w-
2, a -wx
3, és így tovább.
Bonyolultnak látszik, de egy kis gyakorlás után át fogod látni a koncepciót.
A root, azaz a rendszergazda, minden fájl hozzáférési engedélyeit megváltoztathatja.
OEK.
Bal oldalon vannak a DOS-os parancsok, jobb oldalon a linuxos megfelelői.
ATTRIB: chmod
COPY: cp
DEL: rm
MOVE: mv
REN: mv
TYPE: more, less, cat
Átirányítás és csőszervezés operátorok: < > >> |
Dzsóker karakterek: * ?
nul: /dev/null
prn, lpt1: /dev/lp0 vagy /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 $ lpr fractals.doc
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
Megjegyzések:
*
karakter alkalmazása a Linux alatt elegánsabb. A *
kifejezéshez
minden fájl illeszkedik kivéve a rejtett fájlokat. A rejtett fájlok a
.*
kifejezéshez illeszkednek, de vigyázat, az aktuális könyvtár `.
' és a
szülőkönyvtár `..
' is illeszkedik! A *.*
kifejezéshez csak azok a fájlok
illeszkednek amelyeknek a közepén '.
' található. A p*a
kifejezésre mind
a papa, mind a pipa, míg a *g*
kifejezésre mind a `régi' és mind a
`rugók' szavak illeszkednek.
more
programot használod, akkor a <szóköz> billentyűt használd a
lapozáshoz, és a 'q' billentyűt a kilépéshez. A less
program sokkal jobban használható, s itt használhatod nyíl-billentyűket is.
UNDELETE
, tehát jól gondold meg mielőtt bármit is
kitörölsz.
< > >>
jelein túlmenően, a Linux ismeri a
2>
jelet, amivel átirányítható szabványos hibakimenet (stderr),
továbbá a 2>&1
a szabványos hibakimenetet (stderr) a
szabványos kimenetre (stdout), míg a 1>&2
a szabványos
kimenetet a szabványos hibakimenetre irányítja.
[]
jellel.
Használata: az [abc]*
kifejezés azokhoz a fájlnevekhez illeszkedik amelyek
a, b vagy c betűvel kezdődnek. A *[I-N,1,2,3]
kifejezés azokhoz a
fájlnevekhez illeszkedik amelyek I, J, K, L, M, N, 1, 2, 3 betűvel
végződnek.
lpr
<fájl> kinyomtatja a fájlt a háttérben.
A nyomtatási sor ellenőrzésére használd a lpq
parancsot. Az
lprm
paranccsal kitörölheted a fájlt a nyomtatási sorból.
RENAME
, így a
mv *.xxx *.yyy
nem fog működni. Egy REN-hez hasonló parancs
letölthető az
ftp://sunsite.unc.edu/pub/Linux/utils/file
FTP-helyről.
cp -i
-t és mv -i
-t, ha azt szeretnéd,
hogy a rendszer szóljon, ha valamit felül készül írni.
Ha futtatni akarsz egy programot akkor a DOS-hoz hasonlóan itt is a program
nevét kell begépelned. Ha a könyvtár (
Könyvtárak használata fejezet),
amiben a programot eltároltad
megtalálható a PATH (
Rendszerinicializáló fájlok fejezet) környezeti változóban, a program el fog indulni.
Kivétel: a DOS-tól eltérően a Linux alatt az aktuális könyvtárban lévő
program is csak akkor fog elindulni, ha a könyvtár benne van a PATH-ban.
Tipp: ilyen esetben, ha a programod prog
akkor azt gépeld, hogy ./prog
.
Így néz ki egy tipikus parancssor:
$ parancs [-k1 [-k2] ... [-kn]] [par1 [par2] ... [parn]] [< bemenet] [> kimenet]
ahol a -k1
, ..., -kn
a program kapcsolói, és a par1
,
..., parn
a program paraméterei. Egy sorban több parancsot is begépelhetsz:
$ parancs1 ; parancs2 ; ... ; parancsn
Ennyit a programok futtatásáról, bár könnyű a következő lépés megtétele is. Az egyik legfontosabb indok, ami a Linux használata mellett szól, hogy a Linux többfeladatú operációs rendszer, azaz képes több program (ezentúl processzek) párhuzamos (egyidejű) futtatására. Elindíthatsz processzeket a háttérben, és amíg ezek futnak, tovább folytathatod a munkádat. Sőt, a Linux lehetővé teszi, hogy egyidejűleg többször bejelentkezve különböző virtuális terminálokon is dolgozz: ez olyan mintha több számítógéped lenne egyszerre, amin dolgozhatsz!
su - <loginname>
parancsot. Például: su - root
. Ez akkor hasznos,
ha egy olyan feladatot kell elvégezned, amit csak a root tehet meg.
exit
paranccsal lehet befejezni. Ha vannak leállított
munkáid (lásd később), akkor a rendszer figyelmeztet.
$ progname [-kapcsolók] [paraméterek] [< bemenet] [> kimenet] &
[1] 123
A burok (shell) a processzt egy munkaszámmal (például ez fent [1]
) és
a processz azonosítójával (PID) azonosítja (példánkban ez 123).
ps ax
. Ez a parancs kilistázza az összes jelenleg futó processzt.
kill <PID>
parancsot. Elképzelhető, hogy le kell lőnöd egy processzt,
ha nem tudod, hogyan kell leállítani, kilépni belőle... ;-).
Néha a processz csak a kill -SIGKILL <PID>
alkalmazásával lőhető le:
A burok megengedi, hogy megállíts egy processzt, időszakosan szüneteltesd
a futását, háttérbe küldjed, vagy a háttérből az előtérbe hozd vissza.
Ebben az összefüggésben a processzeket ``munká''-nak nevezik.
jobs
. Itt a munkákat a munkaszámuk azonosítja, nem a PID-jük.
bg <%job>
paranccsal
lehet a háttérbe küldeni (a processz munkává válik).
fg <%job>
parancsot. A legutoljára háttérbe küldött munka előtérbe hozásához elég kiadni a
fg
parancsot.
kill <%job>
parancsot kell használni, ahol a <job> a burok által
a processzhez rendelt munkaszám: 1, 2, 3, ...
Ezeknek az utasításoknak a használatával egyszerre tudsz egy lemezt megformázni, fájlok egy csoportját tömöríteni, kitömöríteni archivált fájlokat, programokat fordítani, és még mindig rendelkezésedre áll egy prompt, tovább dolgozhatsz zavartalanul! Próbáld ugyanezt megtenni DOS alatt! És próbáld ki ugyanezt Windows alatt is, csak hogy lásd a teljesítménybeli különbséget a két megvalósítás között (ha ugyan le nem fagy közben)!
Egy távoli gépen történő programfuttatáshoz elsőként be kell jelentkezned oda, s ehhez tudnod kell a gép nevét vagy IP-címét.
$ telnet tavoli.gep.hu
Bejelentkezés után elindíthatod kedvenc programod. Gondolom szükségtelen megemlítenem, hogy a másik gépen is kell rendelkezned felhasználói azonosítóval.
Ha van X Window rendszered, akkor akár X-es alkalmazásokat is futtathatsz a
távoli gépen oly módon, hogy az a te képernyődön jelenik meg. Legyen például
a távoli gép a tavoli.gep.hu
, míg a Te géped az sajat.gep.hu
. Egy a
távoli gépen levő X-es program futtatása az sajat.gep.hu
-n a
következőképpen lehetséges:
xterm
-et, vagy egy
azzal ekvivalens terminál emulátort (rxvt
, color-xterm
, nxterm
, kvt
, ...),
majd gépeld be:
$ xhost +tavoli.gep.hu
$ telnet tavoli.gep.hu
tavoli:$ DISPLAY=sajat.gep.hu:0.0
tavoli:$ program &
(A DISPLAY...
sor helyett, esetleg a setenv DISPLAY
local.linux.box:0.0
sor kell beírnod. Ez a távoli gépen futó
parancsértelmező buroktól függ.)
És láss csodát! A távoli gépen elindul a program
, ami majd a te képernyődön
fog megjelenni. Azonban modemes kapcsolat esetén nem érdemes ezzel próbálkozni,
használhatatlanul lassú lesz. Ráadásul ez egy durva és nem biztonságos módszer,
az ``Remote X Apps mini-HOWTO''
http://sunsite.unc.edu/LDP/HOWTO/mini/Remote-X-Apps
foglalkozik a témával részletesebben.