2.3 Lecke 2
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: |
2/2 |
Bevezetés
A Unix operációs rendszer eredetileg nagyszámítógépekhez lett tervezve az 1960-as évek közepén. Ezeken a számítógépen sok felhasználó osztozott, akik a rendszer erőforrásait terminálokon keresztül érték el. Ezek az alapvető gondolatok a mai Linux rendszereken is érződnek. Még mindig “terminálokról” beszélünk, hogy beírjuk a parancsokat a shellbe és minden Linux rendszer úgy van szervezve, hogy egyszerű legyen több felhasználót létrehozni egy rendszeren.
Home Mappák
Egy példa egy átlagos fájlrendszerre Linux alatt:
$ tree -L 1 / / ├── bin ├── boot ├── cdrom ├── dev ├── etc ├── home ├── lib ├── mnt ├── opt ├── proc ├── root ├── run ├── sbin ├── srv ├── sys ├── tmp ├── usr └── var
Ezen könyvtárak többsége az összes Linux rendszerben állandó. Szerverektől a szuperszámítógépekig, vagy a kis beágyazott rendszerekig egy tapasztalt Linux felhasználó biztos lehet benne, hogy az ls
parancs a /bin
mappában van, megváltoztathatja a rendszerkonfigurációt az /etc
fájljaival, és megtalálhatja a rendszer naplófájljait a /var
mappában. Az alapértelmezett lokációja ezeknek a fájloknak és mappáknak a Filesystem Hierarchy Standard (FHS) alapján van meghatározva, amit egy későbbi leckében tárgyalunk. Minél többet tanulunk a Linuxról, annál többet fogunk tanulni ezekről a mappákról, de egyelőre elég azt tudnunk, hogy:
-
A root fájlrendszerben történő változtatások minden felhasználót érinteni fognak és
-
a root fájlrendszerben levő fájlok megváltoztatásához adminisztrátori jogokra lesz szükségünk.
Ez azt jelenti, hogy átlagos felhasználók nem csak, hogy nem tudják módosítani ezeket a fájlokat, de még olvasási jogunk sincs. A jogosultságokról egy későbbi leckében lesz szó.
Fókuszáljunk a /home
mappára, aminek már ismerősnek kell lennie ezen a ponton:
$ tree -L 1 /home /home ├── user ├── michael └── lara
A példarendszerünkben három átlagos felhasználó található és mindegyiküknek van egy saját, egyedi lokációja, ahol úgy hozhatnak létre és módosíthatnak fájlokat vagy mappákat, hogy az hatással lenne más felhasználókra. Például az előző leckében az alábbi fájlstruktúrával dolgoztunk:
$ tree /home/user user └── Documents ├── Mission-Statement └── Reports └── report2018.txt
Jelen helyzetben a fájlrendszer így néz ki:
$ tree /home /home ├── user │ └── Documents │ ├── Mission-Statement │ └── Reports │ └── report2018.txt ├── michael │ ├── Documents │ │ └── presentation-for-clients.odp │ └── Music
…és így tovább lara
esetén.
A Linuxban a /home
olyan, mint egy bérház. Sok felhasználónak lehet itt helye, mindenkinek a saját lakásában. Az épület szolgáltatásai és karbantartása a felügyelő root felhasználó felelőssége.
A Home Speciális Relatív Útvonala
Amikor egy új terminált nyitunk meg Linuxban, a parancssor valahogy így néz ki:
user@hostname ~ $
A tilde (~
) itt a home mappát reprezentálja. Ha lefuttatjuk az ls
parancsot, ismerős kimenetet kapunk:
$ cd ~ $ ls Documents
Hasonlítsuk ezt össze a fenti fájlrendszerrel a jobb megértés érdekében!
Gondoljuk most át, mit tudunk a Linuxról: hasonlít egy bérházhoz, ahol sok felhasználó a /home
alatt lakik. Tehát a user
otthona más, mint michael
otthona. Ahhoz, hogy ezt demonstráljuk, a su
paranccsal válthatunk felhasználót (Switch User).
user@hostname ~ $ pwd /home/user user@hostname ~ $ su - michael Password: michael@hostname ~ $ pwd /home/michael
A ~
jelentése megváltozik attól függően, hogy ki a felhasználó. Ha`michael`, a ~
abszolút elérési útja a /home/michael
. Ha lara
, a ~
abszolút elérési útja a /home/lara
, és így tovább.
Home Mappához Viszonyított Útvonalak
A ~
használata nagyon kényelmes, feltéve, ha nem váltunk felhasználót. A következő példa során user
egy új munkamenetet kezdett:
$ ls Documents $ cd Documents $ ls Mission-Statement Reports $ cd Reports $ ls report2018.txt $ cd ~ $ ls Documents
Jegyezzük meg, hogy a felhasználók új munkamenete mindig a home mappájukban indul. Ebben a példában user
elutazott a Documents/Reports
almappába, és a cd ~
paranccsal visszatért oda, ahonnan indult. Ezt a cd
parancs argumentumuk nélküli használatával is elérhetjük:
$ cd Documents/Reports $ pwd /home/user/Documents/Reports $ cd $ pwd /home/user
Még egy utolsó dolog, amit meg kell jegyeznünk: pontosíthatjuk más felhasználók home mappáját, ha a tilde után megadjuk a felhasználónevet. Például:
$ ls ~michael Documents Music
Jegyezzük meg, hogy ez csak akkor működik, ha michael
jogosultságot adott nekünk arra, hogy megnézzük a home mappája tartalmát.
Tételezzük fel, hogy michael
meg szeretné nézni a report2018.txt
fájlt user
home mappájában. Feltéve, hogy michael
rendelkezik a szükséges jogosultságokkal, használhatja a less
parancsot.
$ less ~user/Documents/Reports/report2018.txt
Azokat az útvonalakat, amik tartalmazzák a ~
karaktert, home-mappához-viszonyított (relative-to-home-path) útvonalaknak nevezzük.
Rejtett Fájlok és Mappák
Az előző leckében bemutattuk a -a
opciót az ls
parancshoz. Az ls -a
parancsot használtuk két speciális relatív útvonal bemutatásához: .
és ..
. A -a
opció kilistázza az összes fájlt és mappát, beleértve a rejtett fájlokat és mappákat is.
$ ls -a ~ . .. .bash_history .bash_logout .bash-profile .bashrc Documents
A rejtett fájlok és mappák mindig ponttal (.
) kezdődnek. Alapértelmezésben egy felhasználó home mappájában sok rejtett fájl található. Ezek általában felhasználóspecifikus konfigurációs beállítások és csak egy tapasztalt felhasználó módosíthatja őket.
A Hosszú Lista Opció
Az ls
parancs viselkedését sok opcióval tudjuk módosítani. Nézzünk meg néhányat a leggyakoribb opciók közül:
$ ls -l -rw-r--r-- 1 user staff 3606 Jan 13 2017 report2018.txt
A -l
egy hosszú listát hoz létre. A fájlok és mappák mindegyike egy sort foglal el, de az egyes fájlokról és mappákról további információk jelennek meg.
-rw-r—r--
-
A fájl típusa és a jogosultságai. Egy átlagos fájl kötőjellel kezdődik, a mappa pedig
d
-vel. 1
-
Linkek száma.
user staff
-
A fájl tulajdonosát határozza meg. A
user
a fájl tulajdonosa és a fájl astaff
csoporttal van összekapcsolva. 3606
-
A fájl mérete bájtban.
Jan 13 2017
-
A fájl utolsó módosításának időpontja.
report2018.txt
-
A fájl neve.
A tulajdonjogról, jogosultságokról és linkekről a következő szekciókban beszélünk majd. Láthatjuk, hogy az ls
hosszú lista változata sokszor előnyösebb az alapértelmezett beállításnál.
További ls Opciók
Az alábbiakban bemutatjuk azokat az eseteket, amikor a leggyakrabban használjuk az ls
parancsot. Láthatjuk, hogy a felhasználó sok opciót kombinálhat a kívánt eredmény eléréséhez.
ls -lh
-
A hosszú lista kombinálása az emberi olvashatóságú (human readable) fájlméretettel megadja az
M
utótagot a megabájthoz vagy aK
-t a kilobájthoz. ls -d */
-
A
-d
opció listázza a mappákat, de a tartalmukat nem. Ennek kombinálása a*/
-al csak az almappákat mutatja, de a fájlokat nem. ls -lt
-
A hosszú lista a módosítás időpontja rendezésével. A fájlok a legújabb módosításokkal lesznek felül és a régebbi változtatások alul. A sorrend megváltoztatható így:
ls -lrt
-
Kombinálja a hosszú listát a módosítási időpont rendezésével, amit kombinál a
-r
-el, ami megfordítja a rendezést. Most az utoljára módosított fájlok lesznek a lista alján. A módosítás időpontja mellett a fájlok rendezhetők még a hozzáférés vagy státusz időpont alapján is. ls -lX
-
Kombinálja a hosszú listát a file eXtension (fájlkiterjesztés) opcióval. Ezzel például csoportosítja az összes
.txt
-re végződő fájlt, az összes.jpg
-re végződő fájlt és így tovább. ls -S
-
A
-S
a fájl mérete alapján rendez, nagyjából ugyanúgy, mint a-t
és a-X
rendezés idő és kiterjesztés szerint. A legnagyobb fájlok jönnek először és a kisebbek a végén. Jegyezzük meg, hogy az almappák tartalma nem jelenik meg a rendezésben. ls -R
-
A
-R
opció úgy módosítja azls
parancsot, hogy egy rekurzív listát jelenítsen meg. Mit jelent ez?
Rekurzió a Bashben
A rekurzió olyan helyzetre utal, amikor “valami önmagát határozza meg”. A rekurzió nagyon fontos fogalom a számítástechnikában, de itt sokkal egyszerűbb a jelentése. Vizsgáljuk meg az előző példánkat:
$ ls ~ Documents
Az előzményekből tudjuk, hogy a user
felhasználónak van egy home mappája és ebben a mappában van egy almappa. Az ls
eddig csak lokáció fájljait és almappáit mutatta és nem tudta kiírni az almappák tartalmát. A leckékben a tree
parancsot használtuk, amikor meg szerettük volna jeleníteni a mappák tartalmát. Sajnos a tree
nem tartozik a Linux alapvető programjai közé, emiatt pedig nem mindig érhető el. Hasonlítsuk össze a tree
kimenetét az ls -R
kimenetével a következő példákban:
$ tree /home/user user └── Documents ├── Mission-Statement └── Reports └── report2018.txt $ ls -R ~ /home/user/: Documents /home/user/Documents: Mission-Statement Reports /home/user/Documents/Reports: report2018.txt
Láthatjuk, hogy a rekurzív opcióval egy sokkal hosszabb fájllistát kaptunk. Valójában olyan, mintha kiadtuk volna az ls
parancsot a user
home mappájában és találtunk volna egy almappát. Ezután mintha beléptünk volna abba az almappába és lefuttattuk volna az ls
parancsot. Találtunk egy`Mission-Statement` fájlt és egy újabb almappát, Reports
néven. És újra, beléptünk volna abba az almappába is és újra kiadtuk volna az ls
parancsot. Lényegében az ls -R
futtatása olyan, mintha azt mondanánk a Bashnek: “Futtasd az ls
-t itt és ismételd meg a parancsot minden almappában, amit találsz.”
A rekurzió különösen fontos fájlmódosító parancsoknál, például másolás vagy mappák törlése. Például ha át akarnánk másolni a Documents
mappát, rekurzívan kellene azt megtennünk, hogy az almappákra is kiterjedjen a másolás.
Gyakorló Feladatok
-
Az alábbi fájlstruktúra segítségével válaszoljuk meg a következő három kérdést:
/ ├── etc/ │ ├── network/ │ │ └── interfaces/ │ ├── systemd/ │ │ ├── resolved.conf │ │ ├── system/ │ │ ├── system.conf │ │ ├── user/ │ │ └── user.conf │ └── udev/ │ ├── rules.d │ └── udev.conf └── home/ ├── lost+found/ ├── user/ │ └── Documents/ └── michael/ └── Music/
-
Melyik paranncsal navigálhatunk a
network
mappába, függetlenül az aktuális helyzetünktől? -
Melyik paranccsal tud a
user
felhasználó elnavigálni aDocuments
mappájába az/etc/udev
-ből? Használjuk a legrövidebb útvonalat! -
Melyik paranccsal tud a
user
elnavigálnimichael
Music
mappájába? Használjuk a legrövidebb útvonalat!
-
-
Válaszoljuk meg az alábbi két kérdést, ha ez az
ls -lh
kimenete. Ne felejtsük, hogy a mappákat a`d` jelzi a sorok elején.drwxrwxrwx 5 eric eric 4.0K Apr 26 2011 China/ -rwxrwxrwx 1 eric eric 1.5M Jul 18 2011 img_0066.jpg -rwxrwxrwx 1 eric eric 1.5M Jul 18 2011 img_0067.jpg -rwxrwxrwx 1 eric eric 1.6M Jul 18 2011 img_0074.jpg -rwxrwxrwx 1 eric eric 1.8M Jul 18 2011 img_0075.jpg -rwxrwxrwx 1 eric eric 46K Jul 18 2011 scary.jpg -rwxrwxrwx 1 eric eric 469K Jan 29 2018 Screenshot from 2017-08-13 21-22-24.png -rwxrwxrwx 1 eric eric 498K Jan 29 2018 Screenshot from 2017-08-14 21-18-07.png -rwxrwxrwx 1 eric eric 211K Jan 29 2018 Screenshot from 2018-01-06 23-29-30.png -rwxrwxrwx 1 eric eric 150K Jul 18 2011 tobermory.jpg drwxrwxrwx 6 eric eric 4.0K Apr 26 2011 Tokyo/ -rwxrwxrwx 1 eric eric 1.4M Jul 18 2011 Toronto 081.jpg -rwxrwxrwx 1 eric eric 1.4M Jul 18 2011 Toronto 085.jpg -rwxrwxrwx 1 eric eric 944K Jul 18 2011 Toronto 152.jpg -rwxrwxrwx 1 eric eric 728K Jul 18 2011 Toronto 173.jpg drwxrwxrwx 2 eric eric 4.0K Jun 5 2016 Wallpapers/
-
Amikor kiadjuk az
ls -lrS
parancsot, melyik fájl lesz a lista elején? -
Milyen kimenete lehet a
ls -ad */
parancsnak?
-
Gondolkodtató Feladatok
-
Futtassuk az
ls -lh
parancsot egy olyan mappában, amelyben vannak almappák! Figyeljük meg a kilistázott mappák méretét! Valósnak tűnnek ezek a méretek? Pontosan reprezentálják a mappában levő összes fájlt? -
Próbáljuk ki az alábbi, új parancsot:
du -h
! Futassuk le a parancsot és írjuk le, milyen kimenete van! -
Sok Linux rendszeren beírhatjuk az
ll
-t és ugyanazt a kimenetet kapjuk, mint azls -l
esetén. Jegyezzük meg, hogy azll
nem egy parancs. Például aman ll
parancs azt írja ki, hogy nem szerepel róla bejegyzés a manualban. Ez az alias egy példája. Miért lehetnek hasznosak az aliasok?
Összefoglalás
Ebben a gyakorlatban megtanultuk:
-
minden Linux felhasználónak van egy home mappája,
-
az aktuális felhasználó home mappája elérhető a
~
használatával, -
bármely fájl, amely a
~
-t használja, home-mappához-viszonyított útvonal.
Megtanultuk az ls
parancs leggyakoribb módosítási lehetőségeit.
-a
(all)-
kilistázza az összes fájlt/mappát, beleértve a rejtetteket is
-d
(directories)-
kilistázza a mappákat, de a tartalmukat nem
-h
(human readable)-
kilistázza a fájlok méretét olvasható formában
-l
(long list)-
extra információkat ad meg, egy fájl/mappa soronként
-r
(reverse)-
megfordítja egy lista sorrendjét
-R
(recursive)-
kilistázza az összes fájlt, beleértve az almappákban levőket is
-S
(size)-
fájlméret alapján rendez
-t
(time)-
a módosítás időpontja alapján rendez
-X
(eXtension)-
fájlkiterjesztés alapján rendez
Válaszok a Gyakorló Feladatokra
-
Az alábbi fájlstruktúra segítségével válaszoljuk meg a következő három kérdést:
/ ├── etc/ │ ├── network/ │ │ └── interfaces/ │ ├── systemd/ │ │ ├── resolved.conf │ │ ├── system/ │ │ ├── system.conf │ │ ├── user/ │ │ └── user.conf │ └── udev/ │ ├── rules.d │ └── udev.conf └── home/ ├── lost+found/ ├── user/ │ └── Documents/ └── michael/ └── Music/
-
Melyik paranncsal navigálhatunk a
network
mappába, függetlenül az aktuális helyzetünktől?cd /etc/network
-
Melyik paranccsal tud a
user
felhasználó elnavigálni aDocuments
mappájába az/etc/udev
-ből? Használjuk a legrövidebb útvonalat!cd ~/Documents
-
Melyik paranccsal tud a
user
elnavigálnimichael
Music
mappájába? Használjuk a legrövidebb útvonalat!cd ~michael/Music
-
-
Válaszoljuk meg az alábbi két kérdést, ha ez az
ls -lh
kimenete. Ne felejtsük, hogy a mappákat a`d` jelzi a sorok elején.drwxrwxrwx 5 eric eric 4.0K Apr 26 2011 China/ -rwxrwxrwx 1 eric eric 1.5M Jul 18 2011 img_0066.jpg -rwxrwxrwx 1 eric eric 1.5M Jul 18 2011 img_0067.jpg -rwxrwxrwx 1 eric eric 1.6M Jul 18 2011 img_0074.jpg -rwxrwxrwx 1 eric eric 1.8M Jul 18 2011 img_0075.jpg -rwxrwxrwx 1 eric eric 46K Jul 18 2011 scary.jpg -rwxrwxrwx 1 eric eric 469K Jan 29 2018 Screenshot from 2017-08-13 21-22-24.png -rwxrwxrwx 1 eric eric 498K Jan 29 2018 Screenshot from 2017-08-14 21-18-07.png -rwxrwxrwx 1 eric eric 211K Jan 29 2018 Screenshot from 2018-01-06 23-29-30.png -rwxrwxrwx 1 eric eric 150K Jul 18 2011 tobermory.jpg drwxrwxrwx 6 eric eric 4.0K Apr 26 2011 Tokyo/ -rwxrwxrwx 1 eric eric 1.4M Jul 18 2011 Toronto 081.jpg -rwxrwxrwx 1 eric eric 1.4M Jul 18 2011 Toronto 085.jpg -rwxrwxrwx 1 eric eric 944K Jul 18 2011 Toronto 152.jpg -rwxrwxrwx 1 eric eric 728K Jul 18 2011 Toronto 173.jpg drwxrwxrwx 2 eric eric 4.0K Jun 5 2016 Wallpapers/
-
Amikor kiadjuk az
ls -lrS
parancsot, melyik fájl lesz a lista elején?Mindhárom mappa 4.0K, ami a legkisebb fájlméret. Az
ls
a mappákat alapértelmezésen ABC-sorrendbe teszi. A helyes válasz ascary.jpg
. -
Milyen kimenete lehet a
ls -ad */
parancsnak?Ez a parancs kilistázza az összes almappát, beleértve a rejtett almappákat is.
-
Válaszok a Gondolkodtató Feladatokra
-
Futtassuk az
ls -lh
parancsot egy olyan mappában, amelyben vannak almappák! Figyeljük meg a kilistázott mappák méretét. Valósnak tűnnek ezek a méretek? Pontosan reprezentálják a mappában levő összes fájlt?Nem. Minden mappának a listázott mérete 4096 byte. Ez azért van, mert a mappák itt absztrakciók: valójában nem léteznek fastruktúraként a meghajtón. Amikor látunk egy mappát, valójában egy linket látunk a fájllistához. Ezeknek a linkeknek a mérete 4096 byte.
-
Próbáljuk ki az alábbi, új parancsot:
du -h
! Futassuk le a parancsot és írjuk le, milyen kimenete van!A
du
parancs egy listát generál az összes fájlról és mappáról és jelzi azok méretét egyesével. Adu -s
például megjeleníti a megadott helyen lévő összes fájl, mappa és almappa méretét. -
Sok Linux rendszeren beírhatjuk az
ll
-t és ugyanazt a kimenetet kapjuk, mint azls -l
esetén. Jegyezzük meg, hogy azll
nem egy parancs. Például aman ll
parancs azt írja ki, hogy nem szerepel róla bejegyzés a manualban. Ez az alias egy példája. Miért lehetnek hasznosak az aliasok?Az
ll
egyls -l
aliasa. A Bashben az aliasokkal egyszerűsítjük le a gyakran használt parancsokat. Azll
gyakran előre van definiálva, de létrehozhatjuk a sajátunkat is.