Oldal kiválasztása

Linux parancssor

A Linux

A Linux Parancssor használata

Forrás: https://szit.hu/doku.php?id=oktatas:linux:parancssor

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.

vissza az elejére>

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:

KarakterJelentés
\acsengőhang konzolos felületen
\begy karakter törlése visszafele
\nsortörés
\rkocsi vissza
\cnem ír ki újsor karaktert
\tvízszintes tabulátor
\vfüggőleges tabulátor
\\backslash
\nnna 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

vissza az elejére>

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

vissza az elejére>

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

vissza az elejére>

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–1joskajoska3184dec 13 18.37.bashrc
az állomány típusajogoklinkek számatulajdonoscsoportméretutolsó módosítás dátumaaz á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.

vissza az elejére>

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 + ASzelekció megkezdése
Alt + 6Másolás (ha nincs kijelölve, akkor az aktuális sor)
Ctrl + KKivágás
Ctrl + UBeilleszté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 + QKijelölés kezdete

vissza az elejére>

Linkek a fájlrendszerben

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.

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
FileA fájl neve
SizeA fájl mérete
BlocksA fájl által használt blokkok száma (512 bájtos blokkokkal számol!)
IOIO blokkméret a fájl számára
fájltípusszabályos fájl,
szabályos üres fájl
könyvtár
szimbolikus link
foglalat
speciális karakterfájl
speciális blokkfájl
DeviceAz eszköz neve hexadecimális és decimális formában.
InodeA fájl egyedi azonosítója a fájlrendszerben
LinksLinkek száma a fájlra
AccessHozzáférés szám és karakterformában.
UidTulajdonos
GidCsoport
AccessUtolsó fájlolvasási időpont
ModifyA fájl tartalmának utolsó változása
ChangeA 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

vissza az elejére>

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

vissza az elejére>

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évargumentumok
parancsnévkapcsolókparamé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:

vissza az elejére>

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.

Ctrl+D

vissza az elejére>