- A Linux története
- Linux könyvtárszerkezet
- Linux parancssor
- Debian GNU/Linux csomagkezelés
- Linux Shell programozás
A Linux Parancssor használata
Forrás: https://szit.hu/doku.php?id=oktatas:linux:parancssor
- Azonosítás
- Várakozási jel
- echo
- Felhasználókról
- A rendszer lekérdezése
- Könyvtárkezelés
- Fájlkezelés
- Parancsok
- Gyorsbillentyűk
- Szűrők
- Egyéb parancsok
Azonosítás
Belépés
A Linux indulása után várja, hogy bejelentkezzünk. Ehhez egy várakozási jelet jelenít meg:
login:
A login után kell beírnunk a felhasználónevünket.
login: joska
Ha a rendszerben a felhasználónevünk joska, akkor azt a login: után beírjuk. Egy <Enter> leütésével tudatjuk a rendszerrel, hogy végeztünk a bevitellel. A felhasználónév beírása után a password: várakozási jelet látjuk, amely a jelszavunk beírására szólít fel:
password:
A jelszó gépelésénél a képernyőn nem jelenek meg a begépelt karakterek.
Jelszó megváltoztatása
Ha kapunk egy rendszerhez hozzáférést, akkor az első dolgunk szokott lenni a jelszó megváltoztatása. Ezt a „passwd” parancs kiadásával tudjuk megtenni:
passwd
A felhasználó a passwd paranccsal megváltoztathatja saját jelszavát. A parancs először bekéri a jelenlegi jelszót, majd kétszer az új jelszót.
Rendszergazdaként, azaz a root felhasználóval mások jelszavát is megváltoztathatjuk. Ehhez adjuk meg a kívánt felhasználónevet a passwd parancs paramétereként.
A Linuxos rendszer úgy van összeállítva, hogy a rendszergazda nem tudja megmondani számodra a jelszavadat, ha már megváltoztattad. Ha elveszett, akkor legfeljebb újat tud adni.
A joska felhasználó jelszavának megváltoztatása
Ha te magad is rendszergazda vagy a Linuxban, mert mondjuk most telepítetted, akkor például a joska felhasználónak a következő módon tudod megváltoztatni a jelszavát:
passwd joska
Ez a parancs persze csak rendszergazdaként belépve fog sikerülni, vagy ha te vagy a joska felhasználó.
Kijelentkezés
Ha valahova bejelentkeztünk, akkor ki is kell tudnunk jönni onnan. Nézzük, hogyan lehet szabályosan kijelentkezni a rendszerből.
A rendszerből kijelentkezni a logout paranccsal lehetséges:
logout
A kijelentkezés további parancsokkal is lehetséges. Az egyik az exit parancs, a másik egy billentyűkombináció: Ctrl+D.
Az exit és logout között az a különbség, ha vannak félretett munkák (jobok), akkor az exit nem lép ki. A logout mindenképpen kilép.
A linuxos rendszerekben a Ctrl+D billentyűkombináció fájlvége jel küldésére is használatos néhány parancs illetve, program esetén. Ha ilyen programmal dolgozunk, előfordulhat, hogy csak fájlvége jelet akartunk küldeni, de véletlenül kétszer nyomtuk meg a Ctrl-D billentyűkombinációt, így azonnal ki is jelentkeztünk.
Egy Linuxos rendszeren ha grafikus felületet is telepítettünk, akkor lehetőség van a grafikus bejelentkezésre is, de mi most csak parancssorral foglalkozunk ebben a részben.
Várakozási jel
A várakozási jelről
A sikeres felhasználói azonosítás után a Linux parancsot vár. Ezt egy várakozási jellel adja értésünkre. A várakozási jel felhasználók és rendszergazdák számára is más. A felhasználók számára egy dollárjelet ($) jelenít meg a rendszer, a rendszergazdának pedig egy kettős-keresztet (#). A várakozási jel ki van bővítve némi információval. Tartalmazza a bejelentkezett felhasználónevet, a gép nevét és az aktuális könyvtárat.
joska@iskolazo:~$
Felhasználó várakozási jele
joska@iskolazo:~$
Ez a fajta várakozási jel a Debian GNU/Linuxra jellemző, de általában hasonló a többi linuxos rendszerben is. A felhasználónevet egy szeparátor követi (@). A gépnevet szintén, amely egy kettőspont (:). A kettőspont után egy tilde karakter (~) látható, amely a felhasználó saját könyvtárát jelképezi. A joska felhasználó esetében ez a /home/joska. A parancsokat a Bash nevű parancsértelmező várja, amelyre a dollárjel is utal.
Root felhasználó promptja
A root felhasználónak az alapértelmezett várakozási jele eltérő. A várakozási jelben az utolsó karakter egy kettős kereszt („#”).
root@iskolazo:~#
A rendszergazda, azaz root felhasználó is a bash parancsértelmezőt használja, viszont ő a rendszer teljes jogú felhasználója. Éppen ezért ne használjuk felhasználói feladatokra. Csak akkor használjuk ezt a hozzáférést, ha valóban szükség van a rendszergazdai jogokra.
echo
A PS1 környezeti változó megismerése előtt nézzük meg az echo parancs használatát. Az echo egy szöveget ír a képernyőre.
echo "Helló Világ!"
Az echo a szöveg végén egy sortörést is a képernyőre küld, amiről lebeszélhető a -n kapcsolóval.
echo -n "Helló Világ!"
Különleges karakterek is engedélyezhetők a -e kapcsolóval:
echo -e "Helló\nVilág!"
Vegyük észre ez utóbbi példánkban a „\n” különleges karaktereket. Ez például sortörést jelet küld a képernyőre.
Különleges karakterek táblázata:
Karakter | Jelentés |
---|---|
\a | csengőhang konzolos felületen |
\b | egy karakter törlése visszafele |
\n | sortörés |
\r | kocsi vissza |
\c | nem ír ki újsor karaktert |
\t | vízszintes tabulátor |
\v | függőleges tabulátor |
\\ | backslash |
\nnn | a karakter ASCII kódja nnn (oktálisan) |
Az echo parancsot úgy is használhatjuk, mint egy ls. Az összes .txt kiterjesztésű állomány megjelenítése:
echo *.txt
Az echo parancsnak két változatát használhatjuk. Az egyik:
- a parancsértelmező beépített parancsa
- külső parancs
Figyeljük meg a type echo kimenetét:
$ type echo echo egy beépített parancs
Alapból tehát ezt használjuk. Ha mégis a külső parancsot szeretnénk hasznáni meg kell adnunk a teljes útvonalat:
/bin/echo
Felhasználókról
Magamról
Ha várakozási jel nem tájékoztat arról, milyen néven léptünk be, akkor használjuk a whoami parancsot.
Ki vagyok én?
whoami
Mit lehet rólam tudni? Néha azt is szeretnénk tudni, milyen csoportokban van benne a felhasználónk. Ebben segít az id parancs.
id
A kimenet ehhez hasonló lehet:
uid=1000(joska) gid=1000(joska) csoportok=1000(joska), 4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),108(lpadmin), 125(sambashare),126(vboxusers),1002(teachers)
Jóval több információt ad. Megmondja milyen csoportokba tartozunk felhasználóként.
Az id parancs az -un kapcsolóval úgy viselkedik mint a whoami parancs:
id -un
Mi történt a rendszerben
Általában szeretnénk tudni ki volt utoljára bejelentkezve, vagy mikor használták utoljára a hozzáférésünket (használata-e illetéktelen). Ebben segít a last parancs:
last
A last parancs kimenete persze túl fut a képernyőn, ha már sokszor használtuk a Linuxot. Ezt tördelhetjük a more paranccsal így:
last | more
Használhatjuk ebből a célból a less parancsot is:
last | less
A less parancs felületéből egy billentyűvel tudunk kilépni:
Q
Csak a jelenlegi kapcsolatok:
last -ap now
Kik vannak bent?
Van amikor csak egyszerűen arra vagyunk kíváncsiak ki van bejelentkezve:
users
Ha azt is szeretnénk látni honnan léptek be, akkor a következő parancsot használjuk:
who
who -u
A legtöbb információt azonban a következő parancs adja:
w
Ez a parancs azt is kiírja, a bejelentkezett felhasználók mit csinálnak. Ezért ügyelnünk kell arra, hogy ha olyan parancsot használunk, amely paraméterként jelszót vár, azt ne futtassuk parancssorból önmagában. Hagyjuk, hogy a programunk kérje azt be.
Belépések listázása:
lslogins
Csak valódi felhasználók:
lslogins -u
A finger parancs
A finger parancs alapértelmezetten nem érhető el.
A telepítéshez rendszergazdai jogok szükségesek:
apt install finger
A használathoz egyszerűen beírhatjuk a finger parancsot:
finger
De egy felhasználó megadható paraméterként. Így több információt jelenít meg, a kívánt felhasználóról:
finger janos
A rendszer lekérdezése
date
Az aktuális dátumot a date paranccsal lehet lekérdezni:
date 2013. jan. 8., kedd, 20.39.43 CET
A dátum és időbeállításokról később bővebben is lesz szó.
A lekérdezések formája beállítható, ahogy azt az alábbiakban látjuk.
Csak az óra lekérdezése:
date +%H
Óra perc:
date +%H:%M
Évszám:
date +%Y
Évszám, hónappal és nappal
date +%Y-%m-%d
A dátum kiíratható unix formátumban is:
$ date +%s 1539114959 $ date -d @1417827123 2014. dec. 6., szombat, 01:52:03 CET $
cal
A cal megmutatja az aktuális hónapot és évet. Az aktuális hónap minden napját külön is megjeleníti, naptárszerűen.
Naptárat jelenít meg.
A cal parancs magyar kézikönyve sajnos elavult a Debian GNU/Linux 6.x rendszerekben. Helyette nézzük meg az angol nyelvűt. Például:
man -L us cal
Használhatjuk a cal helyett a ncal parancsot is.
A cal és az ncal parancsok a bsdmainutils csomag részei.
A cal ma már csak egy szimbolikus link a ncal programra. Ha az ncal nézetben, hétfővel kezdődő naptárat szeretnénk, használjuk az ncal -b parancsot:
ncal -b
Adott hónap az évben:
ncal -m 10
Az adott hónap előtt és után is egy hónap megjelenítése:
ncal -b -3
Szeptemberben így augusztus, szeptember és október jelenik meg.
ncal -b -3 -m 10
Így szeptember, október és november jelenik meg.
ncal -y 2020
Még pluszban hány hónap jelenjen meg, az aktuális után:
ncal -A 3
Még pluszban hány hónap jelenjen meg, az aktuális előtt:
ncal -B 3
Adott év, adott hónapja:
ncal -d 2020-4
vagy:
ncal -d 2020-04 ncal -d 2020-04 -A 2
uptime
Kiírja mennyi ideje fut a rendszer, milyen terhelésnek van kitéve.
uptime
uname
Az uname a kernelről ad információt:
uname
Kapcsoló nélkül csak annyit mond, hogy „Linux”. Ez az információ jelenik meg a -s hatására is.
A -m kapcsoló kiírja milyen hardvert használunk:
uname -m
Vagy:
uname --machine
A válasz például:
- x86_64
A -r megadja a kernel verziószámát:
uname -r 4.9.0-4-amd64
Az összes információt a -a kapcsolóval írja a képernyőre:
uname -a
A CPU és a memória
A processzor adatai:
cat /proc/cpuinfo
A memória adatai:
cat /proc/meminfo
Használt és szabad memória, cserehellyel együtt:
free
Lemezhasználat
df -h
du
Könyvtárkezelés
Aktuális könyvtár
A felhasználók alapértelmezésben, belépés után a saját könyvtárukba kerülnek, amelynek a jele ”~„. Alapértelmezés az is, hogy az aktuális könyvtár megjelenik a várakozási-jelben. Ha változtattunk várakozási-jelen és már nem az alapértelmezett könyvtárban állunk, szeretnénk tudni az aktuális könyvtár nevét, útvonalastól együtt. Ezt a pwd parancs begépelésével tehetjük meg. A pwd a present work directory vagy a print working directory rövidítése.
pwd
A joska nevű felhasználó például ezt láthatja, ha a saját könyvtárában áll:
/home/joska
A könyvtár tartalmának listázása
Általában szeretnénk a könyvtár tartalmát listázni. Szeretnénk látni milyen újabb könyvtárakat és fájlokat tartalmaz. Erre a célra az „ls” parancsot használhatjuk.
ls alapok
ls
Az ls kapcsolók nélkül kiadva az aktuális könyvtár tartalmát mutatja. Ha először lépünk be egy linuxos hozzáférésünkre, akkor valószínűleg nem találunk a saját könyvtárunkban állományt.
A rejtett állományok abban különböznek a többitől, hogy ponttal (.) kezdődnek. Ha először lépünk be egy hozzáférésünkre valószínűleg már vannak rejtett fájlok, csak nem látjuk őket. A -a kapcsolóval megtekinthetők a rejtett fájlok is:
ls -a
Egy következő kapcsoló a fájlokról a lehető legtöbb információt adja számunkra, ez a -l. Long azaz hosszú kimenet kapunk a kapcsolóval:
ls -l
Ha még nincs más könyvtárunk használjuk az „a” kapcsolót is:
ls -la
Az eredmény valami ilyesmi lehet:
összesen 28 drwxr-xr-x 3 joska joska 4096 febr 24 23.49 . drwxr-xr-x 4 root root 4096 dec 13 18.37 .. -rw------- 1 joska joska 92 febr 25 00.04 .bash_history -rw-r--r-- 1 joska joska 220 dec 13 18.37 .bash_logout -rw-r--r-- 1 joska joska 3184 dec 13 18.37 .bashrc drwx------ 2 joska joska 4096 febr 24 23.49 .mc -rw-r--r-- 1 joska joska 675 dec 13 18.37 .profile
Az ls parancsnak megadható, hogy melyik könyvtárat listázza számunkra. A gyökér könyvtár listázása a következő módon történhet:
ls /
Vagy a /bin könyvtár listázása:
ls /bin
Az ls hosszú kimenete
Fentebb már láttuk a -l kapcsoló hatását (-a -val együtt):
összesen 28 drwxr-xr-x 3 joska joska 4096 febr 24 23.49 . drwxr-xr-x 4 root root 4096 dec 13 18.37 .. -rw------- 1 joska joska 92 febr 25 00.04 .bash_history -rw-r--r-- 1 joska joska 220 dec 13 18.37 .bash_logout -rw-r--r-- 1 joska joska 3184 dec 13 18.37 .bashrc drwx------ 2 joska joska 4096 febr 24 23.49 .mc -rw-r--r-- 1 joska joska 675 dec 13 18.37 .profile
A kimenet első elemének a neve egy pont (.), a másodiknak pedig két pont (..). Az egy pont magában az aktuális könyvtárat jelképezi, a két pont egymás után pedig a szülőkönyvtárat jelképezi.
A parancs először az állományról kiírja, hogy milyen fajta állomány. A Unix alapú rendszerekben a könyvtárak is állományként vannak kezelve, ezért a könyvtárat egy speciális állománynak is tekinthetjük. Így van ez a számítógép hardver eszközeivel is. Minden eszköz egy állományként érhető el a rendszerben. Ezért szoktuk mondani, hogy a Linuxban minden állomány.
– | rw-r–r– | 1 | joska | joska | 3184 | dec 13 18.37 | .bashrc |
az állomány típusa | jogok | linkek száma | tulajdonos | csoport | méret | utolsó módosítás dátuma | az állomány neve |
Minden sor 10 darab karakterrel kezdődik. Ebből az első az állomány típusa, a többi kilenc az állományhoz tartozó jogokat mutatja.
A következő szám az állományra mutató linkek számát mutatja. A linkekről lásd később a link létrehozása című részt.
A linkek száma után az állomány tulajdonosa, amit a csoport neve követ. A Debian GNU/Linux rendszerekben egy felhasználó létrehozásakor létrejön egy a nevével azonos csoport is. Így lehet, hogy a csoportnév megegyezik a tulajdonos nevével.
A következő szám az állomány mérete. Könyvtárak esetén itt a blokk mérettét látjuk.
Ezt követi az utolsó módosítás dátuma, és végül az állomány neve.
Ha listázott elem egy könyvtár, akkor a méret résznél a fájlrendszerben használatos blokkméret fog megjelenni.
Könyvtárak és fájlok megkülönböztetése
A könyvtárak és fájlok a -l kapcsolóval megkülönböztethetők, de előfordul, hogy ezen kapcsoló nélkül is szeretném látni, hogy mivel van dolgom. Ezt a -F kapcsolóval tehetem meg:
ls -F
Könyvtár méret
A fájlok és könyvtárak számára legkisebb lefoglalható egység a fájlrendszertől függ. ext3 és ext4 fájlrendszeren ez 4096 bytes. Ha futtatjuk a ls -ld parancsot, akkor látjuk az adott könyvtár számára mennyi helyet foglalunk:
ls -ld munka
A kimenet pedig ehhez hasonló lehet:
drwxr-xr-x joska joska 4096 márc 9 10.26 munka/
A könyvtár számára a 4096 a kezdeti lefoglalt hely (fájlok számára is). A könyvtárban eltárolt fájlok sokasodása után ez nőhet, a következő például 4096 valamelyik szorzatára.
Az alábbi parancs létrehoz néhány fájlt:
mkdir munka cd munka
Hozzunk létre 200 fájlt:
for ((i=0; i<200; i++)); do touch aaaaaaaaaa_$i; done
Nézzük meg a ls -ld kimenetét a könyvtáron:
ls -ld . drwxr-xr-x joska joska 12288 márc 12 07.03
Ezek után az aktuális könyvtár listázásánál a méret: 12288
Ne felejtsük el, hogy más fájlrendszernél ezek az értékek eltérhetnek.
Külön bejegyzések
Egy könyvtár vagy fájl listázása esetén a jogok után ritka esetben megjelenhet plusz (+) vagy pont (.) karakter:
drwxr-xr-x+ joska joska 12288 márc 12 07.03 Nev
vagy:
drwxr-xr-x. joska joska 12288 márc 12 07.03 Nev
A plusz (+) karakter arra utal, hogy a fájlhoz (vagy könyvtárhoz) külön ACL bejegyzések is tartoznak. Ha pont (.) karakter van a jogok után, akkor ez SELinux címkék bejegyzésére utal.
Ha mindkettő van (ACL és SELinux címke is), akkor a plusz (+) karakter látszik. További információk az ACL és az SELinux lapokon.
Könyvtár létrehozása
Könyvtárakat az „mkdir” paranccsal hozhatunk létre. Az mk, a make szóból, a dir pedig a directory szóból származik. Paraméterként több könyvtárat is megadhatunk. A linuxos, illetve unixos rendszerek kis és nagybetű érzékenyek. A következő példában szereplő nevek két külön könyvtárat jelölnek:
- Informatika
- informatika
A parancs szintaxisa:
mkdir konyvtar_neve ...
A mai Linuxok már UTF-8-as kódolást használják a rendszer minden szintjén, így használhatunk ékezetes könyvtárneveket is. Ezzel azonban gond lehet, ha más rendszerre visszük a könyvtárainkat.
Egyszerre több könyvtárat is létrehozhatunk, ha szóközzel tagolva felsoroljuk, vagy kapcsos zárójelek között vesszővel tagoljuk azokat. Utóbbi esetben szóköz nem lehet köztük:
mkdir elso masodik harmadik
mkdir {elso,masodik,harmadik}
Ha útvonalat is megadunk egy könyvtár létrehozásánál a -p kapcsoló segítségével, az útvonalban szereplő nem létező könyvtárak automatikusan létrejönnek:
mkdir -p /home/joska/munka/dolgozok/human/gizi
Könyvtárcsere
Ha már vannak újabb könyvtáraink szeretnék „belépni” azokba.
A példa kedvéért, hozzuk létre saját könyvtárunkban a jarmu nevű könyvtárat. Tegyük fel, hogy a saját könyvtárunk a /home/joska. A „pwd” parancs tanúsága szerint pedig ebben a könyvtárban állunk. Kiadtuk a könyvtárlétrehozás parancsát:
mkdir jarmu
Szeretnénk az új könyvtárba belépni, vagyis könyvtárat cserélni. Erre a „cd” parancs ad lehetőséget:
cd jarmu
A „pwd” paranccsal ellenőrizzük a könyvtárváltás meglétét.
A „cd” parancs első „c” betűje a „change” szóból van, a „d” betű pedig a „directory” szóból.
Ha jól dolgoztunk a pwd parancs kimenete most a következő:
/home/joska/jarmu
Most a „jarmu” könyvtáron belül hozzunk létre egy „szeker” nevű könyvtárat:
mkdir szeker
Lépjünk bele:
cd szeker
Ezek után a pwd kimenete:
/home/joska/jarmu/szeker
Most vissza kellene lépni az előző könyvtárba. Az előző könyvtárat két pont jelképezi:
..
Másként, ha most éppen a /home/joska/jarmu/szeker könyvtárban állunk akkor a két pont a /home/joska/jarmu könyvtárat jelképezi. Ha szeretnénk visszalépni a jarmu könyvtárba, akkor megtehetjük, hogy a teljes útvonal megadásával így lépek vissza:
cd /home/joska/jarmu
De ugyanezt az eredményt érhetjük el, ha cd paranccsal használjuk a két pontot:
cd ..
Ez utóbbi parancs bármely könyvtárban is állunk, azt eredményezi, hogy egy könyvtárral feljebb kerülünk.
Ugyanígy használhatjuk a gyökérkönyvtár jelét a fájlrendszer gyökerébe jutáshoz:
cd /
Ezzel a fájlrendszer gyökerébe jutunk.
Van még egy különleges karakter, amely a saját könyvtárunkat jelképezi. Ez a következő:
~
Tilde karakternek hívják. Bármely könyvtárban is állok a könyvtárstruktúrában, ha kiadom a következő parancsot, a saját könyvtárunkba fogok jutni:
cd ~
Vegyük észre, hogy a várakozási jelben is szerepel egy tilde karakter (Legtöbb linuxos terjesztésben így van beállítva a várakozási jel).
A saját könyvtárunkba visszaléphetünk egyszerűen a cd paranccsal is:
cd
Az utoljára használt könyvtárba is könnyedén visszaléphetünk:
cd -
Könyvtár törlése
Az rmdir parancs segítségével minden megadott üres könyvtárat törölhetünk:
rmdir konyvtarnev
Itt is használható a -p kapcsoló. A parancs így a legbelső könyvtárat törli, ha az üres, és utána a többit, egyenként. Legyen a példa kedvéért egy ilyen könyvtárszerkezet:
egy/ketto/harom
Kiadjuk a törlésre az utasítást:
rmdir egy/ketto/harom
A parancs először törli a harom könyvtárat, ha az üres. Utána a ketto könyvtárat, ha az előző sikeres volt és a ketto üres. Végül ha az előző kettő sikeres volt, akkor törli az egy könyvtárat is.
Könyvtár átnevezése
A könyvtár átnevezését az mv paranccsal hajtjuk végre, amely az angol move szóból származik. Magyarul mozgatás jelent. A parancsot valójában arra találták ki, hogy egy állományt egy másik helyre mozgassunk. Viszont ha a mozgatás helye a kiindulási pont, akkor csak átnevezés történik.
Szintaxisa a következő:
mv eredetikonyvtar ujkonyvtar
Könyvtár átmozgatása
mv konyvtar001 konyvtar002/
A konyvtar002 könyvtárba mozgatjuk a konyvtár001 nevű könyvtárat.
Könyvtárak másolása
cp -R dir1 dir2
Ha a dir2 már egy létező könyvtár, akkor annak tartalmába másol! Ha nincs dir2 könyvtára akkor az aktuális könyvtárban létrehozza a dir2 könyvtárat.
A -R kapcsoló hatására valójában rekurzív másolásra adunk parancsot, de könyvtármásolásnál éppen ezt szeretnénk.
Könyvtárnevek mérete
A könyvtárnevek maximális hossza 256 bájt. De az ékezetesekkel duplán kell számolnunk.
Fájlkezelés
Fájlok létrehozása
Egy fájl létrehozásához a legegyszerűbb parancs a touch. Igaz eredeti célja, hogy egy fájl időbélyegét megváltoztassuk, de ha egy állomány nem létezik amelynek időbélyegét aktualizálni szeretnénk, akkor azt létrehozza. Természetesen a fájl tartalma üres lesz. A touch parancs nem kérdez semmit, csak elkészíti az állományt:
touch fajlneve.txt
Az echo paranccsal is létrehozhatunk fájlokat. Ekkor az echo után írt „Szöveg” a fájlba kerül.
echo "alma" > gyumolcsok.txt
Fájlok törlése
Egy fájl törlése:
rm fajlnev
Törlés rekurzívan:
rm -r fajlnev
Az rm parancs alapvetően fájlok törlésére lett kitalálva, ezért könyvtárat csak úgy tudunk törölni vele, ha beállítjuk a rekurzívitást.
A könyvtár és tartalmának törlése:
rm -r könyvtárnév
Az egész könyvtárfa törlése a gyökértől kiindulva:
rm -r /
A -f kapcsolóval kérdés nélkül törölhetők az állományok. A nem létező állományok miatt sincs visszajelzés:
rm -f vmi.txt
Egyszerre több fájl is törölhető:
rm vmi1 vmi2 vmi3
Ha óvatosak szeretnénk lenni, ezért minden fájl törlése előtt elvárnánk egy kérdés, hogy törölhetjük-e, akkor használjuk az -i kapcsolót:
rm -i vmi1 vmi2 vmi3
Ha kérdés nélkül szeretnék egy könyvtárat, tartalmukkal együtt töröli, használjuk a -f és -r kapcsolókat:
rm -rf könyvtárnév
A -r mondja meg, hogy legyen rekurzív a művelet, a -f pedig, hogy ne problémázzon az rm parancs.
Az rm parancs mellett használható a „*” jelölése, amely bármilyen szövegre illeszkedik. a .txt kiterjesztésű fájlok törlése:
rm *.txt
A csillag karakter persze állhat a bárhol a mintában.
Fájlok átnevezése
mv fajl001 fajl002
Az mv parancs valójában a fájlok mozgatására lett kitalálva, de ha nem adunk meg könyvtárat, vagyis ugyanabba a könyvtárba mozgatunk, akkor tulajdonképpen átnevezés történik.
Átnevezés {}
használatával:
mv fel.txt{,.elavult}
Az eredmény: fel.txt.elavult
Fájlok mozgatása
Adott állomány mozgatása adott könyvtárba:
mv fajl konyvtar
vagy:
mv fajl konyvtar/
A fajl nevű állományt a konyvtar nevű mappába mozgatjuk.
Több fájl is mozgatható egy könyvtárba, a lényeg, hogy a könyvtár neve legyen az utolsó:
mv fajl1 fajl2 fajl3 konyvtar
Fájlok másolása
Az aktuális könyvtárban szeretnénk a file1 állományról egy file2 másolatot:
cp fajl01 fajl02
Adott egy „munka” nevű könyvtár az aktuális könyvtáron belül. Ebbe szeretnénk másolni a file1 nevű állományt, ugyanezen a néven:
cp fajl01 munka/
A -u, vagy hosszabban –update kapcsolóval, a nem kerülnek másolásra azok a nem-könyvtár fájlok, amelyek azonos vagy újabb módosítási idővel rendelkeznek.
cp -u *.c cel
Fájlok tartalmának megtekintése
Gyakran szükség van arra, hogy gyorsan belenézzünk egy fájlba. Erre használható például a cat parancs:
cat fajlnev
more fajlnev
less fajlnev
Fájlok darabolása
split -b 1440000 fajlnev
Régebben ha floppy lemezre akartunk másolni, pont ekkora méretre kellett darabolnunk a fájlt. A fenti parancs segítségével a fajlnev nevű állományt 1440000 byte nagyságú részekre lett feldarabolva. A fájlokat automatikusan elnevezi ehhez hasonlóan:
- xaa
- xab
- xac
- stb
Darabolt fájlok összefűzése
A darabolt fájlokat előbb-utóbb szeretnénk összeszerkeszteni. Ezt a cat paranccsal tehetjük meg az alábbi formában:
cat x* >> fajlnev
A csillag, azt jelenti, hogy minden könyvtár ami x-el kezdődik.
Fájlok szerkesztése
Fájlok szerkesztésére nagyon sok eszköz áll rendelkezésre. Lehet parancssorból a sed paranccsal szerkeszteni. Vagy lehet erre a célra kitalált szövegszerkesztőket használni. Legyen például a virag.txt nevű állomány amit szeretnénk szerkeszteni:
vi virag.txt
vagy
nano virag.txt
vagy
mcedit virag.txt
Az Midnight Commander beépített szövegszerkesztője. Valójában egy szimbolikus link az mc parancsra. Ebből következik, hogy a használatához az „mc” csomagnak telepítve kell lennie a gépünkön.
Nano
Billentyűk
A nano szövegszerkesztő alapvető billentyűkombinációi Ctrl gombbal működnek. Ezt maga a szövegszerkesztő is tudatja velünk, de a Ctrl helyett egy „^” karaktert látunk mindig. A mentés például a Ctrl+O billentyűkombinációval történhet, amit így látunk:
^O
Vagy a kilépés Ctrl + X billentyűkombináció, amelyet így látunk:
^X
Szerkesztés
A vágólapos szerkesztési műveleteket kezdjük a kijelöléssel. Először meg kell mondani, hogy most kijelölés jön. A kijelölés végét nem kell jelezni (ellentétben az mceditel). Ha kijelöltük azt amit vágólapra szeretnénk tenni, akkor el kell dönteni ezt hogyan szeretnénk. A kijelölt szöveg kivágásával, vagy másolásával. Ennek megfelelő billentyűkombinációt nyomunk. Ezt követően arra a helyre lépünk, ahova a szöveget be kell illeszteni, amit Ctrl + U kombinációval tehetünk meg.
Alt + A | Szelekció megkezdése |
Alt + 6 | Másolás (ha nincs kijelölve, akkor az aktuális sor) |
Ctrl + K | Kivágás |
Ctrl + U | Beillesztés |
A Ctrl + K billentyűkombinációt használhatjuk kijelölés nélkül is. Ekkor azt a sort vágja ki, amelyikben éppen állt a kurzor a Ctrl + K lenyomásakor.
Egyéb
Alt + Q | Kijelölés kezdete |
Linkek a fájlrendszerben
Merev link
Amikor létrehozunk egy állományt a merevlemezen létrehozunk számára egy inode nevű bejegyzést. Az inode tartalmazza a következő információkat:
- időbélyegek
- méret
- tulajdonos
- csoport
- jogok
- elfoglalt blokk méret
- IO-blokk méret
A fájl neve nem az inode-ban tárolódik. A fájlnév a szülő könyvtár tartalmi részében tárolódik. A név mellett egy mutató jön létre a fájl inode-ra. Ezt nevezzük linknek.
További linkeket hozhatunk létre az ln paranccsal:
touch fruit.txt ln fruit.txt frutta.txt
A fruit.txt és a frutta.txt is ugyanarra az inode-ra mutat. Ellenőrizzük az ls paranccsal. A -i kapcsoló megmutatja inode azonosítót:
ls -li fruit.txt frutta.txt
A lehetséges kimenet:
1059029 -rw-r--r-- 2 janos janos 2 okt 12 21:06 fruit.txt 1059029 -rw-r--r-- 2 janos janos 2 okt 12 21:06 frutta.txt
Ha már két merev link mutat egy fájlra, a fájl csak akkor törlődik, ha mindkét linket töröljük.
Vegyük a következő példát. Létrehozok egy fájlt:
touch erdo.txt
Most létrehozok egy rámutató linket:
ln erdo.txt fak.txt
Most törlöm a erdo.txt-t:
rm erdo.txt
A fájl maga nem kerül törlésre, mert a fak.txt nevű link még az állományra mutat. Az állomány törlése csak ekkor történhet meg.
Az ls -l parancs kimenetében vegyük észre a linkek számát.
Szimbolikus link
A szimbolikus link másként viselkedik, mint a merev link, ezért is nevezzük szimbolikusnak.
A szimbolikus link létrehozásakor létrejön egy új inode bejegyzés. Az ebben található mutató viszont nem célként megadott inode-ra mutat. Helyette a célhoz tartozó névre mutat (ami egy merev link neve).
Ennek eredménye, ha töröljük a merev linket, a szimbolikus link nem fog mutatni sehova.
Szimbolikus link létrehozása
ln -s fajlnev linkfajlra
A fájlrendszerben szimbolikus linkre példa:
ls -l /vmlinuz
A kísérletezéshez lehetőleg újonnan telepített Linuxot használjunk, ahol a háttérben nagy eséllyel nem jönnek létre újabb fájlok, nincs még szolgáltatás telepítve.
Kísérletképpen hozzuk létre a fruit.txt állományt, ha az még nem létezik. A kísérlet folytatása előtt nézzük meg az adott fájlrendszeren mennyi a szabadon felhasználható inode:
stat -f fruit.txt
A kimenet utolsó sorában például ilyet láthatunk:
Inode-ok: összes: 36626432 szabad: 35042423
Vagyis van 35042423 szabad inode.
Most hozzunk létre egy obst.txt nevű szimbolikus linket, ami a fruit.txt-re mutat:
touch fruit.txt ln -s fruit.txt obst.txt
Most nézzük meg a hozzájuk tartozó inode azonosítókat:
ls -li fruit.txt obst.txt
A fruit.txt és az obst.txt inode azonosítói különböznek.
Most nézzük meg újra, hány szabad inode van:
stat -f fruit.txt
A kimenet utolsó sora ilyen lehet:
Inode-ok: összes: 36626432 szabad: 35042422
A szabad inode-ok számra eggyel csökkent, azaz létrejött egy új inode.
Fájlok statisztikája
A stat parancs még több információt szolgáltat egy állományról vagy egy könyvtárról.
stat fajlnev
Például:
stat log.txt
File: "log.txt" Size: 0 Blocks: 0 IO Block: 4096 szabályos üres fájl Device: 802h/2050d Inode: 1461005 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 1000/ andras) Gid: ( 1000/ andras) Access: 2012-01-15 23:00:17.365731988 +0100 Modify: 2011-08-09 22:35:50.584228887 +0200 Change: 2011-08-09 22:35:50.584228887 +0200
File | A fájl neve |
Size | A fájl mérete |
Blocks | A fájl által használt blokkok száma (512 bájtos blokkokkal számol!) |
IO | IO blokkméret a fájl számára |
fájltípus | szabályos fájl, szabályos üres fájl könyvtár szimbolikus link foglalat speciális karakterfájl speciális blokkfájl |
Device | Az eszköz neve hexadecimális és decimális formában. |
Inode | A fájl egyedi azonosítója a fájlrendszerben |
Links | Linkek száma a fájlra |
Access | Hozzáférés szám és karakterformában. |
Uid | Tulajdonos |
Gid | Csoport |
Access | Utolsó fájlolvasási időpont |
Modify | A fájl tartalmának utolsó változása |
Change | A fájl inode leírójának utolsó változása |
stat konyvtarnev
Magáról a fájlrendszerről kaphatunk információt a -f kapcsoló megadásával:
stat -f fajlnev
Például:
stat -f log.txt
File: "log.txt" ID: 3f4e5580b0204b72 Namelen: 255 Type: ext2/ext3 Block size: 4096 Fundamental block size: 4096 Blocks: Total: 9612076 Free: 4608081 Available: 4119806 Inodes: Total: 2444624 Free: 2115881
Ha írunk a fájlba, akkor módosul a mtime (Modify time), de ezzel együtt a ctime (Change time) is. A ctime viszont módosul még néhány esetben. Ha például módosítom a fájl jogait, vagy tulajdonsát, akkor a ctime érték frissül.
A -c vagy a –format kapcsolóval kiírathatjuk (többek között) mit ért (hány bájt-ot) a stat blokkméret alatt:
stat --format=%B fajlnev
$ stat --format=%B vmi.txt 512
Fájlok mérete
A fájlok lemezen foglalt helyét és méretét tudhatjuk meg a „du” parancs segítségével. A du alapértelmezésként a lemezen elfoglalt helyet mutatja meg blokkméretben. 1 blokk 1 kibibájt-nak számít, azaz 1024 bájtnak.
Ha bájt-ban szeretnénk megkapni pontosan mekkora az állomány mérete, akkor a -b vagy –bytes kapcsolót kell használnunk.
Hozzunk létre saját könyvtárunkban egy fájlt:
cd ~ echo "Lorem ipsum doloest amet" > lorem.txt
Nézzük meg a helyfoglalását:
du lorem.txt
Az eredmény:
4 lorem.txt
Nem négy bájt. Négy kibibájt (4 * 1024 bájt). Ennyi helyet foglal a lemezen. A du parancs tehát alapértelmezésben 1024-es blokkokkal számol.
Ha be van állítva a POSIXLY_CORRECT környezeti változó, akkor 512 bájtos blokkokkal kell számolnunk. Állítsuk be a változót és nézzük meg újra a parancs kimenetét:
set -o posix export POSIXLY_CORRECT du lorem.txt
Megjegyzés: A korábbi Bash változatokban (Debian10 előtt), nem volt szükség az export parancsra. Ugyanakkor, a set és export helyett megfelel egy export POSIXLY_CORRECT=1 utasítás is.
A kimenet:
8 lorem.txt
A kimenetben most 8 blokk, vagyis 8 darab 512 bájtos helyet foglal az állományunk, ami 4096 bájt összesen.
A POSIXLY_CORRECT környezeti változót azért szokták beállítani, hogy a programok úgy működjenek, hogy megfeleljenek a POSIX szabványnak. A POSIXLY_CORRECT kikapcsolásához:
set +o posix
A set Bash belső parancsa, több információért nézd meg a leírását:
help set
Most nézzük meg a valós méretét:
du -b lorem.txt
vagy:
du --bytes lorem.txt
26 bájtot kapunk:
26 lorem.txt
Nézzük meg a stat paranccsal is a lorem.txt lefoglalt blokkméretét. Vegyük észre a különbséget. A stat azt mondja 8 blokk, mert az eleve 512 bájt mérettel számol.
Ebből láthatjuk, hogy az adott fájlrendszer blokkmérete 4096 bájt.
A teszteléshez létrehozhatunk egy 4096 bájt nagyságú fájlt:
dd if=/dev/zero of=teszt.txt bs=1024 count=4
Nézzük meg a du paranccsal hány blokkot foglal:
$ du teszt 4 teszt.txt
Most adjunk hozzá még két bájtot:
echo a >> teszt.txt
Megjegyzés: egy sortörés is hozzáíródik, azért 2 bájt.
Ellenőrizzük újra:
$ du teszt 8 teszt.txt
Fájlnevek
A fájlnevek tartalmazhatnak ékezetes fájlneveket, számokat, alulvonást (_), kötőjelet, pontot stb.
Maximális hosszuk: 255 bájt
Vegyük észre, hogy a 255 a karakterek száma helyett a szükséges bájtokat tartalmazza. A magyar ékezetes betűk például 2 bájtosak.
A fájlnevek lehetséges hossza fájlrendszerfüggő, de általában mindenhol 255.
Próbáljunk meg létrehozni egy olyan fájlt, amelynek a neve 255 bájt hosszú:
touch 012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234
A fájl létrejön. Most próbáljunk meg 256-tal:
touch 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345 touch: '0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345' elérése sikertelen: Túl hosszú fájlnév
A fájl nem hozható létre a hibaüzenet: Túl hosszú fájlnév.
A példában megadott fájlnév hosszát magunk is ellenőrizhetjük a wc -c segítségével. Vegyünk egy rövidebb fájl nevet ami csak 3 karakterből áll. Vegyük a fenti fájlnévnek csak az első 3 karakterét, hogy megnézzük hogyan működik a wc -c.
echo 012 | wc -c 4
Az echo 012 | wc -c eredménye 4, tehát eggyel több, mint ahány karakter van. Most másoljuk az 012 három helyére a fent megadott teljes fájlnevet, ellenőrizzük az eredményt.
Megjegyzés: Egy útvonal maximális hossza 4096 karakter.
A kernel forrásában a limits.h fejállományban van definiálva a maximális nagyság.
[...] #define NAME_MAX 255 /* # chars in a file name */ #define PATH_MAX 4096 /* # chars in a path name including nul */ [...]
Ha gépünkön telepítve vannak a fejállományok, akkor ott is ellenőrizhetjük. 4.9.0-3-as kernel esetén:
/usr/src/linux-headers-4.9.0-3-common/include/uapi/linux/limits.h
Fájlok keresése
Keresés tartalom alapján:
find . -name "*.txt" -print | xargs grep "Nagy József"
Olyan .txt kiterjesztésű fájlokat keresünk, amelyben szerepel a „Nagy József” név.
Egyszerűbben:
grep -lir "Nagy József" /utvonal/konyvtar
Olyan fájlokat keresünk, adott könyvtárban, amelyben szerepel a „Nagy József név. Az eredmény a fájl neve.
Harmadik verzió:
egrep -R "Nagy József" /útvonal/könyvtár
Negyedik verzió:
grep -Pri "Nagy József" /útvonal/könyvtár
A kapcsolók rendre:
- -P –perl-regexp — A minta Perl reguláris kifejezés
- -r –recursive — Rekurzívan az alkönyvtárakban is keres
- -i –ignore-case — Kis és nagybetűk megegyeznek
A find és grep parancsról később részletesen is szó esik.
A locate parancs:
A locate parancs telepítése:
apt install locate
locate minta
Létezik egy /var/lib/mlocate/mlocate.db nevű adatbázis, amely segít megtalálni állományokat. Az adatbázis a következő paranccsal frissíthető:
updatedb
Parancsok
Szintaxis
A szintaxis a parancsok kiadásának formális leírása.
A parancsot begépelve parancssornak nevezzük.
A Linuxos rendszerben egymás után több parancsot is beírhatok pontosvesszővel tagolva:
parancs1 ; parancs2 ; parancsN
A parancsokat && karakterpárossal is tagolhatjuk:
parancs1 && parancs2
Ekkor a parancs2 csak akkor fog végrehajtódni, ha az első sikeres volt.
A prancssort két részre lehet osztani. A parancs neve és az argumentumok.
Példa:
ls -1 -F fajlnev1
A példában az ls a parancs neve ami után jön az pedig mind argumentum. Itt az ls parancsnak három paramétere van.
Az argumentumokat kapcsolókra és paraméterekre osztjuk fel.
Parancssor | ||
parancsnév | argumentumok | |
parancsnév | kapcsolók | paraméterek |
Opciók
Kapcsolók vagy opciók a parancs nevét követik. Egy vagy két kötőjel vezeti be őket. Ha egy kötőjel van, átláthatóbb egy hosszú parancssor. Ha hosszú formát használjuk olvashatóbb. Hogy egy-egy parancs esetén mi van megvalósítva, az csak a programozón múlik.
Az opciók módosítják a parancs végrehajtását.
-F | –classify |
-a | –all |
-s | –size |
Paraméterek
A paraméterek az opciókat követik. Egy vagy több is lehet belőlük.
A paraméterek határozzák meg, min kell végrehajtani a parancsot.
ls -1 -F file1 file2 file3
Két opció: -1 -F
Három paraméter: file1 file2 file3
Összevonható opciók
ls -1 -F file1
ls -F -1 file1
ls -1F file1
ls -F1 file1
A -1 és -F opciókat egyetlen kötőjellel is megadhatom. Ilyenkor a két opciót leírom egymás mellé. A sorrend lényegtelen.
WhiteSpace karakterek
WhiteSpace karakter a szóköz és a tabulátor. A parancs neve, az opciók és a paraméterek között ezekből egy vagy több is szerepelhet:
ls <szóköz>-l<szóköz>-F<szóköz>file1
ls <tab>-l<tab>-F<tab>file1
ls <szóköz><tab>-l<szóköz>-F<tab><tab><tab>file1
Az előző argumentum felhasználása
Az előző argumentumot felhasználhatjuk !$ beírásával.
mkdir Dokumentumok cd !$
Használhatjuk a <Alt>+<.> billentyűkombinációt is.
Előző parancs használata
Tegyük fel, hogy szeretnénk létrehozni a dir1 könyvtárban egy dir2 könyvtárat. Beírjuk:
mkdir dir1/dir2
De kiderül, hogy a dir1 könyvtár nem is ebben a könyvtárban van. A megfelelő könyvtárba váltunk, majd megismételjük a parancsot:
Gyorsbillentyűk
Tab
Tegyük fel, hogy van olyan fájlom, amelynek neve elég hosszú:
touch kedvenc_valmilyen_fajlom.txt
Szeretném a tartalmát megjeleníteni a „cat” paranccsal. Ekkor begépelem „cat m” karaktereket, majd megnyomom a Tab billentyűt.
De mi van akkor, ha több azonos módon kezdődő fájlunk is van:
touch valmilyen_kedvenc_fajlom_1.txt touch valmilyen_kedvenc_fajlom_2.txt touch valmilyen_kedvenc_fajlom_3.txt touch valmilyen_kedvenc_fajlom_4.txt
A fenti fájloknál begépelem „cat v”, majd megnyomom a „Tab” billentyűt. Melyiket fogja beírni? A rendszer ilyenkor addig jeleníti meg a fájlnevet, amíg azok egyeznek. Esetünkben így egészíti ki:
cat valmilyen_kedvenc_fajlom_
Ezek után nekünk kell beírni hogyan kell folytatódjon. Beírjuk például a „3”-as számot, és újabb „Tab” billentyűt nyomunk, ekkor kiegészíti a maradék részt is.
Le, fel nyíl
A le és a fel billentyűvel lapozhatunk a kiadott parancsok között. A fel billentyűvel visszafele lapozunk, a le billentyűvel előre.
Ctrl+R
A Ctrl+R billentyűkombináció arra való, hogy az előző parancsokban keressünk. Nyomjuk meg a Ctrl+R billentyűkombinációt, majd írjuk be a keresett parancs részletét.
<Ctrl>+<R> export
A gépelés közben máris megjelennek az egyezést mutató régebbi parancsok.
Alapértelmezetten csak egy találat jelenik meg. Több eredmény megjelenítéshez nyomjuk meg újra a Ctrl+R billentyűt. Tulajdonképpen lapozhatunk a parancsokban.
A keresést a Ctrl+C billentyűkombinációval szakíthatjuk meg, egy Enter lenyomásával újra aktiválhatjuk.
Ctrl+S
A Ctlr+S megállítja, megfagyasztja a terminált. Olyankor jöhet jól ha valamilyen parancs adatokat ír a képernyőre, ami nem fér el, ezért folyamatosan továbbítja azt, mi pedig szeretnénk beleolvasni, így megállítanánk.
A képernyő továbbítása folytatható a Ctrl+Q billentyűkombinációval.
Mozgás soron belül
A sor elejére a <Home> vagy a <Ctrl>+<a> billentyűvel mozoghatunk.
A sor végére az <End> vagy a <Ctrl>+<e> billentyűvel mozoghatunk.
Az előző argumentum felhasználása
Egy parancs kiadása után ha megnyomjuk az <Alt>+<.> billentyűkombinációt, az utoljára beírt argumentum a parancssorba íródik.
Ctrl+Z
Az aktuális folyamatot a háttérbe teszi. A háttérbe tett folyamat a fg és bg parancsokkal szabályozhatók.
Ctrl+C
Az aktuális folyamatot megszakítja.
Ctrl+L
A képernyő törlése.
Ctrl+U
A kurzor előtti részt egy speciális vágólapra helyezi.
Ctrl+K
A kurzor utáni részt egy speciális vágólapra helyezi.
Ctrl+Y
A speciális vágólapról beilleszti a tartalmat, amely a Ctrl+U vagy Ctrl+K billentyűparanccsal került oda.
Ctrl+W
A kurzortól balra törli a szót.
Ctrl+T
A kurzor alatti és kurzor előtti két karakter cseréje.