2.3 Lecke 1
Bevezetés
Tanúsítvány: |
Linux Essentials |
---|---|
Verzió: |
1.6 |
Témakör: |
2 Hogyan Igazodjunk El Linux Rendszerekben? |
Fejezet: |
2.3 Mappahasználat és Fájlok Listázása |
Lecke: |
1/2 |
Fájlok és Mappák
A Linux fájlrendszere abban hasonlít más operációs rendszerek fájlrendszeréhez, hogy tartalmaz fájlokat és mappákat. A fájlok emberek által olvasható szövegeket, futtatható programokat vagy a számítógép által használt bináris adatokat tartalmaznak. A mappákat rendszerezésre használjuk a fájlrendszerben. A mappák fájlokat és újabb mappákat tartalmazhatnak.
$ tree Documents ├── Mission-Statement.txt └── Reports └── report2018.txt 1 mappa, 2 fájl
Ebben a példában a Documents
egy mappa, ami egy fájlt tartalmaz (Mission-Statement.txt
) és egy almappát (Reports
). A Reports
mappa egy report2018.txt
nevű fájlt tartalmaz. A Documents
mappa a Reports
mappa szülője.
Tip
|
Ha a |
Fájl és Mappanevek
A fájl és mappanevek Linuxban kisbetűket, nagybetűket, számokat, szóközöket és speciális karaktereket is tartalmazhatnak. Mivel sok speciális karakternek speciális jelentése van a Linux shellben, jó, ha nem használunk szóközöket vagy speciális karaktereket, amikor fájlokat vagy mappákat nevezünk el. A szóközökhöz például a \
feloldójel használata szükséges:
$ cd Mission\ Statements
Nézzük meg a report2018.txt
fájlnevet. A fájlnevek tartalmazhatnak egy úgynevezett utótagot, ami a pont (.
) után található. A Windowssal ellentétben a Linux alatt ez az utótag nem bír különleges jelentéssel; itt az emberi érthetőség a cél. A példánkban a .txt
jelzi számunkra, hogy ez egy egyszerű szövegfájl, noha technikailag bármilyen típusú adat lehet benne.
Navigálás a Fájlrendszerben
Aktuális Lokáció Megszerzése
Mivel a Linux shellek, mint például a Bash, szövegalapúak, fontos emlékeznünk arra, hogy hol is vagyunk a fájlrendszerben. A parancssor megadja ezt az információt:
user@hostname ~/Documents/Reports $
A user
és hostname
kulcsszavakról későbbi szekciókban lesz szó. A promptból tudjuk, hogy az aktuális lokációnk a Reports
mappa. A pwd
parancs megadja a mappát (Print Working Directory):
user@hostname ~/Documents/Reports $ pwd /home/user/Documents/Reports
A mappák közötti kapcsolatot a perjel (/
) fejezi ki. Tudjuk, hogy a Reports
a Documents
egy alkönyvtára, ami a user
egy alkönyvtára, ami egy home
nevű mappában található. Úgy tűnik, hogy a home
-nak nincs szülőmappája, de ez nem igaz. A home
szülője a root, és az első perjel (/
) reprezentálja. A root mappáról egy későbbi leckében lesz szó.
Vegyük észre, hogy a pwd
parancs kimenete kissé eltér a parancssorban megadott útvonaltól. A /home/user
helyett a paranccsor egy tilde (~
) karaktert tartalmaz. A tilde egy speciális karakter, ami a felhasználó home mappáját jelöli. Erről a következő leckében részletesen lesz szó.
Mappatartalom Listázása
Az aktuális mappa tartalmát az ls
paranccsal listázhatjuk:
user@hostname ~/Documents/Reports $ ls report2018.txt
Vegyük észre, hogy az ls
nem szolgáltat információt a szülőmappáról. Ehhez hasonlóan, az alapértelmezett ls
nem ad információt az almappák tartalmáról. Az ls
csak az aktuális mappa tartalmát “látja”.
Mappaváltás
Linux alatt a navigáció elsősorban a cd
paranccsal történik. Ezzel válthatunk mappát (Change Directory). A pwd
parancs használatával tudhatjuk, hogy az aktuális mappa a /home/user/Documents/Reports
. Az aktuális mappáról egy új elérési út megadásával válthatunk:
user@hostname ~ $ cd /home/user/Documents user@hostname ~/Documents $ pwd /home/user/Documents user@hostname ~/Documents $ ls Mission-Statement.txt Reports
Az új lokáciáról “láthatjuk” a Mission-Statement.txt
fájlt és a Reports
almappát, de az almappa tartalmát már nem. A Reports
mappába így térhetünk vissza:
user@hostname ~/Documents $ cd Reports user@hostname ~/Documents/Reports $ pwd /home/user/Documents/Reports user@hostname ~/Documents/Reports $ ls report2018.txt
Visszatértünk oda, ahonnan indultunk.
Abszolút és Relatív Útvonalak
A pwd
parancs mindig egy abszolút elérési utat ad meg. Ez azt jelenti, hogy az elérési út minden lépést tartalmaz az útvonalból, a fájlrendszer tetejétől (/
) az aljáig (Reports
). Az abszolút útvonalak mindig /
-vel kezdődnek.
/ └── home └── user └── Documents └── Reports
Az abszolút elérési út az összes szükséges információt tartalmazza ahhoz, hogy a Reports
mappát bárhonnan a fájlrendszerből el tudjuk érni. Hátránya, hogy hosszadalmas és unalmas begépelni.
A második példát (cd Reports
) sokkal egyszerűbb leírni. Ez egy példa a relatív elérési útra. A relatív elérési utak rövidebbek, de csak az aktuális lokációban van jelentésük. Vegyük az alábbi példát: meglátogatom Önt a házában. Ön elmondja nekem, hogy a barátja a szomszédban lakik. Azért fogom érteni, mert a jelenlegi helyemre vonatkozik. De ha Ön ezt telefonon mondja el, nem leszek képes megtalálni a barátja házát, ahhoz meg kell adnia a pontos címet.
Speciális Relatív Útvonalak
A Linux shell lehetőséget ad az útvonalak lerövidítésére a navigáció során. Hogy felfedezzük az ilyen útvonalakat, írjuk be az ls
parancsot a -a
kapcsolóval. Ez a kapcsoló módosítja az ls
parancsot, tehát minden fájlt és mappát listázni fog, beleértve a rejtett fájlokat és mappákat:
user@hostname ~/Documents/Reports $ ls -a . .. report2018.txt
Note
|
Az |
Ennek a parancsnak két további eredménye van: ezek speciális útvonalak; nem új fájlokat vagy mappákat reprezentálnak, hanem olyanokat, amelyket már ismerünk:
.
-
Az aktuális lokációt jelzi (esetünkben
Reports
). ..
-
A szülőmappát jelzi (esetünkben
Documents
).
Gyakran szükségtelen az aktuális lokációhoz a speciális relatív elérési utat használni. Egyszerűbb és sokkal érthetőbb is beírni azt, hogy report2018.txt
, mint azt, hogy ./report2018.txt
. De a .
használatáról későbbi szekciókban fogunk tanulni. Jelenleg a szülőkönyvtár relatív elérési útjára fókuszálunk:
user@hostname ~/Documents/Reports $ cd .. user@hostname ~/Documents $ pwd /home/user/Documents
A cd
használata egyszerűbb a ..
-al, mint az abszolút útvonallal. Ráadásul kombinálhatjuk is, hogy gyorsabban navigálhassunk felfelé a fájlok között.
user@hostname ~/Documents $ cd ../.. $ pwd /home
Gyakorló Feladatok
-
Határozzuk meg a következő elérési utaknál, hogy melyik abszolút és melyik relatív:
/home/user/Downloads
../Reports
/var
docs
/
-
Figyeljük meg a következő fájlstruktúrát. Megjegyzés: A könyvtárak egy perjellel (
/
) végződnek, atree
az-F
opció segítségével hívható meg. Atree
parancs root (/
) könyvtárban való lefuttatásához nagyobb jogosultságokra van szükség. A következő példakimenet nem tartalmazza a teljes mappastruktúrát, segítségével válaszoljuk meg az alábbi kérdéseket:$ sudo tree -F / / ├── etc/ │ ├── network/ │ │ └── interfaces │ ├── systemd/ │ │ ├── resolved.conf │ │ ├── system/ │ │ ├── system.conf │ │ ├── user/ │ │ └── user.conf │ └── udev/ │ ├── rules.d/ │ └── udev.conf └── home/ ├── lost+found/ └── user/ └── Documents/ 12 mappa, 5 fájl
Az említett struktúra segítségével válaszoljuk meg a következő kérdéseket!
Egy felhasználó az alábbi parancsokat írja be:
$ cd /etc/udev $ ls -a
Mi lesz az
ls -a
parancs kimenete? -
Írjuk be a létező legrövidebb parancsokat az alábbiakhoz:
-
Az aktuális lokációnk a root (
/
). Írjuk be a parancsot, amivel elnavigálhatunk alost+found
-hoz ahome
mappában (példa):$ cd home/lost+found
-
Az aktuális lokációnk a root (
/
). Írjuk be a parancsot, amivel elnavigálhatunk a/etc/network/
nevű mappába. -
Az aktuális lokációnk a
/home/user/Documents/
. Navigáljunk el az/etc/
mappába! -
Az aktuális lokációnk a
/etc/systemd/system/
. Navigáljunk el a/home/user/
nevű mappába.
-
-
Nézzük meg az alábbi parancsokat:
$ pwd /etc/udev/rules.d $ cd ../../systemd/user $ cd .. $ pwd
Mi az utolsó
pwd
parancs kimenete?
Gondolkodtató Feladatok
-
Tételezzük fel, hogy a felhasználó az alábbi parancsokat adta ki:
$ mkdir "this is a test" $ ls this is a test
Melyik
cd
parancs segítségével léphetünk be a mappába? -
Próbáljuk meg újra, de a
cd this
beírása után nyomjuk meg a TAB billentyűt! Mit jelenít meg most a prompt?Ez egy példa az automatikus kiegészítésre, ami egy felbecsülhetetlen eszköz nem csak az idő megtakarítására, hanem az elírások elkerülésére is.
-
Próbáljunk meg létrehozni egy olyan mappát, aminek a nevében szerepel
\
karakter! Jelenítsük meg a mappa nevét azls
paranccsal, majd töröljük a mappát!
Összefoglalás
Ebben a leckében megtanultuk:
-
A Linux fájlrendszer alapjait
-
A különbséget a szülő és almappák között
-
A különbséget az abszolút és a relatív elérési útvonalak között
-
A speciális relatív útvonalakat:
.
és..
-
A
cd
segítségével való navigációt a fájlrendszerben -
Az aktuális lokáció kijelzését a
pwd
paranccsal -
Az összes fájl és mappa listázását az
ls -a
használatával
A leckében az alábbi parancsokról beszéltünk:
cd
-
Elnavigálás az aktuális mappáról.
pwd
-
Az aktuális mappa elérési útjának kiíratása
ls
-
Mappa tartalmának kilistázása és a fájlok tulajdonságainak megjelenítése
mkdir
-
Új mappa létrehozása
tree
-
A mappastruktúra hierarchikus megjelenítése
Válaszok a Gyakorló Feladatokra
-
Határozzuk meg a következő elérési utaknál, hogy melyik abszolút és melyik relatív:
/home/user/Downloads
abszolút
../Reports
relatív
/var
abszolút
docs
relatív
/
abszolút
-
Figyeljük meg a következő fájlstruktúrát. Megjegyzés: A könyvtárak egy perjellel (
/
) végződnek, atree
az-F
opció segítségével hívható meg. Atree
parancs root (/
) könyvtárban való lefuttatásához nagyobb jogosultságokra van szükség. A következő példakimenet nem tartalmazza a teljes mappastruktúrát, segítségével válaszoljuk meg az alábbi kérdéseket:$ sudo tree -F / / ├── etc/ │ ├── network/ │ │ └── interfaces │ ├── systemd/ │ │ ├── resolved.conf │ │ ├── system/ │ │ ├── system.conf │ │ ├── user/ │ │ └── user.conf │ └── udev/ │ ├── rules.d/ │ └── udev.conf └── home/ ├── lost+found/ └── user/ └── Documents/ 12 mappa, 5 fájl
Egy felhasználó az alábbi parancsokat írja be:
$ cd /etc/udev $ ls -a
Mi lesz az
ls -a
parancs kimenete?. .. rules.d udev.conf
-
Írjuk be a létező legrövidebb parancsokat az alábbiakhoz:
-
Az aktuális lokációnk a root (
/
). Írjuk be a parancsot, amivel elnavigálhatunk alost+found
-hoz ahome
mappában (példa):$ cd home/lost+found
-
Az aktuális lokációnk a root (
/
). Írjuk be a parancsot, amivel elnavigálhatunk a/etc/network/
nevű mappába!$ cd etc/network
-
Az aktuális lokációnk a
/home/user/Documents/
. Navigáljunk el az/etc/
mappába!$ cd /etc
-
Az aktuális lokációnk a
system
. Navigáljunk el auser
nevű mappába:$ cd /home/user
-
-
Nézzük meg az alábbi parancsokat:
$ pwd /etc/udev/rules.d $ cd ../../systemd/user $ cd .. $ pwd
Mi az utolsó
pwd
parancs kimenete?/etc/systemd
Válaszok a Gondolkodtató Feladatokra
-
Tételezzük fel, hogy a felhasználó az alábbi parancsokat adta ki:
$ mkdir "this is a test" $ ls this is a test
Melyik
cd
parancs segítségével léphetünk be a mappába?$ cd this\ is\ a\ test
-
Próbáljuk meg újra, de a
cd this
beírása után nyomjuk meg a TAB billentyűt! Mit jelenít meg most a prompt?$ cd this\ is\ a\ test
Ez egy példa az automatikus kiegészítésre, ami egy felbecsülhetetlen eszköz nem csak az idő megtakarítására, hanem az elírások elkerülésére is.
-
Próbáljunk meg létrehozni egy olyan mappát, aminek a nevében szerepel
\
karakter! Jelenítsük meg a mappa nevét azls
paranccsal, majd töröljük a mappát!Megpróbálhatjuk feloldani a visszaperjelt egy másikkal (
\\
) vagy használhatunk aposztrófot vagy idézőjelet a teljes mappanév körül:$ mkdir my\\dir $ ls 'my\dir' $ rmdir 'my\dir'