linux parancssor

107
2015/12/08 21:23 1/107 Linux parancssor SzitWiki - http://szit.hu/ < Linux Linux parancssor Szerző: Sallai András Copyright © Sallai András, 2009, 2010, 2011, 2012, 2013, 2014, 2015 Licenc: GNU Free Documentation License 1.3 Web: http://szit.hu Bevezetés Az alábbi leírás „rövid” szösszenet a Linux parancssor megismeréséhez. A leírás elolvasása nem elég az anyag elsajátításához. Minden parancsot folyamatosan ki kell próbálni. Az egyes parancsoknak keresd meg azon kapcsolóit is, amelyeket ez az írás nem tárgyal. A próbálgatások, gyakorlások visznek a tanulmányainkban előre. Ez az írás a Linux alapú számítógépes operációs rendszerek parancssori lehetőségeinek bemutatásával foglalkozik. Az ismertetésre kerülő parancsok nagy része, bármely unix alapú rendszeren használható. A parancsokat Debian GNU/Linuxon mutatom be. A gyakorláshoz szükséged lesz egy Linuxra. Egy „szegényesebb” linuxos rendszert (ez nem Debian) a következő helyen online is kipróbálhatsz, ha csak parancssort szeretnél: http://s-macke.github.io/jor1k/ Ez a Linux egy JavaScriptben írt számítógép-emulátoron fut. Előrelépést jelenthet, ha letöltesz egy Live CD/Live DVD képfájlt. Ehhez a Knoppix vagy a Linux Mint rendszert ajánlom. Ki kell írnod egy DVD-re a letöltött képfájlt, majd indítsd a rendszert a DVD-ről. A DVD-ről induló rendszert – amely telepítés nélkül használható – Live rendszernek nevezzük. A Live rendszer nem bántja a merevlemezre telepített rendszered. A Live rendszeren mentett állományaid viszont nem maradnak meg, hacsaknem pendrivera mentesz. A harmadik lehetőség, hogy telepítesz egy Linuxot. Ha számítógépen, ahova telepíteni szeretnéd a Linuxot már van egy rendszer, akkor ajánlom, hogy először egy virtuális számítógépre telepíts Linuxot. Ide már mehet például a Debian GNU/Linux Ha már nem okoz gondot a particionálás a telepítőben, vagy egy üres merevlemez áll rendelkezésedre, vagy az adatok nem számítanak az adott gépen, telepítsd fel saját Linuxodat. A leírásokban nem használok fájlkezelő programot, csak tisztán parancssort. Fájlkezelő ugyan van, de előbb tanuljunk meg dolgozni fájlkezelő nélkül. Így bármely unixon és Linuxon boldogulni fogunk. Gyakorolj! Ha már gyakoroltál, akkor még jöhet egy kis gyakorlás. Azonosítás Belépés

Upload: kicsipapa

Post on 13-Apr-2016

14 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Linux Parancssor

2015/12/08 21:23 1/107 Linux parancssor

SzitWiki - http://szit.hu/

< Linux

Linux parancssor

Szerző: Sallai AndrásCopyright © Sallai András, 2009, 2010, 2011, 2012, 2013, 2014, 2015Licenc: GNU Free Documentation License 1.3Web: http://szit.hu

Bevezetés

Az alábbi leírás „rövid” szösszenet a Linux parancssor megismeréséhez. A leírás elolvasása nem elégaz anyag elsajátításához. Minden parancsot folyamatosan ki kell próbálni. Az egyes parancsoknakkeresd meg azon kapcsolóit is, amelyeket ez az írás nem tárgyal. A próbálgatások, gyakorlásokvisznek a tanulmányainkban előre.

Ez az írás a Linux alapú számítógépes operációs rendszerek parancssori lehetőségeinekbemutatásával foglalkozik. Az ismertetésre kerülő parancsok nagy része, bármely unix alapúrendszeren használható. A parancsokat Debian GNU/Linuxon mutatom be.

A gyakorláshoz szükséged lesz egy Linuxra. Egy „szegényesebb” linuxos rendszert (ez nem Debian) akövetkező helyen online is kipróbálhatsz, ha csak parancssort szeretnél:http://s-macke.github.io/jor1k/ Ez a Linux egy JavaScriptben írt számítógép-emulátoron fut.

Előrelépést jelenthet, ha letöltesz egy Live CD/Live DVD képfájlt. Ehhez a Knoppix vagy a Linux Mintrendszert ajánlom. Ki kell írnod egy DVD-re a letöltött képfájlt, majd indítsd a rendszert a DVD-ről. ADVD-ről induló rendszert – amely telepítés nélkül használható – Live rendszernek nevezzük. A Liverendszer nem bántja a merevlemezre telepített rendszered. A Live rendszeren mentett állományaidviszont nem maradnak meg, hacsaknem pendrivera mentesz.

A harmadik lehetőség, hogy telepítesz egy Linuxot. Ha számítógépen, ahova telepíteni szeretnéd aLinuxot már van egy rendszer, akkor ajánlom, hogy először egy virtuális számítógépre telepítsLinuxot. Ide már mehet például a Debian GNU/Linux

Ha már nem okoz gondot a particionálás a telepítőben, vagy egy üres merevlemez állrendelkezésedre, vagy az adatok nem számítanak az adott gépen, telepítsd fel saját Linuxodat.

A leírásokban nem használok fájlkezelő programot, csak tisztán parancssort. Fájlkezelő ugyan van, deelőbb tanuljunk meg dolgozni fájlkezelő nélkül. Így bármely unixon és Linuxon boldogulni fogunk.

Gyakorolj! Ha már gyakoroltál, akkor még jöhet egy kis gyakorlás.

Azonosítás

Belépés

Page 2: Linux Parancssor

Last update: 2015/12/08 20:38 oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor

http://szit.hu/ Printed on 2015/12/08 21:23

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 mi felhasználónevünk a joska, akkor azt a login: után beírjuk. Egy <Enter>leütésével nyugtázzuk. A felhasználónév beírása után a password: várakozási jelet látjuk, amely ajelszavunk beírásra 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 ajelenlegi 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 adjukmeg 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 ajelszavadat, 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 ajoska 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 joskafelhasználó.

Kijelentkezés

Ha valahova bejelentkeztünk, akkor ki is kell tudnunk jönni onnan. Nézzük, hogyan lehet szabályosankijelentkezni a rendszerből.

Page 3: Linux Parancssor

2015/12/08 21:23 3/107 Linux parancssor

SzitWiki - http://szit.hu/

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 egybillentyűkombináció: Ctrl+D.

A linuxos rendszerekben a Ctrl+D billentyűkombináció fájlvége jel küldésére is használatos néhányparancs illetve, program esetén. Ha ilyen programmal dolgozunk, előfordulhat, hogy csak fájlvégejelet akartunk küldeni, de véletlenül kétszer nyomtuk meg a Ctrl-D billentyűkombinációt, így azonnalki is jelentkeztünk.

Egy Linuxos rendszeren ha grafikus felületet is telepítettünk, akkor lehetőség van a grafikusbejelentkezésre is, de mi most csak parancssorral foglalkozunk ebben a részben.

Megjegyzés

Ha valaki feltelepítette a grafikus felületet és szeretne parancssorra átkapcsolni, a következőket kelltudnia. Egy linuxos rendszer alapértelmezetten 6 azaz hat darab karakteres (vagy konzolos) felületenad belépési lehetőségeket. Ezeket terminálnak hívjuk. Vagyis van hat darab terminálunk. Indulás utánaz 1-s terminálon vagyunk. A többi terminált az F2, F3, stb. funkcióbillentyűkkel érhetjük el, egészenF6-ig, a lenyomott „Alt” billentyű mellett. A második terminál tehát ezzel a billentyűkombinációvalérhető el: Alt+F2. A harmadik: Alt+F3, stb. A Linuxos rendszerek lehetővé teszik ugyancsak hat darabgrafikus felülete elindítását is. A grafikus felület és egy XDM, KDM vagy GDM telepítése után a hatgrafikus felületből egy automatikusan elindul. Ha karakteres terminálban vagyunk ezt az Alt+F7billentyűkombinációval érhetjük el. Grafikus felületről karakteresre kapcsolás esetén kell a Ctrlbillentyű is. Egyes karakteres terminálra grafikus felületről tehát így kapcsolunk: Ctrl+Alt+F1.Ugyanígy érjük el a többit is. Persze ha már karakteres felületen vagyunk, akkor elég az Alt billentyű.

Grafikus felületen egy kis ablakban is indíthatók úgynevezett virtuális terminálok. Ebből végtelensokat indíthatunk. Ha GNOME grafikus környezetet telepítettünk, akkor a virtuális terminálunk lehetrendszergazdai és felhasználói. Elérésük:

Alkalmazások → Kellékek → TerminálAlkalmazások → Kellékek → Rendszergazda terminál

Gyakorlat

Mit vár a rendszer, ha a következőt írja: login:Milyen paranccsal tudjuk megváltoztatni a jelszavunkat?Milyen utasításokkal léphetünk ki a rendszerből?Ha van grafikus felület telepítve, hogyan tudunk konzolos felületre váltani?Milyen grafikus bejelentkezési felületek vannak?Hogyan tudunk egy újabb felületen bejelentkezni konzolt használva?A linuxos rendszergazda ki tudja deríteni a felhasználók jelszavát?Töltsön le egy linuxos Live CD-ét

Például KnoppixDerítse ki, milyen felhasználónévvel lehet belépni a rendszerbe

Page 4: Linux Parancssor

Last update: 2015/12/08 20:38 oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor

http://szit.hu/ Printed on 2015/12/08 21:23

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. Ez 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 egydollárjelet ($) jelenít meg a rendszer, a rendszergazdának pedig egy kettős-keresztet (#). Avárakozási jel ki van bővítve némi információval. Tartalmazza a bejelentkezett felhasználónevet, agé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 linuxosrendszerben is. A felhasználónevet egy szeparátor követi (@). A gépnevet szintén, amely egykettőspont (:). A kettőspont után egy tilde karakter (~) látható, amely a felhasználó saját könyvtárátjelké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ó karakteregy kettős kereszt („#”).

root@iskolazo:~#

A rendszergazda, azaz root felhasználó is a bash parancsértelmezőt használja, viszont ő a rendszerteljes jogú felhasználója. Éppen ezért ne használjuk felhasználói feladatokra. Csak akkor használjukezt a hozzáférést, ha valóban szükség van a rendszergazdai jogokra.

A PS1

Minden operációs rendszer úgynevezett változókban tárol információkat a programok számára. Mivelezek a változók a programok környezetéből elérhetők, környezeti változóknak is hívjuk őket. A PS1 isegy ilyen környezeti változó. Bármely környezeti változónak a tartalmát megtekinthetjük az echoparancs segítségével. Ilyenkor a környezeti változó neve elé egy dollárjelet kell írni: $PS1. Az echoparanccsal ekkor így jeleníthetjük meg:

echo $PS1

Page 5: Linux Parancssor

2015/12/08 21:23 5/107 Linux parancssor

SzitWiki - http://szit.hu/

Gyakorlat

Mit jelent a várakozási jel?Debian GNU/Linux rendszeren mi a felhasználók alapértelmezett várakozási jele?Mit jelent a várakozási jelben a „~” karakter?A Debian GNU/Linux rendszerben mi a root felhasználó alapértelmezett várakozási jele?Milyen környezeti változó tartalmazza a várakozási jel beállításait?Hogyan épül fel a Debian GNU/Linux felhasználói várakozási jel?

Környezeti változók

Minden operációs rendszerben léteznek úgynevezett környezeti változók. Ezek az operációsrendszerről vagy programjainkról tárolnak információkat. A környezet változók a rendszer indulásaután automatikusan beállításra kerülnek.

A környezeti változók megtekintése:

printenv

Paraméter nélkül az összes környezeti változót kiírja.

Megadhatjuk melyik változót szeretnénk:

printenv PATH

vagy

printenv HOME

vagy

printenv SHELL

A környezeti változók lekérdezhetők a set paranccsal is:

set

A kimenet általában túl fut a képernyőn. A kimenetet képernyőoldalakra tördelhetjük a lessparanccsal:

set | less

A grep parancs segítségével, megmondhatjuk, hogy csak azokat a sorokat szeretném látni, aholszerepel, például a PATH szó:

set | grep PATH

Magunk is beállíthatunk környezeti változókat:

Page 6: Linux Parancssor

Last update: 2015/12/08 20:38 oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor

http://szit.hu/ Printed on 2015/12/08 21:23

export TEST_VAR=hello

Nézzük meg:

set | grep TEST_VAR

A változó megszüntetése:

unset TEST_VAR

Próbáljuk ki a fenti parancsokat.

Egy változót beállíthatunk az export parancs nélkül is. Így is beállítható a TEST_VAR változó:

TEST_VAR=hello

Akkor mi a különbség? Ha használom az export parancsot, akkor az aktuális parancssorból indítottfolyamatok is látni fogják a TEST_VAR változót. Ha nem használom az export változót, akkor ezek afolyamatok nem látják. Próbáljuk ki:

BARAT_VAR=Feri

Ellenőrizzük, hogy létezik-e a változó:

echo $BARAT_VAR

Létezik, műküdik. Most indítsunk egy másik terminált. Lehet xterm vagy mate-termianl, vagy amirendelkezésünkre áll:

xterm

Nézzük meg ebben a terminálban a BARAT_VAR változó tartalmát:

echo $BARAT_VAR

Semmi. Most lépjünk ki az új terminálból, majd futtassuk a parancsot újra, de most az exportparanccsal:

export BARAT_VAR=Feri

Indítsunk egy xterm terminált:

xterm

Majd ebben a terminálban nézzük meg a változónkat:

echo $BARAT_VAR

Itt is látszik a tartalma.

Page 7: Linux Parancssor

2015/12/08 21:23 7/107 Linux parancssor

SzitWiki - http://szit.hu/

A PS1 környezeti változó tartalma

echo

A PS1 környezeti változó megismerése előtt nézzük meg az echo parancs használatát. Az echo egyszö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 aké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)

A PS1 tartalma

Fentebb már láttuk, hogy a PS1 környezeti változó tartalmát így tudjuk megnézni:

echo $PS1

Azt is láttuk, hogy a várakozási jel ki van egészítve felhasználó- és gépnévvel, azt követően pedig azaktuális könyvtárral. A PS1 környezeti változóban van leírva ez a forma. Ha megnézzük a fentiparancs eredményét, akkor ehhez hasonlót kell látnunk Debian GNU/Linux 6, 7 és 8 verzió esetén:

Konzolon:

${debian_chroot:+($debian_chroot)}\u@\h:\w\$

Page 8: Linux Parancssor

Last update: 2015/12/08 20:38 oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor

http://szit.hu/ Printed on 2015/12/08 21:23

Ha grafikus felületen indítottunk egy virtuális terminált, akkor ez egy kicsit másként néz ki:

\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$

Ezek a beállítások biztosítják a várakozási jel fentiek szerinti megjelenítését.

X terminál színezése

Természetesen megadhatunk más beállításokat is. A környezeti változókat mindig az exportparanccsal szokás beállítani, mert ez teszi lehetővé, hogy más folyamatok indítása után is érvényeslegyen a beállítás. Az alábbi beállítás a terminál színezését mutatja be:

exportPS1='${debian_chroot:+($debian_chroot)}\[\033[01;34m\]\u@\h\[\033[00m\]:\w\$'

Vegyük észre, hogy az export parancs után írt PS1 környezeti változó elé nem írtunk „$” karaktert.Fentebb említettük, hogy erre csak akkor van szükség ha hivatkozunk rá, tehát példának okárétkiíratjuk azt.

Egyszerű prompt

A fenti prompt nagyon hosszú tud lenni ha van egy nagyon hosszú könyvtárútvonalunk. Ilyenkorbeállíthatunk egy egyszerű várakozási jelet, amely csak egy dollárjelet meg egy szóközt jelenít meg:

export PS1="$ "

Akkor használjuk, ha az útvonal nagyon hosszú szeretnénk egy egyszerű várakozási jelet.

Ezek a beállítások persze nem véglegesek, újraindítás vagy ki-, és bejelentkezés után a környezetiváltozó tartalma eredetire visszaáll.

Ez a várakozás jel újraindítás után azonban nem érvényes. Ha újraindítás után is szeretnék látni,akkor a /home/joska/.bashrc állomány végére írhatjuk a következő sort

export PS1='$ '

Ez is szép megoldás:

export PS1="Irj be egy parancsot: "

Prompt beállítások

\u Felhasználónév\h Hostnév\w Aktuális könyvtár

Page 9: Linux Parancssor

2015/12/08 21:23 9/107 Linux parancssor

SzitWiki - http://szit.hu/

Prompt a felhasználónév, dollárjel és egy szóköz:

export PS1="\u\$ "

Prompt a hostnév, dollárjel és egy szóköz:

export PS1="\h\$ "

Prompt az aktuális könyvtár, dollárjel és egy szóköz:

export PS1="\w\$ "

De keverhetjük:

export PS1="\u\h\$ "

Így viszont nincs elválasztó kettő között. Szokásos szeparátor a „@” karakter„.

export PS1="\u@\h\$ "

Gyakorlat

Mire való az echo parancs?Milyen különleges karaktereket használhatunk az echo paranccsal?Hogyan állíthatjuk be, hogy a várakozási jel a felhasználónévből és egy dollárjelből álljon?Hogyan állíthatjuk be, hogy a várakozási jel a számítógép nevéből és egy dollárjelből álljon?Mit jelent az útvonalban a ”~„ karakter?

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 whoamiparancsot.

Ki vagyok én?

whoami

Ez a parancs kiírja a felhasználónevünket. Például:

joska

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

Page 10: Linux Parancssor

Last update: 2015/12/08 20:38 oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor

http://szit.hu/ Printed on 2015/12/08 21:23

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 ahozzá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. Ezttö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

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

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

Page 11: Linux Parancssor

2015/12/08 21:23 11/107 Linux parancssor

SzitWiki - http://szit.hu/

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.

Aktuális dátum

Az aktuális dátumot a date paranccsal lehet lekérdezni:

date2013. 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ó.

Gyakorlat

Mi a különbség a „who” és a „w” parancs között?Írja bent.txt fájlba kik vannak éppen a rendszerbe bejelentkezve.Mire való az users parancs?Hogyan nézhetjük, meg mikor volt utoljára újraindítva a rendszer?Hogyan nézhetjük, meg kik voltak bejelentkezve a rendszerbe?Hogyan kérdezzük le az aktuális dátumot?Mire való a „whoami” program?Mit csinál a „id -un” parancs?

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ásijelben. Ha változtattunkvárakozásijelen és már nem az alapértelmezett könyvtárban állunk, szeretnénk tudni az aktuáliskönyvtár nevét, útvonalastól együtt. Ezt a pwd parancs begépelésével tehetjük meg.

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 ésfájlokat tartalmaz. Erre a célra az „ls” parancsot használhatjuk.

Page 12: Linux Parancssor

Last update: 2015/12/08 20:38 oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor

http://szit.hu/ Printed on 2015/12/08 21:23

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 linuxoshozzá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 beegy hozzáférésünkre valószínűleg már vannak rejtett fájlok, csak nem látjuk őket. A -a kapcsolóvalmegtekinthető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 azazhosszú 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 28drwxr-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 .bashrcdrwx------ 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ásaa 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 28drwxr-xr-x 3 joska joska 4096 febr 24 23.49 .

Page 13: Linux Parancssor

2015/12/08 21:23 13/107 Linux parancssor

SzitWiki - http://szit.hu/

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 .bashrcdrwx------ 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ábanaz 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 akönyvtárak is állományként vannak kezelve, ezért a könyvtárat egy speciális állománynak istekinthetjü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 .bashrcaz állomány

típusa jogok linkekszáma tulajdonos csoport méret utolsó 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 linklé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/Linuxrendszerekben 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 fogmegjelenni.

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ülis 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 ext4fájlrendszeren ez 4096 bytes. Ha futtatjuk a ls -ld parancsot, akkor látjuk az adott könyvtár számáramennyi helyet foglalunk:

Page 14: Linux Parancssor

Last update: 2015/12/08 20:38 oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor

http://szit.hu/ Printed on 2015/12/08 21:23

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ájloksokasodá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 munkacd munka

Hozzunk létre 200 fájlt:

for ((i=; 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ókaz 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 directoryszóból származik. Paraméterként több könyvtárat is megadhatunk. A linuxos, illetve unixos

Page 15: Linux Parancssor

2015/12/08 21:23 15/107 Linux parancssor

SzitWiki - http://szit.hu/

rendszerek kis és nagybetű érzékenyek. A következő példában szereplő nevek két külön könyvtáratjelölnek:

Informatikainformatika

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ójelekkö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 útvonalbanszereplő nem létező könyvtárak automatikusan létrejönnek:

mkdir -p /home/joska/munka/dolgozok/human/gizi

Könyvtárcsere

Ha már van könyvtárunk szeretnék „belépni” a könyvtárba.

A példa kedvéért, hozzuk létre saját könyvtárunkban a jarmu nevű könyvtárat. Tegyük fel, hogy asajá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:

Page 16: Linux Parancssor

Last update: 2015/12/08 20:38 oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor

http://szit.hu/ Printed on 2015/12/08 21:23

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, akkormegtehetjü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 feljebbkerü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 akö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).

Könyvtár törlése

Az rmdir parancs segítségével minden megadott üres könyvtárat törölhetünk:

Page 17: Linux Parancssor

2015/12/08 21:23 17/107 Linux parancssor

SzitWiki - http://szit.hu/

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 atö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ő sikeresvolt é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ásikhelyre 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 azaktuá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 éppenezt 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.

Page 18: Linux Parancssor

Last update: 2015/12/08 20:38 oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor

http://szit.hu/ Printed on 2015/12/08 21:23

Gyakorlat

Milyen könyvtárkezelő parancsok vannak?Hozzon létre egy „tudas” nevű könyvtárat saját könyvtárában.Hozzon létre egy „jarmu” nevű könyvtárat saját könyvtárban.Milyen paranccsal nézzük meg, melyik könyvtárban vagyunk éppen?Milyen paranccsal léphetünk a gyökérkönyvtárba (egy parancs)?

A „jarmu” nevű könyvtárban a következő alkönyvtárakat hozza létere:CitroenDaewooFiatFordLadaMercedesNissanOpelPeugeot

Könyvtárszerkezet

A Linuxos könyvtárszerkezet felépítése egy fához hasonlítható. Van egy gyökér a kiinduláspont, ésabból újabb könyvtárak, alkönyvtárak nyílnak. A kiindulópontot azaz a gyökeret egyetlen karakterreljelezzük: ”/„. A perjel tehát a gyökér. Ha a merevlemez több részre ún. partícióra van felosztva,gyökér akkor is csak egy van, így nem kell különféle jelöléssekkel ellátni a gyökér könyvtárat. Jókérdés lehet, hogy akkor a többi partíciót hol és hogyan érjük el. A plusz partíciók egy-egy könyvtáralkönyvtáraiban érhetők el. A rendszergazda azokat bárhova felcsatolhatja, igaz van mindegyiknekegy megszokott helye.

A könyvtárak leírása

A felhasználók könyvtárai a „home” nevű könyvtárban találhatók. Hogy ez rögtön a gyökérkönyvtárból nyílik, így szoktuk leírni:

/home

A /home könyvtáron belül vannak a felhasználók könyvtárai. Legyen például egy joska, egy mari ésegy janos nevű felhasználó. A joska felhasználói könyvtárát ekkor így írhatjuk le:

/home/joska

Mari felhasználó könyvtára:

/home/mari

János felhasználó könyvtára:

/home/janos

Page 19: Linux Parancssor

2015/12/08 21:23 19/107 Linux parancssor

SzitWiki - http://szit.hu/

Fa formájú szerkezetben ezt így írhatjuk le:

/|--home |--janos |--joska |--mari

Ha Jánosnak van a saját könyvtárában egy Dokumentumok alkönyvtár, akkor a faszerkezet így néz ki:

/|--home |--janos | |--Dokumentumok |--joska |--mari

Itt szeretném megjegyezni, hogy a Linuxos fájlrendszer kis- és nagybetű érzékeny. Tehát egy„dokumentumok” és egy „Dokumentumok” nevű könyvtár, két különböző könyvtár.

További példa kedvéért Jánosnak legyen a Dokumentumok mellett egy Tervek és egy a tervekbőlnyíló Programozas könyvtára:

/|--home |--janos | |--Dokumentumok | |--Tervek | |--Programozas |--joska |--mari

A valósában a gyökérkönyvtárból is több könyvtár nyílik. A következő példában legyen pluszban egy„var” könyvtár is ábrázolva. A var könyvtárban a rendszer a változó adatokat tárolja:

/|--home| |--janos| | |--Dokumentumok| | |--Tervek| | |--Programozas| |--joska| |--mari|--var

A „var” könyvtárból nyíljon egy „log” nevű könyvtár amelyben a naplófájlok vannak:

/|--home| |--janos

Page 20: Linux Parancssor

Last update: 2015/12/08 20:38 oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor

http://szit.hu/ Printed on 2015/12/08 21:23

| | |--Dokumentumok| | |--Tervek| | |--Programozas| |--joska| |--mari|--var |--log

Ezzel a faszerkezettel tehát leírható az egész könyvtár hierarchia.

A „log” könyvtár útvonalát egyetlen sorba, ezek után így írhatjuk fel:

/var/log

A János nevű felhasználó Dokumentumok könyvtára egyetlen sorban:

/home/janos/Dokumentumok

A János nevű felhasználó „Programozas” könyvtára így írható le:

/home/janos/Tervek/Programozas

A János nevű felhasználó „Tervek” könyvtára így írható le:

/home/janos/Tervek

Esetleg az egyértelműbb jelzés miatt a könyvtár nevek végére tehetünk egy ”/„ karaktert:

/var/log/ /home/janos/Dokumentumok/ /home/janos/Tervek/Programozas/ /home/janos/Tervek/

Így tudjuk, hogy nem egy fájlról van szó.

A gyökér könyvtár könyvtárai

/binbootdev

hda0hda1

etchome

jozsimarikatieszter

Page 21: Linux Parancssor

2015/12/08 21:23 21/107 Linux parancssor

SzitWiki - http://szit.hu/

peterlibmediamntoptprocrootsbinsrvsystmpusr

binincludeliblocalsbinshare

varlogmailwww

Most nézzük, mi micsoda.

/bin Az alapparancsok programjai itt vannak elhelyezve./boot A rendszerindításhoz szükséges fájlok helye./dev A számítógép minden eszköze (hardvere) ebben a könyvtárban egy fájl formájábanleképezésre kerül./etc A rendszer beállításait tároljuk itt./home A felhasználók saját könyvtárai./lib Osztott programkönyvtárak, elsősorban a kernel, a /bin és az /sbin könyvtárak számára./lost+found Fájlrendszer sérülése után a helyreállító program ide helyezi azokat a fájlokat amitnem képes helyre állítani./media Más fájlrendszerek automatikusan ide kerülnek felcsatolásra./mnt Kézzel csatlakoztatott más fájlrendszerek.

/mnt/cdrom Ha kézzel csatolunk egy CD-ROM-t a fájlrendszerbe, akkor azt ide szokás./proc A memória leképezése fájlokra./root A root (rendszergazda) felhasználó saját könyvtára./sbin A rendszergazda parancsainak programjai itt találhatók./selinux A selinux szolgáltatás beállításai./srv A szolgáltatásokat nyújtó programok adatállományai (mint a home)./sys Néhány kernelobjektum itt van leképezve./tmp Ideiglenes fájlok helye./usr A programok könyvtárai.

/usr/bin/ : Futtatható programok a felhasználók számára./usr/include/ : A programozáshoz szükséges „include” fájlok helye./usr/lib/ : Osztott programkönyvtárak./usr/sbin/ : A root felhasználók programjai./usr/share/ : Architektúra független adatok./usr/src/ : Forráskódok. (Debian csomagok fordításához; Lásd még a /usr/local/src/

Page 22: Linux Parancssor

Last update: 2015/12/08 20:38 oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor

http://szit.hu/ Printed on 2015/12/08 21:23

könyvtárat)/usr/X11R6/ : Az „X Window System” könyvtára./usr/local/ : A rendszer-adminisztrátor által telepített programok helye.

/usr/local/bin : helyi bináris programok és scriptek helye, stb./usr/local/src : Forráskódok helye (Nem debianos eszközök telepítési helye.)

/var Gyakran változó fájlok helye.

Link: http://wiki.debian.org/FilesystemHierarchyStandard

Gyakorlat

Mit tartalmaz a /tmp könyvtár?Mit tartalmaz a /bin könyvtár?Mit tartalmaz a /home könyvtár?Mit tartalmaz a /media könyvtár?Mit tartalmaz a /proc könyvtár?

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étmegvá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:

Page 23: Linux Parancssor

2015/12/08 21:23 23/107 Linux parancssor

SzitWiki - http://szit.hu/

rm -r könyvtárnév

Az egész könyvtárfa törlése a gyökértől kiindulva:

rm -r /

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, vagyisugyanabba a könyvtárba mozgatunk, akkor tulajdonképpen átnevezés történik.

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/

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 catparancs:

Page 24: Linux Parancssor

Last update: 2015/12/08 20:38 oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor

http://szit.hu/ Printed on 2015/12/08 21:23

cat 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 fentiparancs segítségével a fajlnev nevű állományt 1440000 byte nagyságú részekre lett feldarabolva. Afájlokat automatikusan elnevezi ehhez hasonlóan:

xaaxabxacstb

Darabolt fájlok összefűzése

A darabolt fájlokat előbb-utóbb szeretnénk összeszerkeszteni. Ezt a cat paranccsal tehetjük meg azalá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 paranccsalszerkeszteni. Vagy lehet erre a célra kitalált szövegszerkesztőket használni. Legyen például avirag.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 mcparancsra. Ebből következik, hogy a használatához az „mc” csomagnak telepítve kell lennie agépünkön.

Page 25: Linux Parancssor

2015/12/08 21:23 25/107 Linux parancssor

SzitWiki - http://szit.hu/

Nano

Billentyűk

A nano szövegszerkesztő alapvető billentyűkombinációi Ctrl gombbal működnek. Ezt maga aszövegszerkesztő is tudatja velünk, de a Ctrl helyett egy „^” karaktert látunk mindig. A mentéspé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

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. Akijelölt szöveg kivágásával, vagy másolásával. Ennek megfelelő billentyűkombinációt nyomunk.

Alt + 6 Kijelölés kezdeteCtrl + K KivágásCtrl + U Beillesztés

A másolás tulajdonképpen úgy néz ki, hogy Ctrl + U billentyűkombinációt kétszer használjuk. Előszörhelyben, ahonnan kivágja, majd a kívánt másolási helyre viszem a kurzort és ott is Ctrl + U.

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

Merevlink

Amikor létrehozunk egy állományt a merevlemezen lefoglalunk számára egy szektort. Ugyanakkorlétrejön egy bejegyezés, amelyet inode néven említjük. Az inode nevű egységben van leírva a fájlidőbélyege, mérete, tulajdonosa, csoportja, jogok, stb. Az inodeban van feljegyezve, hogy holhelyezkedik el a merevlemezen a lefoglalt szektor, ezt a bejegyzést hívhatjuk tulajdonképpen linknek.A fájl létrehozásakor tehát egy linket hozunk létre, mégpedig merevlinket. Ilyen merevlinket többetlétrehozhatunk egy fájlra. Ennek módja a következő:

ln fajlnev linkfajlra

Page 26: Linux Parancssor

Last update: 2015/12/08 20:38 oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor

http://szit.hu/ Printed on 2015/12/08 21:23

Ha már két merevlink 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ésecsak ekkor történhet meg.

Az ls -l parancs kimenete megmutatja hány darab szimbolikus link mutat egy fájlra.

Szimbolikus link

A szimbolikus link nem valódi link, ezért is nevezzük szimbolikusnak. Ha van egy állomány amelyrecsak egyetlen merevlink mutat és egy szimbolikus link, amikor törlöm a merevlinket a fájl törlődni fog.A szimbolikus link ez után megmarad, de nem mutat majd sehova.

Szimbolikus link létrehozása

ln -s fajlnev linkfajlra

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: Blocks: IO Block: 4096 szabályos üres fájlDevice: 802h/2050d Inode: 1461005 Links: 1Access: (0644/-rw-r--r--) Uid: ( 1000/ andras) Gid: ( 1000/ andras)Access: 2012-01-15 23:00:17.365731988 +0100Modify: 2011-08-09 22:35:50.584228887 +0200Change: 2011-08-09 22:35:50.584228887 +0200

File A fájl neve

Page 27: Linux Parancssor

2015/12/08 21:23 27/107 Linux parancssor

SzitWiki - http://szit.hu/

Size A fájl méreteBlocks 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ájlkönyvtárszimbolikus linkfoglalatspeciális karakterfájlspeciá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ájlrendszerbenLinks Linkek száma a fájlraAccess Hozzáférés szám és karakterformában.Uid TulajdonosGid CsoportAccess Utolsó fájlolvasási időpontModify A fájl tartalmának utolsó változásaChange 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/ext3Block size: 4096 Fundamental block size: 4096Blocks: Total: 9612076 Free: 4608081 Available: 4119806Inodes: 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. Actime 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éretalatt:

stat --format=%B fajlnev

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 dualapértelmezésként a lemezen elfoglalt helyet mutatja meg blokkméretben. 1 blokkot 1 kibibájt-nak

Page 28: Linux Parancssor

Last update: 2015/12/08 20:38 oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor

http://szit.hu/ Printed on 2015/12/08 21:23

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 --byteskapcsoló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 kilóbájt (4 * 1024 bájt). Ennyi helyet foglal a lemezen. A du parancs tehátalapértelmezésben 1024-es blokkokkal számol.

Ha be van állítva a POSIXLY_CORRECT környezeti változó, akkor 512 bájtos blokkokkal kellszámolnunk. Állítsuk be a változót és nézzük meg újra a parancs kimenetét:

set -o posixdu lorem.txt

A kimenet:

8 lorem.txt

A kimenetben most 8 blokk, vagyis 8 daraba 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

Page 29: Linux Parancssor

2015/12/08 21:23 29/107 Linux parancssor

SzitWiki - http://szit.hu/

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. Astat 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

Esetleg adjunk hozzá még két bájtot:

echo a >> teszt.txt

Fájlnevek

A fájlnevek tartalmazhatnak ékezetes fájlneveket, számokat, alulvonást, kötőjelet, pontot, stb.

Maximális hosszuk: 256 bájt

Vegyük észre, hogy a 256 a karakterek száma helyett a szükséges bájtokat tartalmazza. A magyarékezetes betűk például 2 bájtosak.

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 afájl neve.

Harmadik verzió:

egrep -R "Nagy József" /útvonal/könyvtár

A find és grep parancsról később részletesen is szó esik.

A locate parancs:

Page 30: Linux Parancssor

Last update: 2015/12/08 20:38 oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor

http://szit.hu/ Printed on 2015/12/08 21:23

locate minta

Létezik egy /var/lib/mlocate/mlocate.db nevű adatbázis, amely segít megtalálni állományokat. Azadatbázis a következő paranccsal frissíthető:

updatedb

Gyakorlat

Milyen fájlszerkesztő parancsok vannak?Milyen paranccsal hozhatunk létre egy új üres állományt?Milyen paranccsal törölhetek egy állományt?Milyen paranccsal nevezhetek át egy állományt? Írjon példát.Milyen paranccsal mozgathatok egy saját könyvtáramból egy alkönyvtárba egy fájlt. Írjonpéldát.

Billentyűzet használat

Fogalmak

Terminal

Egy billentyűzet és egy monitor, amely egy számítógéphez kapcsolódik.

Eredetileg a nagygépes Unix rendszerekhez több terminál is csatlakozott. Esetleg egy PC-t is lehetettterminálként használni. A Linuxot ma leggyakrabban nem nagygépre, hanem egy PC-re telepítjük. APC-hez pedig egyetlen monitor és billentyűzet kapcsolódik alapesetben. Mi ezt tekintjük mostterminálnak. A Linux lehetővé teszi, hogy több felületen is belépjünk, mintha több terminálunk lenne.Ezek nem valódi terminálok, így a linuxos terminálokat „virtuális terminálként” szoktuk említeni.

Host

A nagyszámítógép, amelyhez a terminálok kapcsolódnak. Host számítógép alatt mi most PC-t fogjukérteni, amelyen dolgozunk.

Teletype ASR33

Az első Unix terminálok, amelyek egy billentyűzetből és egy nyomtatóból álltak. Rövidítve TTY. EgyLinuxos rendszeren parancssoros felületen 6 helyen léphetünk be. Ezeket teletype névvel illetjük azASR33 teletype után. Szokás még terminál néven is említeni.

Page 31: Linux Parancssor

2015/12/08 21:23 31/107 Linux parancssor

SzitWiki - http://szit.hu/

Parancsok

Terminál nevének kiíratása:

tty

Terminál paramétereinek beállítása:

stty

Paraméter nélkül kiírja a Linux milyen beállításokkal használja a terminált.

Több információt nyerhetünk a ”-a” kapcsolóval:

stty -a

A kisbetűk nagybetűvé alakítása:

stty olcuc

A kisbetűk nagybetűvé alakításának kikapcsolása:

stty -olcuc

További információkért lásd a man stty parancsot.

Milyen terminált használunk:

echo $TERM

Billentyűzetkódok

showkey

Gyakorlat

Honnan ered a terminál elnevezés?Mit jelent a host?Írjon egy Teletype típust.Milyen paranccsal írathatjuk ki a terminálunk nevét?Milyen paranccsal állathatjuk be a terminálunkat?Milyen paranccsal állatja be, hogy minden beírt betű nagybetűs legyen?Melyik környezeti változó tartalmazza a terminálunk nevét?

Page 32: Linux Parancssor

Last update: 2015/12/08 20:38 oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor

http://szit.hu/ Printed on 2015/12/08 21:23

Parancsok megtalálása

A parancsokról

Jó néhány parancsot megismertünk, de általában szeretnénk a parancsokról többet megtudni. Esetlegazt is szeretnénk tudni, hogy a parancsokat megvalósító programok valójában hol találhatók. Esetlegszükségünk van egy parancsra de azt sem tudjuk hol, milyen néven keressük. A következő fejezetezeket a problémákat járja végig.

Külső és belső parancsok

Alapvetően kétféle parancs van. Ezek:

belsőkülső

A parancsokat a parancsértelmező fogadja. A parancsértelmező először megnézi, hogy a kiadottparancsot ő maga fogja-e végrehajtani. Ha nem ismeri, akkor egy külső programot keres, amelyetfuttat.

Belső parancsok

A belső parancsok gyűjteményérő a „help” parancs tájékoztat minket.

A help valójában egy belső parancs amit Bash értelmez.

Keresünk egy parancsot

Valamihez szeretnék parancsot találni. Például könyvtárkezeléshez keresek egy parancsot. Hatelepített rendszer magyar, akkor kereshetek magyar szavakra is. A parancsok kereséséhez egyiklehetséges program az apropos. Használata a könyvtárkezeléssel kapcsolatos parancsok kereséseesetén például:

apropos könyvtár

A program kiírja azoknak a programoknak a neveit amelyeknek a leírása tartalmazza a könyvtár szót.

apropos könyvtárbasename (1) - levágja a könyvtárat és a végződést a fájlneve...chroot (1) - parancs futtatása eltérő gyökérkönyvtárralchroot (8) - megváltoztatja a gyökérkönyvtárat és végrehajt ...cp (1) - fájlok és könyvtárak másolásafind (1) - fájlokat keres egy könyvtárstruktúrábanldd (1) - kiírja a program által használt megosztott könyvt...ls (1) - könyvtárak tartalmának listázása

Page 33: Linux Parancssor

2015/12/08 21:23 33/107 Linux parancssor

SzitWiki - http://szit.hu/

mkdir (1) - könyvtár létrehozásapwd (1) - kiírja az aktuális (munka-) könyvtáratrmdir (1) - törli az üres könyvtárakatwhois (1) - Internet user név könyvtár szolgáltatás

Persze nem kapjuk meg azoknak a parancsoknak a nevét amelyeknek a leírása nem lett magyarrafordítva. Ezért az angol nyelven érdemes rákeresni a könyvtár szóra:

apropos directory

Figyeljük meg, hogy a leírásból egy rövid kivonatot is közöl a parancsról, ami leírja mire való a prancs.

$ apropos directoryalphasort (3) - scan a directory for matching entriesbasename (1) - strip directory and suffix from filenamesbf_compact (1) - shell script to compact a bogofilter directorybf_compact-bdb (1) - shell script to compact a bogofilter directorybf_copy (1) - shell script to copy a bogofilter working directorybf_copy-bdb (1) - shell script to copy a bogofilter working directorybf_tar (1) - shell script to write a tar file of a bogofilterdirec...bf_tar-bdb (1) - shell script to write a tar file of a bogofilterdirec...bindtextdomain (3) - set directory containing message catalogschdir (2) - change working directorychroot (2) - change root directorychroot (8) - run command or interactive shell with special rootdir...closedir (3) - close a directorydbus-cleanup-sockets (1) - clean up leftover sockets in a directorydepmod.conf (5) - Configuration file/directory for depmoddesktop-file-install (8) - install a desktop file to the applicationsdirectorydh_installdeb (1) - install files into the DEBIAN directorydh_testdir (1) - test directory before building debian packagedir (1) - list directory contentsdirfd (3) - get directory stream file descriptordirsplit (1) - splits directory into multiple with equal size

...

pwd (1) - print name of current/working directorypwdx (1) - report current working directory of a processreaddir (2) - read directory entryreaddir (3) - read a directoryreaddir_r (3) - read a directoryreadlinkat (2) - read value of a symbolic link relative to a directory...remove (3) - remove a file or directoryrenameat (2) - rename a file relative to directory file descriptorsrewinddir (3) - reset directory stream

Page 34: Linux Parancssor

Last update: 2015/12/08 20:38 oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor

http://szit.hu/ Printed on 2015/12/08 21:23

rmdir (2) - delete a directory...

A válasz most egész hosszúra sikeredett, így csak egy kivonatot másoltam ide.

Valamelyik parancs felkeltette az érdeklődésünket és többet szeretnénk róla tudni. Erre való a „man”parancs. A „man” a manual szóból van, vagyis kézikönyv. Minden parancsnak általában vankézikönyve, amely leírja annak használatát és persze mindent amit a program dokumentálója jónaklátott. A listából például kiválasztjuk a ls parancsot, mert a könyvtárak tartalmának listázásáról többetszeretnénk tudni. A következő parancsot használhatjuk:

man ls

Ha elindítottuk a „man ls” parancsot a következő problémánk lehet, hogyan lépünk ki a kézikönyvből?Ehhez a „Q” billentyűt kell mindössze megnyomni és a kilépés megtörténik.

Ha tudjuk egy parancsnak a nevét, és egy rövid leírást szeretnék mire is jó, akkor használhatjuk awhatis parancsot:

whatis ls

A parancsnak érdemes kipróbálni help paraméterét is:

ls --help

Néhány parancsnak több karakterből álló paramétere csak egy kötőjellel van bevezetve: -help. De azis lehet, hogy csak egy karakter kell: -h Ez mindig az adott program írójától függ. A szabvány szerinttöbb karakteres opciókat mindig két kötőjellel vezetjük, az egy karaktereseket egy kötőjellel.

Hol található maga a program?

Előfordulhat, hogy szeretnénk tudni hol található egy program. Például egy scriptet akarunk írni,amelyben az egész útvonalat szeretnénk felvenni. Nekiállhatnánk keresni is, de van egy parancsamelyik megmondja hol van:

which ls

A which parancsot pontosan erre a célra találták ki. A kimenet általában ez:

/bin/ls

Próbáljuk meg más parancsokkal is.

Kézikönyvek

Fentebb már láttuk, hogy a programok rövid leírását a whatis parancs megadja, a bővebb leírástpedig a „man”. Ne felejtsük el, hogyan léphetünk ki a man parancs környezetéből. Ezt a „q” billentyűlenyomásával tehetjük meg.

Page 35: Linux Parancssor

2015/12/08 21:23 35/107 Linux parancssor

SzitWiki - http://szit.hu/

man ls

Fejezetek

A kézikönyv, angolul manual, innen a parancs röviden: man. A kézikönyvek 9 fejezetre oszthatók.Ezek:

Futtatható programok vagy shell parancsok1.Rendszerhívások (a kernel függvényei)2.Osztott könyvtári függvények3.Speciális fájlok (rendszerint /dev)4.Fájlformátumok, konverziók (pl. /etc/passwd)5.Jétékok6.Egyéb (makrócsomagok, man(7), groff(7)7.Rendszer-adminisztrátori parancsok (a root felhasználó számára)8.Kernel rutinok9.

A kézikönyvek részei

Egy kézikönyv a következő részekre tagolható:

NAME - rövid leírásSYNOPSIS - szintaktikai leírásCONFIGURATION - beállításokDESCRIPTION - leírásOPTIONS - kapcsolókEXIT STATUS - kilépési kódokRETURN VALUE - visszatérési értékERRORS - hibákENVIRONMENT - környezetFILES - fájlokVERSIONS - verziókCONFORMING TO - egyezésekNOTES - megjegyzésekBUGS - a program hibáiEXAMPLE - példákAUTHORS - tulajdonosSEE ALSO - „lásd még”

Példák

Nézzünk néhány példát: A ps parancs:

man ps

A chmod parancs:

Page 36: Linux Parancssor

Last update: 2015/12/08 20:38 oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor

http://szit.hu/ Printed on 2015/12/08 21:23

man chmod

A chown parancs:

man chown

Más nyelvek

Előfordulhat, hogy szeretnénk egy parancs eredeti angol nyelvű verzióját megnézni, mert a magyarnyelvűben nem találjuk a keresett információt (ez előfordulhat, ha például a magyarítást nemfrissítették az adott programnál). A Debian GNU/Linux 6.x-es rendszerben például a magyar pskézikönyv nem tartalmazza a <, N, L, s, l, + státuszok leírását. Az angol nyelvű verzióban azonbanmegtaláljuk. A nyelv beállításhoz használjuk a -L kapcsolót:

man -L en ps

A nyelvet az ISO-639 szabvány szerint kell beírni.

Gyakorlat

Hogyan tudom megnézni a „cd” belső parancshoz tartozó segítő leírást?Hogyan tudom megnézni a crontabhoz tartozó nyolcas kézikönyvfejezetet?Milyen fejezetekből állhat egy kézikönyv?Milyen paranccsal tudom megnézni, hogy a firefox parancs hol található a fájlrendszerben?Milyen paranccsal kereshetek parancsokat?

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 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áromparamétere van.

Page 37: Linux Parancssor

2015/12/08 21:23 37/107 Linux parancssor

SzitWiki - http://szit.hu/

Az argumentumokat kapcsolókra és paraméterekre osztjuk fel.

Parancssorparancsnév argumentumokparancsné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őjelvan, átláthatóbb egy hosszú parancssor. Ha hosszú formát használjuk olvashatóbb. Hogy egy-egyparancs 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é. Asorrend 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öttezekből egy vagy több is szerepelhet:

Page 38: Linux Parancssor

Last update: 2015/12/08 20:38 oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor

http://szit.hu/ Printed on 2015/12/08 21:23

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

Gyakorlat

Mi az opció?Mi a paraméter?Mutasson példát az opciók felcserélhetőségére.Mi a WhiteSpace?Hány WhiteSpace szerepelhet egy parancs neve után?

Átirányítások

Alapfogalmak

stdin

A stdin tulajdonképpen a billentyűzet.

stdout

Az stdout a képernyő.

stderr

Az stderr szintén a képernyő.

cat parancs

A cat parancs egy olyan parancs, amely billentyűzetről olvas, és stdout-ra ír.

Átirányítás fájlba vagy fájlból

Az alapértelmezett kimenet átirányítása

Most a billentyűzetről fogunk olvasni, a kimenet az stdout helyett viszont egy állomány lesz. Azátirányítást a nagyobb-mint (>) karakterrel fogjuk megvalósítani.

Page 39: Linux Parancssor

2015/12/08 21:23 39/107 Linux parancssor

SzitWiki - http://szit.hu/

A gyumolcs.txt fájl tartalmát a képernyő helyett a gyumolcs2.txt fájlba irányítom:

cat > gyumolcs.txtszilvabarackkörtealma<Ctrl>+<D>

A bevitelt a <Ctrl>+<D> billentyűkombinációval szakítjuk meg, amellyel tulajdonképpen „fájlvégejelet” küldünk a rendszernek.

Bármely program, ha a stdout-ra (képernyőre) ír annak kimenetét átirányíthatjuk fájlba.

Az alapértelmezett hibakimenet átirányítása

Néhány program a normál üzenetek mellett hibaüzeneteket is a képernyőre íródnak. Ezek ahibaüzenetek nem kerülnek fájlba az előbbi átirányítás esetén: A hibaüzenetek átirányítását ismegoldhatjuk azonban:

Tegyük fel, hogy nem létezik az aktuális könyvtárban nincs „aaaa” nevű könyvtár és fájl sem, amikorkiadjuk a következő parancsot:

ls aaaa

Az eredmény a képernyőre íródik.

ls: aaaa nem érhető el: Nincs ilyen fájl vagy könyvtár

Ha ezt megpróbáljuk fájlba irányítani a fenti módon nem járunk sikerrel, mivel ez az az üzenet astdout helyett a stderr-re íródik. Persze alapértelmezetten az is képernyő. Az alapértelmezett kimenetszáma a „2”. Meg kell mondanunk, hogy a 2-es számú kimenet szeretnénk fájlba irányítani:

ls aaaa 2> a.txt

Ezek után a képernyőre nem ír semmit a parancs. Az a.txt fájlban viszont:

ls: aaaa nem érhető el: Nincs ilyen fájl vagy könyvtár

A bemenet átirányítása

A gyumolcs.txt fájl tartalmát a képernyőre írom:

cat < gyumolcs.txt

A cat bemenete alapértelmezetten a billentyűzet. Mi most azt mondtuk, hogy ez egy fájl legyen.

Page 40: Linux Parancssor

Last update: 2015/12/08 20:38 oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor

http://szit.hu/ Printed on 2015/12/08 21:23

A bemenet és kimenet együttes átirányítása

Az adatokat a gyumolcs.txt fájlból vesszük. A gyumolcs.txt fájl tartalmát a képernyő helyett agyumolcs2.txt fájlba irányítom:

cat < gyumolcs.txt > gyumolcs2.txt

Ha a fájl nemlétezik akkor létrehozza. Ha létezik felülírja.

Hozzáfűzés

A kimenet átirányítását a nagyobb-mint (>) karakterrel végeztük. Ez mint láttuk felülírja a létező fájlt.Néha azonban ezt szeretnénk elkerülni, és szeretnénk a már meglévő fájl végéhez fűzni. Ezt kettődarab nagyobb-mint jel egymásután írásával érjük el:

echo "banán" >> gyumolcs.txt

A fenti parancs a gyumolcs.txt fájl végéhez fűzi a „banán” szöveget.

Az stdout és az stderr együttes átirányítása

Néha szeretnénk a hibaüzeneteket és a normál üzeneteket is fájlba irányítani. Az alábbi programnormál és hibaüzeneteket is generál.

program > kimenet 2>&1

vagy:

program &> kimenet.txt

A kimenet stdout és az stderr képernyőre és fájlba írása, példa:

dir letezofaj.txt nemletezofajl.txt 2>&1 | tee kimenetifajl.txt

A „tee” parancs egyszerre ír fájlba és a képernyőre.

A parancs után a képernyőn és a kimenetifajl.txt állományban is:

dir: nemletezofajl.txt nem érhető el: Nincs ilyen fájl vagy könyvtárletezofajl.txt

A stderr és stdout háttere

Az alapértelmezett kimenet és az alapértelmezett hibakimenet szétválasztása a programozásnálkezdődik. A megértéshez vegyünk egy egyszerű C programot, amely a képernyőre ír. Képernyőre írpéldául a printf() függvény:

Page 41: Linux Parancssor

2015/12/08 21:23 41/107 Linux parancssor

SzitWiki - http://szit.hu/

printf("Egy\n");

Ugyanezt csinálja a következő utasítás is:

fprintf(stdout, "Egy\n");

Csak itt meg kellett adni, hogy az alapértelmezett kimenet nevét: stdout.

A következő utasítás azt mondja, hogy írjunk az alapértelmezett hibakimenetre:

fprintf(stderr,"Három\n");

A programozó tehát néha azt mondhatja, hogy írjunk a képernyőre, de legyen megkülönböztetve apéldában a „Három” szó kiíratása, mert az a hibakimenetre megy. A „\n” az sortörés.

Lássunk egy komplett programot:

main.c

#include <stdio.h>main(){ printf("Egy\n"); fprintf(stdout, "Kettő\n"); fprintf(stderr, "Három\n");}

A programban a „Egy” és „Kettő” szavak az alapértelmezett kimenetre mennek. Az alapértelmezettkimenet száma 1. A „Három” szó viszont a már a hibakimenetre megy, melynek száma 2.

Ha gépünkön telepítve van a gcc fordító, akkor fordítsuk le a programot:

gcc -o main main.c

Elkészül egy main nevű állomány. Ha futtatjuk:

./main

a képernyőre íródik mind a három szám:

EgyKettőHárom

Most használjuk az átirányítást. Irányítsuk fájlba az alapértelmezett kimenetet:

./main > naplo.txt

vagy:

Page 42: Linux Parancssor

Last update: 2015/12/08 20:38 oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor

http://szit.hu/ Printed on 2015/12/08 21:23

./main 1> naplo.txt

Ekkor a „Három szót a képernyőre íjra a program, az „Egy” és a „Kettő” viszont a naplo.txt nevűállományba kerül.

Most irányítsuk az alapértelmezett hibakimenetet a állományba:

./main 2> naplo.txt

Most a képernyőre íródik az „Egy” és a „Kettő” szó, a „Három” pedig állományba.

Ha pedig mind két kimenetet állományba szeretném irányítani, akkor:

./main &> naplo.txt

Ekkor mind a három szó fájlba kerül.

Láthatjuk, hogy a stdout és stderr technika lehetővé teszi, hogy elválasszuk egy program normálüzeneteit a hibaüzenetektől, ami céljainktól függően néha nagyon jól jöhet.

Átirányítás program számára

A következőkben a szintén átirányítást fogunk használni, azonban most egy másik program számáraadjuk át a kimenetet. Ezt a pipe (|) karakter segítségével valósítjuk meg.

cat gyumolcs.txt | sort

Többszörös átirányítás

Létrehozunk egy állományt.

cat > gyumolcs3.txtkörteszilvabarackalmaszilva<Ctrl>+<D>

Az állomány tartalmaz néhány ismétlődést. Ezt kezelni tudjuk az uniq paranccsal. Az uniq parancsazonban csak rendezett állománnyal képes dolgozni. Először tehát rendeznünk kell a tartalmat.

cat gyumolcs3.txt | sort | uniq

Esetleg ha szeretnénk megszámoltatni a sorok számát is, akkor:

cat gyumolcs3.txt | sort | uniq | wc -l

Az egésznek az eredményét pedig ugyancsak fájlba irányíthatjuk:

Page 43: Linux Parancssor

2015/12/08 21:23 43/107 Linux parancssor

SzitWiki - http://szit.hu/

cat gyumolcs3.txt | sort | uniq | wc -l > gyumolcsszam.txt

Gyakorlat

Mi a stdin?Mi a stdout?Mire használjuk a ”<„ karaktert?Mire használjuk a ”>„ karaktert?Mire használjuk a „|” karaktert?Írassuk a ki a belépett felhasználók neveit, a kimenetet a users.txt fájlba irányítva.

Útvonal

Az útvonalról

Egy parancsot úgy tudunk végrehajtani, ha tudjuk melyik könyvtárban van, akkor beírjuk az útvonalátés egy <Enter>-t nyomunk. Például gcc paranccsal szeretnénk egy programot lefordítani, akkor eztírhatjuk:

/usr/bin/gcc -o main main.c

Ehhez tudnunk kell, hogy a gcc parancs az /usr/bin könyvtárban van. Szerencsére nem kell ezt nekünkmegjegyezni. A rendszer biztosít számunkra egy PATH nevű környezeti változót. Ha ez tartalmazza az/usr/bin karaktersorozatot akkor a gcc parancs kiadásánál a parancsértelmező megnézi, hogy van-eaz /usr/bin/ könyvtárban gcc parancs. Ha van akkor végrehajtja. Persze a PATH változóban egyszerretöbb útvonal is megadható, egymástól kettősponttal elválasztva. Felhasználóként az útvonal nekempéldául így néz ki:

/home/andras/bin:/usr/local/bin:/usr/bin:/bin:/usr/games

Ezt le tudjuk kérdezni például az „echo” paranccsal, mint azt már fentebb tettük a PS1 környezetiváltozóval:

echo $PATH

Próbáljuk ki a parancsot. A parancsértelmező ezekben a könyvtárakban keresi az általunk kiadottparancsot. Ha a parancs útvonala nincs a PATH változóban, akkor kénytelen vagyunk beírni azútvonalat. Ilyen parancs lehet például az ifconfig, amely a hálózati kártyák beállítását kérdezi le. Azifconfig parancs a /sbin könyvtárban van, ami az átlag felhasználónak nincs útvonalban. Igaz afelhasználó nem végezhet vele beállításokat, de a kártya beállításait lekérdezheti. Ehhez viszont megkell adnia a teljes elérési utat:

/sbin/ifconfig

Felmerülhet a kérdés, mi van akkor ha egy parancs több könyvtárban is szerepel, amelyik útvonalbanvan. Ekkor az a parancs hajtódik végre, amelyik a PATH változóban hamarabb szerepel. Ha a másikparancsot szeretnénk, akkor meg kell adjuk a teljes elérési utat.

Page 44: Linux Parancssor

Last update: 2015/12/08 20:38 oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor

http://szit.hu/ Printed on 2015/12/08 21:23

Útvonal beállítása

Parancssor beállítása általánosságban:

export PATH=$PATH:/új/útvonal

A példa kedvéért a joska nevű felhasználó szeretné beállítani a saját könyvtárában (/home/joska) lévő„programok” nevű könyvtárat útvonalba. Ekkor parancssorban kiadjuk a következő parancsot:

export PATH=$PATH:/home/joska/programok

Ezek után a /home/joska/programok nevű mappában lévő program futtathatók bárhonnan.

Ez az útvonal így csak az aktuális konzolon lesz elérhető. Ha kilépünk, akkor már nem. Ha szeretnénkújra- belepés, indítás után is elérni akkor be kell másolnunk például a /home/joska/.bashrc fájl utolsósorába. Ez után a következő belépés után az útvonalnak élnie kell. A .bashrc fájlt szerkeszthejtük így:

mcedit /home/joska/.bashrc

Vagy ha éppen a /home/joska könyvtárban állunk akkor csak röviden:

mcedit .bashrc

Parancssorból egyetlen paranccsal is megoldhatjuk a fájl végére írást:

echo "export PATH=$PATH:/home/joska/programok" >> /home/joska/.bashrc

Ha ezt használjuk, akkor vigyázzunk a kettő darab nagyobb-mint jelre. Ha csak egyet írunk, akkorfelülírjuk az egész .bashrc fájlt. Ha biztosra akarunk menni akkor előbb készítsünk róla biztonságimásolatot:

cp /home/joska/.bashrc /home/joska/.bashrc_mentes

Gyakorlat

Az operációs rendszer hol tárolja a parancsok útvonalait?Hogyan tudjuk megtekinteni az aktuális útvonalakat?Milyen paranccsal állítom be az útvonalat?Állítsuk be saját könyvtárunkban létrehozott prg nevű könyvtárban is keresse aparancsértelmező a parancsokat.

Környezet

A környezetről

Belépés után egy a rendszer egy környezetet biztosít számunkra. Biztosít egy parancsértelmezőt, a

Page 45: Linux Parancssor

2015/12/08 21:23 45/107 Linux parancssor

SzitWiki - http://szit.hu/

rendszerről változókban tárol számunkra információkat, de magunk is tárolhatunk információkat sajátváltozókban. Biztosít számunkra egy saját könyvtárat

A rendszer felhasználói alapértelmezésként a /home könyvtárban vannak.

Biztosít számunkra néhány alapértelmezésként meglévő fájlt. Ezek rendre:

.bashrc

.profile

Környezeti változók

A rendelkezésre álló változókat „környezeti változóknak” hívjuk. A változók neveinek és értékeinekkiíratása a következő paranccsal történhet:

set

A kimenet ehhez hasonló lehet, a teljesség igénye nélkül:

BASH=/bin/bashBASHOPTS=checkwinsize:cmdhist:expand_aliases:extglob:extquote:force_fignore:histappend:interactive_comments:progcomp:promptvars:sourcepathBASH_ALIASES=()BASH_ARGC=()BASH_ARGV=()BASH_CMDS=()BASH_COMPLETION_COMPAT_DIR=/etc/bash_completion.dBASH_LINENO=()BASH_SOURCE=()BASH_VERSINFO=([0]="4" [1]="2" [2]="45" [3]="1" [4]="release" [5]="i686-pc-linux-gnu")BASH_VERSION='4.2.45(1)-release'COLORTERM=mate-terminalCOLUMNS=80DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-BIZkKgmiL9,guid=d390d6b4250fc89be357def452828ff8DBUS_STARTER_ADDRESS=unix:abstract=/tmp/dbus-BIZkKgmiL9,guid=d390d6b4250fc89be357def452828ff8DBUS_STARTER_BUS_TYPE=sessionDEFAULTS_PATH=/usr/share/gconf/default.default.pathDESKTOP_SESSION=defaultDIRSTACK=()DISPLAY=:0EUID=1000GPG_AGENT_INFO=/tmp/keyring-kt96rN/gpg:0:1GROUPS=()HISTCONTROL=ignorebothHISTFILE=/home/andras/.bash_historyHISTFILESIZE=2000HISTSIZE=1000

Page 46: Linux Parancssor

Last update: 2015/12/08 20:38 oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor

http://szit.hu/ Printed on 2015/12/08 21:23

HOME=/home/andrasHOSTNAME=meteorHOSTTYPE=i686IFS=$' \t\n'IM_CONFIG_PHASE=1LANG=hu_HU.UTF-8LIBGL_DRIVERS_PATH=/usr/lib/fglrx/dri:/usr/lib/i386-linux-gnu/dri:/usr/lib/driLINES=24LOGNAME=andras

...MACHTYPE=i686-pc-linux-gnuMAILCHECK=60MANDATORY_PATH=/usr/share/gconf/default.mandatory.pathMATE_DESKTOP_SESSION_ID=this-is-deprecatedMATE_KEYRING_CONTROL=/tmp/keyring-kt96rNMDMSESSION=defaultMDM_LANG=hu_HU.UTF-8MDM_XSERVER_LOCATION=localOPTERR=1OPTIND=1OSTYPE=linux-gnuPATH=/home/andras/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/gamesPIPESTATUS=([0]="0")PPID=4056PS1='\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$ 'PS2='> 'PS4='+ 'PWD=/home/andrasSESSION_MANAGER=local/meteor:@/tmp/.ICE-unix/2711,unix/meteor:/tmp/.ICE-unix/2711SHELL=/bin/bashSHELLOPTS=braceexpand:emacs:hashall:histexpand:history:interactive-comments:monitorSHLVL=1SSH_AGENT_PID=2796SSH_AUTH_SOCK=/tmp/keyring-kt96rN/sshTERM=xtermTEXTDOMAIN=im-configTEXTDOMAINDIR=/usr/share/locale/UID=1000USER=andrasUSERNAME=andrasWINDOWID=75507613WINDOWPATH=8XAUTHORITY=/home/andras/.XauthorityXDG_CONFIG_DIRS=/etc/xdg/xdg-default:/etc/xdg

...

Page 47: Linux Parancssor

2015/12/08 21:23 47/107 Linux parancssor

SzitWiki - http://szit.hu/

A history

A könyvtárunkban az első használat során létrejön egy állomány:

.bash_history

Ebben tárolódnak a használt parancsaink.

Parancssorban a le és fel billentyűkkel lapozhatjuk az eddig használt parancsokat.

Keresésre is lehetőség van. Ez akkor hasznos, ha már régen használtuk a parancsot, de nemszeretnénk végig beírni. Legyen a régen használt parancs például:

ssh -i ~/.ssh/janos_zold_rsa [email protected]

A kereséshez elsőként nyomjuk meg a <Ctrl> + <R> billentyűt. Ekkor a következő várakozási jeljelenik meg:

(reverse-i-search)`':

Írjuk be: ssh -i Írás közben a keresési eredmények rögtön megjelennek. Ha azt a parancsot látjuk,amelyet szeretnénk alkalmazni, csak nyomjuk meg a <Tab> billentyűt. A parancs ezek után várja,hogy az <Enter> billentyűvel végrehajtsuk.

A használt parancsokat a history nevű paranccsal is megjeleníthetjük. Egy idő után olyan sok parancsvan, hogy túl fut a képernyőn. A more vagy a less szűrővel, tördelhetjük a képernyőt:

history | less

Gyakorlat

Mi a környezeti változó?Mire való a set parancs?

Archiválás

Az archiválás nem egyenlő a tömörítéssel. Az archiválás azt jelenti több könyvtárat és/vagy fájltegyetlen fájlba mozgatunk, vagyis egyetlen fájlként szeretnénk kezelni. Erre a tar parancshasználható.

Archiválás

A konyvtar nevű könyvtár és tartalmát szeretnénk az fajlnev.tar állományba elhelyezni. A következőparancsot használhatjuk:

tar -cf fajlnev.tar konyvtar

Page 48: Linux Parancssor

Last update: 2015/12/08 20:38 oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor

http://szit.hu/ Printed on 2015/12/08 21:23

A -cf tulajdonképpen két kapcsoló, egy -c és egy -f, de azok összevonhatók. A -c create szóból, azarchív elkészítésre utal, a -f pedig a fájlra, vagyis utána adjuk meg a az archív fájl nevét.

Archív csomag kibontása

A -x kapcsolóval tudjuk kibontani, azaz eXtract:

tar -xf fajlnev.tar

Archiválás tömörítéssel

tar -czf archive.tar.gz konyvtar

A -c kapcsoló megmondja, hogy készíteni kell egy archivot.A -z megmondja, hogy archivot tömöríteni is kell.A -f után adjuk meg a kimeneti fájl nevét

A kimeneti fájl a példában a: archive.tar.gzA „konyvtar”, amit archiválni és tömöríteni kell.

A példában a -c, -z és -f kapcsolókat halmoztuk: -czf

Halmozás nélkül az eredeti parancs:

tar -c -z -f archive.tar.gz konyvtar

A tömörített archive kibontása:

tar -xf archive.tar

eXtract [UK: ɪkˈstrækt] [US: ɪkˈstrækt] kibont

Tömörített archive kibontása:

tar -xzf archive.tar.gz

Használt kapcsolók

-c, --create-f, --file fájlnév-z, --gzip, --ungzip-x, --extract, --get-t, --list-W, --verify

verify [UK: ˈverɪfaɪ] [US: ˈverəˌfaɪ] átvizsgál, bizonyít, ellenőriz

Page 49: Linux Parancssor

2015/12/08 21:23 49/107 Linux parancssor

SzitWiki - http://szit.hu/

Gyakorlat

Hogyan bontunk ki egy archivot?Hogyan bontjuk ki az tömörített archivot?

Tömörítés

A Linuxos tömörítő programokról

Linux alatt szinte minden tömörítő eljárás megvalósításra került. A következő lista a teljesség igényenélkül tartalmaz tömörítő programokat:

xzarcgzipbzip2pbzip2lrziplzipp7ziprzip (nagy fájlokhoz)ncompress (csomag; parancs: compress)

További parancsokért nézzük meg a gzip kézikönyvét:

man gzip

További csomagokért nézzünk szét a csomagok között:

apt-cache search compress

Tömörítés

Tar fájl tömörítése:

gzip fajlnev.tar

Eredmény:

fajlnev.tar.gz

Kibontás

gunzip fajlnev.tar.gz

Page 50: Linux Parancssor

Last update: 2015/12/08 20:38 oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor

http://szit.hu/ Printed on 2015/12/08 21:23

Eredmény:

fajlnev.tar

Az xz tömörítő

Mostanában népszerű a xz-utils csomagban található tömörítő program. Az LZMA2 algoritmusthasználja. Az xz tulajdonképpen a 7z lecsupaszított változatának is tekintik (A 7z bzip2, LZMA2 ésLZMA eljárásokat kombinálja).

Tömörítés:

xz fajlnev.tar

Kapunk egy fájlt fajlnev.tar.xz nevű fájlt.

Kibontás:

unxz fajlnev.tar.xz

Folyamatkezelés

A folyamatokról

A programról „program” néven beszélünk amíg az egy háttértárolón van. Ha elindítottuk a programot,akkor bekerül a memóriába, ekkor folyamatról beszélünk. A folyamat tehát egy futó program amemóriában, másként végrehajtás alatt lévő program. Angolul task vagy process néven találkozunkvele. Az átlagfelhasználó persze nem szokta ezeket neveket használni, egyszerűen csak programkéntbeszél róla.

A folyamatok újabb folyamatokat indíthatnak. Amikor elindítunk egy parancsot, azt eleve egyparancsértelmező programban tesszük. A parancsértelmezőből indított folyamat szülője maga aparancsértelmező. Valójában minden folyamat visszavezethető a hierarchiában egy közösősfolyamatra, ennek neve: „init”.

Folyamatok előállítása

A folyamat előállítása, tulajdonképpen egy program futtatása. Két eset lehetséges, a rendszer vagytudja hol van az elindítani kívánt program, vagy mi magunk mondjuk meg hol találhatók azok. Akövetkező lista azon könyvtárakat sorolja fel, ahol nagy valószínűséggel találunk indíthatóprogramokat:

/bin/sbin/usr/bin/usr/sbin

Page 51: Linux Parancssor

2015/12/08 21:23 51/107 Linux parancssor

SzitWiki - http://szit.hu/

Egyéb helyek:

/usr/games/usr/local/bin/usr/local/sbin

Szeretnénk például futtatni az ifconfig parancsot. Írjuk be:

/sbin/ifconfig

Vagy a dmesg parancs:

/bin/dmesg

Ha egy parancs útvonalban van, akkor nem kell megadnunk a teljes útvonalat. Elég az ifconfig, vagy admesg parancs kiadása.

Ha egy parancs az aktuális könyvtárban van, végigírhatjuk a teljes útvonalat, vagy a ”./„karakterpárossal jelzem, hogy helyben keresendő a parancs.

A felhasználóknak szokás a saját könyvtárukban egy „bin” nevű könyvtár létrehozása, amelybenelhelyezhetik saját programjaikat, scriptjeiket. A joska felhasználó például ide rakja saját programjait:

/home/joska/bin/

A folyamatok száma a rendszerben korlátozott. A maximálisan létrehozható folyamatok számaalapértelmezésben: 32768. A rendszeredben a maximális értéket így derítheted ki:

cat /proc/sys/kernel/pid_max

Egy felhasználó azonban nem hozhat létre 32768 számot. A felhasználói limit lekérdezése:

ulimit -u

Folyamatok listázása

A folyamatok vagy angolosan processzek a ps parancs segítségével listázhatók. Paraméter nélkülhasználva csak az aktuális terminálról indított folyamatokról informál minket:

ps

PID TTY TIME CMD8205 pts/2 00:00:00 bash8215 pts/2 00:00:00 ps

Indítsunk három folyamatot, amelyet rögtön a háttérbe is teszünk:

nano &mcedit &

Page 52: Linux Parancssor

Last update: 2015/12/08 20:38 oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor

http://szit.hu/ Printed on 2015/12/08 21:23

yes > /dev/null &

A folyamataink megtekintése:

ps

PID TTY TIME CMD 2975 pts/0 00:00:00 bash22403 pts/0 00:00:00 nano22407 pts/0 00:00:00 mcedit22409 pts/0 00:02:59 yes22411 pts/0 00:00:00 ps

Nézzük meg milyen állapotban vannak a háttérbe tett folyamatok (ps a):

...22403 pts/2 T 9:58 nano22407 pts/2 T 0:00 mcedit22409 pts/2 R 0:00 yes...

A harmadik oszlop mutatja a státuszokat.

Az R futó (runing), a T megállított (terminate, de lehet trace vagyis nyomkövetett. Láthatjuk, ahogy anano és az mcedit programokat háttérbe tettük, azok megállított állapotba kerültek. A yes parancsviszont futó állapotba került. A yes parancs csak az y karaktert írja a képernyőre szünet nélkül. Mipersze ezt a /dev/null-ba irányítottuk. Amikor az ”&„ karakterrel háttérbe tesszük a folyamat nem állmeg.

Megnézhetjük az össze folyamatot a ps ax paranccsal:

ps ax

A kapcsolókat nem vezettük be kötőjellel.

Ezek után ehhez hasonló kimenetet láthatunk (részlet másolata):

PID TTY STAT TIME COMMAND... 4244 ? S 0:01 /usr/sbin/apache2 -k start 4245 ? S 0:00 /usr/sbin/apache2 -k start... 8474 ? S 0:01 [kworker/1:2] 8509 ? R 0:01 [kworker/1:1] 8572 pts/2 R+ 0:00 ps ax

A PID oszlop tartalmazza a folyamatazonosítókat (process identity) az első oszlopban.

A TTY oszlop azt mutatja, hogy a folyamat TeleTYpe-hoz van-e kötve. A szolgáltatást nyújtó démonprogramok nincsenek.

Page 53: Linux Parancssor

2015/12/08 21:23 53/107 Linux parancssor

SzitWiki - http://szit.hu/

A STAT oszlop a folyamat állapotáról tájékoztat.

A TIME oszlop mutatja, hogy a processzor idejéből mennyit használ.

Az utolsó oszlopban (COMMAND) a futtatott parancs nevét látjuk kapcsolókkal együtt.

A -f kapcsoló a full szóból ered, használata teljes kiemenet ad:

ps ax -f

Az „f” alparancs viszont megmutatja a gyermek szülő kapcsolatokat:

ps axf

Például egy részlet:

1366 ? Ss 0:00 /usr/sbin/apache2 -k start 2522 ? S 0:00 \_ /usr/sbin/apache2 -k start 2523 ? S 0:00 \_ /usr/sbin/apache2 -k start 2524 ? S 0:00 \_ /usr/sbin/apache2 -k start 2525 ? S 0:00 \_ /usr/sbin/apache2 -k start 2526 ? S 0:00 \_ /usr/sbin/apache2 -k start

A folyamatot indító felhasználók mutatása:

ps axu

STAT mezőR futó (runing) vagy futáskész (runable)S alvó (sleeping) de megszakíthatóD nem megszakíthatóan alvó (uninterruptible sleep) rendszerint IOT megállított (job kontroll; stoped) vagy nyomkövetett (traced)Z zombi (zombie) megállított, de elvesztette a szülőjétW nincs rezidens lapja (érvénytelen a 2.6.xx kernelek ótaX halott (valószínűleg sosem látható)

A STAT mezőhöz járulékos jelzések adhatók a BSD szerinti formátumban. A man -L en pskézikönyvben találunk róla infot:

< magas prioritás (más felhasználó nem tudja felülírni)N alacsony prioritás (más felhasználó felülírhatjaL a lapok a memóriába vannak zárva (valós idő eléréséhez és IO tevékenységhezs vezető munkamenetl többszálas (CLONE_THREAD használata, az NPTL pthreads-hez hasonló tevékenység)+ folyamat csoport az előtérben

Néhány példa:

ps -f

Page 54: Linux Parancssor

Last update: 2015/12/08 20:38 oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor

http://szit.hu/ Printed on 2015/12/08 21:23

UID PID PPID C STIME TTY TIME CMDandras 22290 22151 0 07:32 pts/5 00:00:00 bashandras 23071 22290 0 11:40 pts/5 00:00:00 ps -f

UID felhasználó azonosítóPID folyamatazonosítóPPID szülőfolyamat azonosítójaC processzor kihasználtságSTIME indulási időTTY melyik teletájphoz van kötveTIME felhalmozott processzoridőCMD indító parancs

Felhasználói oszlopok

ps -o pid,stat,cmd PID STAT CMD 3823 Ss bash 4582 R+ ps -o pid,stat,cmd

Szülő folyamatok PID száma

A -ef kapcsolópárossal a folyamatok szüleinek PID-t is láthatjuk, ez a PPID.

Az oszlopok ekkor így néznek ki:

UID PID PPID C STIME TTY TIME CMDroot 1 0 0 10:24 ? 00:00:01 /sbin/initroot 2 0 0 10:24 ? 00:00:00 [kthreadd]root 3 2 0 10:24 ? 00:00:00 [ksoftirqd/0]root 4 2 0 10:24 ? 00:00:00 [kworker/0:0]root 5 2 0 10:24 ? 00:00:00 [kworker/0:0H]...

Folyamatok leállítása

Folyamat leállítása mindenképpen

kill -9 PIDSZÁM

A PIDSZÁMOT a „ps ax” parancs kimenetéből nézhetjük ki. Ha leállítandó program azonosítója 4852,akkor így állítjuk le:

kill -9 4852

A Linuxos rendszerben a folyamatok jelzésekkel kommunikálnak egymással. A használható jelzéseket

Page 55: Linux Parancssor

2015/12/08 21:23 55/107 Linux parancssor

SzitWiki - http://szit.hu/

kilistázhatod a következő paranccsal:

kill -l

További információkat olvashatsz a jelzésekről a man7 signal kézikönyvből.

Egy folyamat egyes jelzéseket figyelmen kívül hagyhat, másokat kötelezően figyelembe kell vennie.Egyes jelzéshez tartozik alapértelmezett művelet, egyesekhez nem.

Az alábbi táblázatban 31 jelzést látunk. Ezek az első Bell Laboratórium létrehozott Unixbólszármaznak. A POSIX szabvány alapján, további jelzésekkel egészült ki a jelzések listája, 34-től 64-ig.

man 7 signal kézikönyv alapján:

Jel Azonosító Tevékenység Leírás

HUP 1 Term A kontroll terminál megszűnt (A felhasználó kilépett)vagy démon esetén újra kell olvasni a konfigurációs fájlokat

INT 2 Term Megszakítás a billentyűzetről (Ctrl + C)QUIT 3 Core Kilépés a billentyűzetrőlILL 4 Core Illegális utasítás

ABRT 6 Core Abort signal from abort(3)FPE 8 Core Lebegőpontos kivételKILL 9 Term Semlegesítő jel

SEGV 11 Core Érvénytelen memóriahivatkozásPIPE 13 Term Eltört cső (pájp): írás vagy olvasás nem létező csőbe

ALRM 14 Term Időzítőjel az alarm(2)-tőlTERM 15 Term MegszakításjelUSR1 30,10,16 Term Felhasználó által definiált jelzés 1USR2 31,12,17 Term Felhasználó által definiált jelzés 2CHLD 20,17,18 Ign A gyermek leállt vagy megszakadtCONT 19,18,25 Cont Folytatás, ha meg lett állítvaSTOP 17,19,23 Stop A folyamat megállításaTSTP 18,20,24 Stop Megálljt gépeltek egy tty eszközönTTIN 21,21,26 Stop tty bevitel egy háttérfolyamat számáraTTOU 22,22,27 Stop tty kivitel egy háttérfolyamat számára

Termi - megállítja a folyamatotCore - megállítja a folyamatot, majd a kidumpolja a core adatokatStop - megállítja a folyamatotCont - folytatja a folyamatot, ha az meg volt állítvaIgn - elutasítja a folyamatot

A kill paranccsal lekérdezhetjük egy jelzés száma alapján a nevét. Például:

kill -l 1

Démon folyamat újraindítása:

killall -HUP pidszám

Page 56: Linux Parancssor

Last update: 2015/12/08 20:38 oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor

http://szit.hu/ Printed on 2015/12/08 21:23

Egy 0 számú szignállal azt is megvizsgálhatjuk, hogy egy folyamat fut vagy nem fut.

Olvasnivalók: man signal, man 7 signal

Több folyamat egyetlen terminálban

Folyamat leállítása

A folyamatokat leállíthatjuk a Ctrl+Z billentyűkombinációval.

Indítsuk el a nano nevű szövegszerkesztő programot:

nano

Az indítás után a Ctrl+Z billentyűkombinációval tegyük háttérbe. Most indítsunk egy másik nano nevűprogramot, tegyük ezt is háttérbe a Ctrl+Z billentyűkkel. Indítsunk egy vi nevű szövegszerkesztőt.Tegyük a Ctrl+Z-vel háttérbe. Most indítsunk egy mutt nevű levelező programot. Tegyük háttérbe eztis.

Ezek után nézzük meg a háttérbe tett folyamatokat a „jobs” paranccsal:

jobs

Az eredmény ehhez hasonló:

[1] Megállítva nano[2] Megállítva nano[3]- Megállítva vi[4]+ Megálíltva mutt

A megállított nano, vi és mutt programot látjuk. Mindegyik kapott egy sorszámot. A sorszámokathasználhatjuk annak jelzésére, hogy melyiket szeretnénk előtérbe hozni.

Előtérbe az „fg” paranccsal hozhatjuk a folyamatokat. Ha csak önmagában adom ki az „fg” parancsot,akkor az utolsót, esetünkben a mutt nevű folyamatot hozza vissza. Az „fg” parancsnak azonbanparaméterként megadhatok egy sorszámot is. Például a második nano program visszahívása:

fg 2

Egy folyamat persze már indításkor is háttérbe tehető:

yes > /dev/null &

Ha az fg parancsnak nem adunk meg paramétert, akkor a legkisebb azonosító számú programot fogjaelőtérbe hozni.

Page 57: Linux Parancssor

2015/12/08 21:23 57/107 Linux parancssor

SzitWiki - http://szit.hu/

Gyakorlás

A yes parancs folyamatosan a képernyőre írja a paraméterként megadott szöveget, és a coreutilscsomagban található. Ha nem adunk meg paramétert akkor az y betűt írja. Használhatjuk tesztekhez.Például irányítsuk a y betűk sorozatát a /dev/null állományba:

yes > /dev/null

Így kapunk egy programot, amely folyamatosan a fut. A termináltól úgy tudom elszakítani, hogy atanult módon háttérbe helyezem:

Ctrl + Z

Vagy már indításkor is a háttérbe helyezhetjük:

yes > /dev/null &

Az elindított folyamatok számát ellenőrizzük, majd hozzuk előtérbe azokat és szakítsuk meg.Megszakítás a következő billentyűkombinációval:

Ctrl + C

Folyamatok fastruktúrában

A használható parancs:

pstree

Csak a jozsi felhasználó folyamatainak megjelenítése:

pstree joszi

A pstree kimenete átadható a less parancsnak lapozás céljából:

pstree | less

Vagy:

pstree joszi | less

A példa kedvéért indítsunk két folyamatot, amit leállítunk. Feltételezzük, hogy a felhasználónevünk„tibi”. A teendők a következők:

nano <Ctrl>+<Z>nano <Ctrl>+<Z>pstree -c tibi

Lehetséges kimenet (ha tibi csak egyszer lépett, és csak ezeket a programokat futtatja egy

Page 58: Linux Parancssor

Last update: 2015/12/08 20:38 oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor

http://szit.hu/ Printed on 2015/12/08 21:23

teletájpról):

bash─┬─nano └─nano

top

Folyamatok valós idejű figyelése

Kilépés:

q

A h billentyűvel lekérdezhetjük a használható billentyűket:

h

Z,B Globálisan: a 'Z' a színtérképek cseréje; 'B' félkövér tiltása/engedésel,t,m Összefoglalók: 'l' terhelési átlagok; 't' folyamat/CPU statisztika; 'm' memóriainformációk1,I SMP nézet: '1' egyszerű/kifejtett; 'I' Irix/Solaris módf,o Mezők/Oszlopok: 'f' hozzáad vagy töröl; 'o' a megjelenés sorrendje

F vagy O A kiválasztott mező rendezése<,> A mező mozgatása: '<' a következő oszlop balra; '>' a következő oszlop jobbraR,H Kulcs: 'R' normál/fordított rendezés; 'H' szálak mutatásac,i,S Kulcs: 'c' cmd name/line; 'i' üres folyamatok; 'S' növekvő időx,y Kiemelő kulcsok: 'x' rendezett mezők; 'y' futó folyamatokz,b Kulcs: 'z' színes/mono; 'b' félkövér/fordít (csak 'x' vagy 'y' esetén)u Csak a felhasználók folyamatai

n vagy # Maximálisan mutatott folyamatok számak,r Folyamatok kezelése: 'k' kill; 'r' prioritás (renice)

d vagy s Frissítési időköz beállításaW Beállítások fájlba írásaq Kilépés

fuser

Használt fájl vagy könyvtár

A folyamatok által használt fájlokat és socketeket az fuser paranccsal tudjuk vizsgálni.

Szeretnénk látni azoknak a folyamatoknak a PID-jét, amelyeket az aktuális felhasználó használ:

fuser .

A kimenet:

Page 59: Linux Parancssor

2015/12/08 21:23 59/107 Linux parancssor

SzitWiki - http://szit.hu/

.: 21384c

A példában szereplő PID szám végén van egy „c” karakter. Ez a hozzáférés típusát mondja megszámunkra. Lássuk milyen típusok vannak még:

c az aktuális könyvtáre végrehajtható állományf nyitott fájlF írásra megnyitott fájlr root könyvtárm memóriába mapolt fájl vagy osztott könyvtár

A részletek megmutatásához írjuk be a -v kapcsolót:

fuser -v .

A kimenet:

FELHASZNÁLÓ PID HOZZÁFÉRÉS PARANCS.: joska 21384 ..c.. bash

Használt port

Melyik program használt egy adott portot?

Vizsgáljuk meg rootként a 80-as portot:

fuser -v -n tcp 80

A kimenet:

FELHASZNÁLÓ PID HOZZÁFÉRÉS PARANCS80/tcp: root 1416 F.... apache2 www-data 1539 F.... apache2 www-data 1540 F.... apache2 www-data 1541 F.... apache2 www-data 1542 F.... apache2 www-data 1543 F.... apache2 www-data 2856 F.... apache2 www-data 2909 F.... apache2 www-data 2925 F.... apache2 www-data 2926 F.... apache2

Porthasználat példa 2

fuser -v -n tcp 12345

Page 60: Linux Parancssor

Last update: 2015/12/08 20:38 oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor

http://szit.hu/ Printed on 2015/12/08 21:23

FELHASZNÁLÓ PID HOZZÁFÉRÉS PARANCS12345/tcp: andras 3097 F.... server

Csatolt könyvtár

A mount paranccsal felcsatolt /mnt/valami könyvtárat valami foglalja. A következő parancs leállítja ezta programot:

fuser -vmk /mnt/valami

Futtatható program

./fuser

fuser -v server

Eredmény:

FELHASZNÁLÓ PID HOZZÁFÉRÉS PARANCSserver: andras 3097 ...e. server

Socket

fuser -v /var/run/mysqld/mysqld.sock

Eredmény:

FELHASZNÁLÓ PID HOZZÁFÉRÉS PARANCS/var/run/mysqld/mysqld.sock: mysql 1905 F.... mysqld

Program folyamatának kilővése

fuser -v -k server

FELHASZNÁLÓ PID HOZZÁFÉRÉS PARANCSserver: andras 3097 ...e. server

Ha program terminálhoz van kötve, akkor a következőt láthatjuk:

./serverKilőve

Page 61: Linux Parancssor

2015/12/08 21:23 61/107 Linux parancssor

SzitWiki - http://szit.hu/

Folyamat kilővése interaktív módon

fuser -v -i -k server

FELHASZNÁLÓ PID HOZZÁFÉRÉS PARANCSserver: andras 3199 ...e. serverKilövi a(z) 3199 folyamatot? (i/N)

fuser -v -i -k ./

Eredmény:

./: FELHASZNÁLÓ PID HOZZÁFÉRÉS PARANCS joska 1231 ..c.. bash joska 1327 ..c.. nano joska 1343 ..c.. mcedit joska 1345 ..c.. yesKilövi a(z) 1282 folyamatot? (i/N) nKilövi a(z) 1327 folyamatot? (i/N) iKilövi a(z) 1343 folyamatot? (i/N) iKilövi a(z) 1345 folyamatot? (i/N) i[1] Kilőve nano[2] Kilőve mcedit[3] Kilőve yes

pgrep és pkill

A pgrep és pkill parancsok segítségével a folyamatlistát tudjuk megszűrni minta alapján. A mintábanhasználhatók helyettesítő karakterek is, a man 7 regex alapján.

A rendszerben több felhasználó is indíthatott nano szövegszerkesztőt. Mi most a joska nevűfelhasználó által indított nano folyamat PID számára vagyunk kíváncsiak:

pgrep -u joska nano

Szeretnénk leállítani mindenáron a joska által indított nano folyamatokat:

pkill -9 -u joska nano

A pgrep és a pkill persze igazán akkor hasznos, ha mintákat is használunk.

A felhasználókat megadhatjuk a UID alapján is. A root felhasználó folyamatai:

pgrep -lu 0

pidof

Page 62: Linux Parancssor

Last update: 2015/12/08 20:38 oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor

http://szit.hu/ Printed on 2015/12/08 21:23

A pidof segítségével folyamatok azonosítóját deríthetjük ki. Indítsunk egy nano programot, majdtegyük a Ctrl+Z-vel háttérbe. Majd futtassuk a következő parancsot:

pidof nano

A parancs az összes nano folyamat PID számát kiírja. Lehetséges kimenet:

3745 3694 3693

Gyakorlat

Hogyan tudjuk listázni a rendszer összes folyamatát?Hogyan tudjuk megjeleníteni a folyamatokat valós időben?Milyen jelzést kell küldeni egy folyamatnak, hogy biztosan leálljon?

Szűrők

A szűrőkről általában

A szűrők a bemenetükre került adatokkal csinálnak valamit, majd a kimenetre küldik.

cat

A cat az egyetlen szűrő, amely a bemenetre érkező adatokkal semmit nem csinál. Változatlanul írjaazokat a képernyőre. Mégis ez a parancs – mint azt feljebb láttuk, amellyel a legtöbb dolgot tehetjük.Ezek:

állomány tartalmának megjelenítéseállomány létrehozásaállományok összemásolásaállományok másolásaállományhoz fűzés

Állomány létrehozása:

cat > dolgozok.txt

Állomány tartalma:

cat dolgozok.txt

Állományok összemásolása:

cat fajl1 fajl2 fajl3 > egyfajl.txt

Állományok másolása:

Page 63: Linux Parancssor

2015/12/08 21:23 63/107 Linux parancssor

SzitWiki - http://szit.hu/

cat < eredeti > masolat

A fájl végéhez fűzünk:

cat >> dolgozok.txtSzabó Gábor 830000[Ctrl]+[D]

A fájl végéhez fűzők:

cat >> dolgozok.txt <<VEGENagy József 800000Kis Béla 570000Jég Lajos 750000VEGE

cat összefoglalva

Állományok létrehozása

cat > filenev.txttartalom...<Ctrl>+<D>

Állomány tartalmának megtekintése

cat < filenev

vagy

cat filenev

Állományok másolása

cat < filenev > filenev2

Állományok összemásolása

cat file1 file2 file3 > file4

Page 64: Linux Parancssor

Last update: 2015/12/08 20:38 oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor

http://szit.hu/ Printed on 2015/12/08 21:23

colrm

A bemenetre érkező sorokból bizonyos oszlopok törlése

Szintaxis:

colrm [startoszlop [ végoszlop ]]

A példa kedvéért adott az alábbi tabulátorral tagolt állomány a következő tartalommal:

tanulok.txt

001 Alex Brown 85 5002 Dan Igor 40 3003 Barton Flex 56 3004 Rock Brain 78 4

Szeretnénk a nevek oszlopait eltüntetni.

Megoldás:

cat tanulok | colrm 9 24

Eredmény:

cel.txt

001 85 5002 40 3003 56 3004 78 4

Nagyobb példafájl:

tanulok.txt

001 Alex Brown 85 5002 Dan Igor 40 3003 Barton Flex 56 3004 Rock Brain 78 4005 Kis István 72 4006 Nagy Béla 70 4007 Fehér Tamás 28 1008 Kékes Imre 45 4009 Per Béla 78 4010 Zöld Elek 78 4011 Piros Gábor 23 1012 Fék Lajos 28 4

Page 65: Linux Parancssor

2015/12/08 21:23 65/107 Linux parancssor

SzitWiki - http://szit.hu/

013 Elmúlt Tibor 78 4014 Leendő Tamás 28 4015 Pék Gergő 78 4016 Rob Sándor 18 1017 Kékedi Imre 70 4018 Nagy Lajos 85 4

Egyéb használat

ifconfig eth0 | colrm 1 10

cat /var/log/syslog | colrm 1 16 | colrm 30

cat /var/log/auth.log.1 | colrm 70

Utóbbi példában ha szimplán az állomány tartalmát listázom, azok kilógnak a következő sorban. Acélom, hogy átláthatóbb sorokat szeretnék, de jelenleg csaka sorok elejére vagyok kíváncsi.

cut

Csak bizonyos oszlopokat szeretnénk megjeleníteni.

Szintaxis:

cut [opció] … [fájl] ...

Szóközökkel tagolt sorok

Adott az alábbi szóközökkel tagolt állomány:

tanulok2.txt

001 Alex Brown 85 5002 Dan Igor 40 3003 Barton Flex 56 3004 Rock Brain 78 4

Megoldás:

cat tanulok2.txt | cut -c4-22

Az eredmény:

Alex Brown Dan Igor Barton Flex

Page 66: Linux Parancssor

Last update: 2015/12/08 20:38 oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor

http://szit.hu/ Printed on 2015/12/08 21:23

Rock Brain

Tabulátorral tagolt sorok

tanulok.txt

001 Alex Brown 85 5002 Dan Igor 40 3003 Barton Flex 56 3004 Rock Brain 78 4

Megoldás:

cut -f2 < tanulok.txt

A futtatás eredménye:

cut -f2 < tanulok.txtAlex BrownDan IgorBarton FlexRock Brain

Kettősponttal tagolt

tanulok3.txt

001:Alex Brown:85:5002:Dan Igor:40:3003:Barton Flex:56:3004:Rock Brain:78:4

Megoldás:

cut -f2 -d : tanulok3.txt

A -d kapcsoló után szóközzel vagy a nélkül megadjuk az elválasztójelet. A -d kapcsolóval szinte bármitmegadhatunk szeparátornak.

Eredmény:

cut -f2 -d: tanulok3.txtAlex BrownDan IgorBarton Flex

Page 67: Linux Parancssor

2015/12/08 21:23 67/107 Linux parancssor

SzitWiki - http://szit.hu/

Rock Brain

Egyszerre több oszlop megjelenítése

cut -f 2,3,7 -d : tanulok3.txt

Eredmény:

cut -f 2,3,4 -d: tanulok3.txtAlex Brown:85:5Dan Igor:40:3Barton Flex:56:3Rock Brain:78:4

mcrypt

A következő parancsok használatához szükséges az mcrypt nevű csomag telepítése. A telepítéshezlásd a csomagkezelés részt a „Rendszer” fejezetben.

Titkosítás

Adott az alábbi állomány a következő tartalommal:

nyilt.txt

Holnap este érkezem.

Szeretnénk titkosítani az állományt.

Titkosítás:

mcrypt nyilt.txt

A futtatás eredménye:

mcrypt nyilt.txtEnter the passphrase (maximum of 512 characters)Please use a combination of upper and lower case letters and numbers.Enter passphrase:Enter passphrase: File nyilt.txt was encrypted.

A parancs bekért egy jelszót kétszer, majd létrehozza a következő állományt:

Page 68: Linux Parancssor

Last update: 2015/12/08 20:38 oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor

http://szit.hu/ Printed on 2015/12/08 21:23

nyilt.txt.nc

A nyilt.txt.nc szöveg tartalmát ha megnézzük olvashatatlan szöveg lesz. Így már elküldhetjük a titkosüzenetet. Ezek után az üzenet vevőjének vissza kell kódolni az üzenetet.

Dekódolás

A visszafejtés a következő paranccsal lehetséges:

mdecrypt nyilt.txt.nc

A futtatás eredménye:

mdecrypt nyilt.txt.ncEnter passphrase:File nyilt.txt.nc was decrypted.

A parancs bekéri a jelszót, majd elkészíti a nyilt.txt.nc állományt visszakódolva a nyilt.txt nevű fájlt.

crypt parancs

A crypt parancsot a mcrypt csomag valósítja meg. Régi unixból ismert parancs, amely a stdin-ről várjaa bemenetet, és a stdout-ra ír.

crypt < nyilt.txt > titkos.txtUnix crypt(1) emulation program using mcrypt(1). Use crypt -h for more help.Enter the passphrase (maximum of 512 characters)Please use a combination of upper and lower case letters and numbers.Enter passphrase:Enter passphrase: Stdin was encrypted.

Persze ebben a formában is használahtó:

crypt > titkos.ncUnix crypt(1) emulation program using mcrypt(1). Use crypt -h for more help.Enter the passphrase (maximum of 512 characters)Please use a combination of upper and lower case letters and numbers.Enter passphrase:Enter passphrase: Holnap este érkezem.

Page 69: Linux Parancssor

2015/12/08 21:23 69/107 Linux parancssor

SzitWiki - http://szit.hu/

Stdin was encrypted.

Visszafele ugyanígy:

crypt < titkos.ncUnix crypt(1) emulation program using mcrypt(1). Use crypt -h for more help.Enter the passphrase (maximum of 512 characters)Please use a combination of upper and lower case letters and numbers.Enter passphrase:Enter passphrase: Holnap este érkezem.Stdin was encrypted.

grep

Adott mintát tartalmazó sorok megjelenítése

Szintaxisa:

grep [ kapcsolók ] minta [ fájl ... ]

Adott az alábbi belépési napló:

belepesinaplo.txt

2005.10.25 18:30 alex 196.145.43.32005.10.26 18:30 joe 216.45.3.22005.10.26 18:44 richard 196.145.43.32005.10.28 22:31 joe 196.145.43.32005.10.29 18:00 alex 196.145.43.3

A futtatás eredménye:

grep alex belepesinaplo.txt 2005.10.25 18:30 alex 196.145.43.32005.10.29 18:00 alex 196.145.43.3

A grep -v azokat jeleníti meg, amelyek nem tartalmazzák a sorokat.

grep -v alex belepesinaplo.txt2005.10.26 18:30 joe 216.45.3.22005.10.26 18:44 richard 196.145.43.32005.10.28 22:31 joe 196.145.43.3

Page 70: Linux Parancssor

Last update: 2015/12/08 20:38 oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor

http://szit.hu/ Printed on 2015/12/08 21:23

Az alábbi naplóállomány a következő mezőket tartalmazza:

dátum idő felhasználónév ipcím letöltött adatmennyiség

naplo.log

2005.12.25 18:30 alex 196.145.43.3 1960 bytes2005.12.26 18:30 joe 216.45.3.2 1512 bytes2005.12.26 18:44 richard 196.145.43.3 2005 bytes2005.12.28 22:31 joe 196.145.43.3 2006 bytes2005.12.29 18:00 alex 196.145.43.3 2050 bytes2006.01.02 08:25 joe 195.166.29.5 2008 bytes2006.01.02 12:20 alex 195.165.1.1 2005 bytes

Feladatunk, hogy listázzuk a 2006-os eseményeket. Ha most a fentebb tárgyalt módon csak ennyitírunk:

grep 2006 naplo.log

úgy azok a sorok is megjelennek ahol a letöltött byte-ok száma 2006. Ezért ez nekünk nem jó.Jeleznünk kell, hogy csak azokat a sorokat szeretnénk megjeleníteni, ahol a 2006 a sor elejénszerepel. Ehhez a ^ karaktert használjuk:

grep ^2006 naplo.log

A karakterosztályok használata

naplo.log

2005.12.25 18:30 alex 196.145.43.3 1960 bytes2005.12.26 18:30 joe 216.45.3.2 1512 bytes2005.12.26 18:44 richard 196.145.43.3 2005 bytes2005.12.28 22:31 joe 196.145.43.3 2006 bytes2005.12.29 18:00 alex 196.145.43.3 2050 bytes2006.01.02 08:25 joe 195.166.29.5 2008 bytes2006.01.02 12:20 alex 195.165.1.1 2005 bytes2006.01.03 07:02 mari 195.165.2.45 2007 bytes

A fenti állományban azokat a sorokat keressük, ahol a letöltés 2005, 2006, 2007 vagy 2008 van.

grep "200[5678] bytes" naplo.log

A negyedik karakter csak a szögletes zárójelben ”[ ]„ megadott négy karakter egyikére illeszkedik. Az5,6,7 vagy 8-as karakterek valamelyikére. A szám után kötelezően egy szóköznek, majd utána byteskarakterek megköveteltek.

A szögletes zárójel lehetővé teszi intervallumok megadását [5-8]:

Page 71: Linux Parancssor

2015/12/08 21:23 71/107 Linux parancssor

SzitWiki - http://szit.hu/

grep "200[5-8] bytes" naplo.log

Az intervallumok megadására használhatók betűk is:

[a-z]

Az előbbi minta például az angol ábécé összes kisbetűjére illeszkedik. A nagybetűk:

[A-Z]

Természetesen megadhatók kisebb intervallumok is:

[c-k]

Üres sorok törlése

grep -v "^$" filename

grep . filename

grep -v '^[[:space:]]*$' filename

Hashmárk jeles sorok kihagyása

grep -v '\#' filename

Fájlok keresése tartalom alapján

grep -H -r “Rewrite” /etc/apache2/

man -L en grep

grep gyakorlat

Adott az alábbi naplóállomány részlet (/var/log/syslog):

Feb 21 18:32:12 server postfix: Connection,Feb 21 18:32:12 server postfix: LOGIN, [email protected],Feb 21 18:32:46 server postix: LOGOUT, [email protected] 21 18:32:12 server pop3d: Connection,Feb 21 18:32:12 server pop3d: LOGIN, [email protected],Feb 21 18:32:46 server pop3d: LOGOUT, [email protected]

Csak a pop3d-t tartalmazhó sorokat szeretnék megjeleníteni.

Page 72: Linux Parancssor

Last update: 2015/12/08 20:38 oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor

http://szit.hu/ Printed on 2015/12/08 21:23

grep pop3d /var/log/syslog

Adott egy konfigurációs állomány (dspam.conf) ami tele van megjegyzésekkel. Szeretném kiszűrni amegjegyzés sorokat és csak a beállításokat szeretném:

## DSPAM Home: Specifies the base directory to be used for DSPAM storage#Home /var/spool/dspam

Ekkor:

grep '^[^#]' dspam.conf

Fájl keresése tartalom alapján

grep -lir "keresett szöveg" /utvonal/konyvtar

egrep

Nem egyezik meg a grep -E használatával, mert annál több reguláris kifejezést ismer ha ezthasználjuk.

Ehhez hasonló reguláris kifejezések is használhatók:

+,?, | és ()

fgrep

Fix vagy fast grep rövidítése. Megegyezik a grep -F használatával

paste

Adatoszlopok összemásolása

Állományok oszlopainak összemásolása egy fájlba, egymás mellé

Szintaxis:

paste [ kapcsolók ... ] [ fájl ... ]

Van 4 darab fájl:

sroszamnev

Page 73: Linux Parancssor

2015/12/08 21:23 73/107 Linux parancssor

SzitWiki - http://szit.hu/

szuletesnaptelefonszam

sorszam

001002003

nev

AlexBrownJoe

szuletesnap

1985.07.111987.01.121999.12.22

telefonszam

(1) 335-3345(37) 332-328(48) 183-981

Szeretnénk egyetlen fájlban egymás mellé összemásolni.

Megoldás:

paste sorszam nev szuletesnap telefon > info.txt

Eredmény:

info.txt

001 Alex 1987.07.11 (1)335-3345002 Brown 1987.01.12 (37) 332-328003 Joe 1999.12.22 (48) 143-981

Tagolás szóközökkel

Megoldása

Page 74: Linux Parancssor

Last update: 2015/12/08 20:38 oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor

http://szit.hu/ Printed on 2015/12/08 21:23

paste -d ' ' sorszam nev szuletesnap telefon > info

Eredmény:

info

001 Alex 1987.07.11 (1)335-3345002 Brown 1987.01.12 (37) 332-328003 Joe 1999.12.22 (48) 143-981

Tagoláshoz persze bármit megadhatunk pl.:

-d ':'

Táblázat oszlopainak cseréje

Adott egy dolgozok nevű állomány, amiben oszlopokban szeretnénk megcserélni.

dolgozok

Név Fizetés BeosztásAlex 130000 festőBrown 150000 asztalosJoe 170000 villanyszerelő

Megoldás:

cut -f1 dolgozok > nevcut -f2 dolgozok > fizetescut -f3 dolgozok > beosztas paste nev beosztas fizetes > dolgozok2 more dolgozok2 rm nev beosztas fizetes

sort

A bemenetre érkező adatokat rendezi.

A sort parancsot Adatok rendezése és összemásolása

Ha a bemenet egy másik programtól jön csővezetéken:

Page 75: Linux Parancssor

2015/12/08 21:23 75/107 Linux parancssor

SzitWiki - http://szit.hu/

cat filenev.txt | sort

Ha a program bemenete egy állomány:

sort < filenev.txt

Fordított rendezés

sort -r nevek.txtsort --reverse nevek.txt

Kimeneti fájl megadása

sort -o ujfajl.txt nevek.txt

Átirányítással:

sort nevek.txt > ujfajl.txt

Ha így használjuk:

sort nevek.txt > nevek.txt

A nevek.txt tartalma elveszett, mert a kimeneti fájl előkészítése megtörténik annak olvasása előtt.

Itt lehet ugyanaz a név:

sort -o nevek.txt nevek.txt

Egy fájlba

sort nevek1 nevek2 nevek3 > osszes

Egy fájlba rendezi a 3 fájl tartalmát

A gyümölcs fájl tartalma:

gyumolcs.txt

kortealmaszilvabarack

Eredmény:

Page 76: Linux Parancssor

Last update: 2015/12/08 20:38 oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor

http://szit.hu/ Printed on 2015/12/08 21:23

sort gyumolcs.txtalmabarackkorteszilva

Rendezés adott mező szerint

gy.txt

1 körte2 alma3 szilva

Második oszlop szerint szeretnénk rendezni:

sort -k +2 < gy.txt

-k oszlopszám

rev

Egy sort megfordít

A rev parancsot karakterek sorrendjének megfordítása használjuk.

Szintaxis:

rev [fájl …]

A bemenet lehet a STDIN is.

Legszemléletesebben egy egyszerű állományon láthatjuk a működését. Az adat.txt állomány tartalmalegyen a következő:

adat.txt

12345abcdeAxAxA

Futtatás:

rev adat.txt54321edcba

Page 77: Linux Parancssor

2015/12/08 21:23 77/107 Linux parancssor

SzitWiki - http://szit.hu/

AxAxA

spell

A spell egy helyesírás ellenőrző program. A unixos rendszerekből származik. A spell csomag telepítéseután használható.

A spell a paraméterként megadott állományból kiírja azokat a szavakat amiket helytelennek tart.

Magyar helyesírásh ell.-hez: ihungarian csomag kell telepítve legyen.

(magyar környezeteben ékezet gondok)

helyesen helytelenülbarack barckszilva szilvekörte köritealma almehelyes helytelenpeach peacplum plempear peareapple aple

Gyakorlás

Adott a következő fájl:

gy.txt

barcakszilveeperkörtealme

A harmadik szó helyes, a többit helytelen.

Végrehajtás:

spell gy.txt

A parancs az eper szó kivételével kiír minden sort.

ispell használata

Page 78: Linux Parancssor

Last update: 2015/12/08 20:38 oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor

http://szit.hu/ Printed on 2015/12/08 21:23

A hunspell csomag használata esetén rávehetjük annak használatára is:

spell -i /usr/bin/ispell gy.txt

hunspell használata

A hunspell csomag használata esetén rávehetjük annak használatára is:

spell -i /usr/bin/hunspell gy.txt

ispell

Ez egy interaktív helyesírás ellenőrző program.

Indítás:

ispell gy.txt

Az indítás után a program kiírja a hibás szót, majd lehetőségeket kínál a változtatásra. Számokkaladhatjuk meg, mire szeretnénk javítani. Ha ez nem egyezik az általunk kívánt lehetőséggel, akkor az rlenyomása után mást is beírhatunk. A program minden lehetőséget kiír a képernyő alján.

barcak File: gy.txt barcak : barack 1: barnak 2: bar�ak [SP] <number> R)epl A)ccept I)nsert L)ookup U)ncap Q)uit e(X)it or ? forhelp

Hátránya, hogy nem ismeri az UTF-8 kódolásul ékezeteseket.

http://magyarispell.sourceforge.net/magyarispell.pdf

aspell

Interaktív helyesírás ellenőrző program. UTF-8-as környezetben kezeli az ékezetes karaktereket.

Page 79: Linux Parancssor

2015/12/08 21:23 79/107 Linux parancssor

SzitWiki - http://szit.hu/

Felülete hasonlít az ispell programhoz.

Használatához telepíteni kell a aspell csomagot, a magyar helyesírás ellenőrzéshez pedig a aspell-hu csomagot.

Adott a következő állomány:

gy.txt

Szeretem a gyümölcsöket. Kedvenceim az alme, körti, szilve és a barakc.

aspell check gy.txt

barckszilvaköritealme

1) barack 4) barik2) Barcs 5) barok3) Barok 6) barék

i) Ignore I) Ignore allr) Replace R) Replace alla) Add l) Add Lowerb) Abort x) Exit?

hunspell

Adott a következő állomány:

gy.txt

Szeretem a gyümölcsöket. Kedvenceim az alme, körti, szilve és a barakc.

Ellenőrzés:

hunspell gy.txt

Felülete:

Page 80: Linux Parancssor

Last update: 2015/12/08 20:38 oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor

http://szit.hu/ Printed on 2015/12/08 21:23

barck File: gy.txt

barck

0: barack 1: barok 2: barik 3: barék 4: barcsik 5: Barcs 6: barcsi 7: barchesz

[SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it or ? for help

Előnyök:

http://manpages.ubuntu.com/manpages/hardy/hu/man1/hunspell.1.html

tr

Kiválasztott karakterek cseréje.

tr [kapcsolók] … készlet1 [készlet2]

Adatokat olvas a stdin-ről készlet1-beli előfordulását keresi, ha talál lecseréli a készlet2-beli párjával.

Kis a nagy A lesz:

tr a A < regifajl > ujfajl

Kis a,b,c nagy A,B,C lesz:

tr abc ABC < regifajl > ujfajl

Minden nagybetű kicsi lesz:

tr A-Z a-z < regifajl > ujfajl

Page 81: Linux Parancssor

2015/12/08 21:23 81/107 Linux parancssor

SzitWiki - http://szit.hu/

Ékezetlenítés

tr éáóö eaoo < ekezetes > ekezetlen

Az ékezetlenítés UTF-8-as környezetben nem jó működik. Helyette ajánlott a sed parancs használata.

uniq

Az ismétlődő sorokat csak egyszer jeleníti meg.

Rendezett, Ismétlődő sorok törlése

uniq [kapcsoló] ... [bemenet [kimenet]]

Így nem működik!

adat

almakörtealmabarackszilvakörte

uniq adatalmakörtealmabarackszilvakörte

Így helyes!

adat

almakörtealmabarackszilvakörte

Page 82: Linux Parancssor

Last update: 2015/12/08 20:38 oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor

http://szit.hu/ Printed on 2015/12/08 21:23

sort adat | uniqalmabarackkörteszilva

wc

Sorok megszámolása

Sorok, szavak és karakterek számolása

Szintaxis:

wc [kapcsoló] ... [fájl] ...

Adott egy állomány:

adat

almakörtebarackszilva

Végrehajtás:

wc adat 4 4 25

Amit kaptunk:

4 sor4 szó25 byte

Gyakori használat.

wc -l

Csak sorok számolása

nl

Sorszámozás

A sorokat sorszámozza

Page 83: Linux Parancssor

2015/12/08 21:23 83/107 Linux parancssor

SzitWiki - http://szit.hu/

A számok a sor elé kerülnek

Példa a használatra:

nl -n rz -w3 -s:

(-n) jobbra zárt, előnullázva(-w3) számjegyek száma(-s:) szeparátor

Eredmény:

001:adat1:adat2

tac

A bemenetet megfordítja, az utolsó sortól írja ki.

eredeti.txt

alma 40 dbkörte 53 dbbarack 25 dbszilva 27 db

uj.txt

szilva 27 dbbarack 25 dbkörte 53 dbalma 40 db

expand

tabulátorok szóközökre cserélése

tanulok_tab.txt

001 Alex Brown 85 5002 Dan Igor 40 3003 Barton Flex 56 3004 Rock Brain 78 4

Végrehajtás:

Page 84: Linux Parancssor

Last update: 2015/12/08 20:38 oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor

http://szit.hu/ Printed on 2015/12/08 21:23

expand tanulok_tab.txt > tanulok_szokoz.txt

unexpand

Szóközök tabulátorra cserélése.

Adott a következő állomány szóközökkel tagolva:

tanulok_szokoz.txt

001 Alex Brown 85 5002 Dan Igor 40 3003 Barton Flex 56 3004 Rock Brain 78 4

Végrehajtás:

unexpand -a tanulok_szokoz.txt > tanulok_tab.txt

(-a) Ne csak a bevezető szóközöket és tabulátorokat, hanem az összeset alakítsa át tabkarakterekké.

join

Összefűzés

Minden egyes azonos összekapcsolási mezővel rendelkező bementi sorpárhoz kiír egy sort aszabványos kimenetre.

nev

1 János2 Ferenc3 István4 Kati

szul

1 19814 19342 19453 1967

Végrehajtás:

Page 85: Linux Parancssor

2015/12/08 21:23 85/107 Linux parancssor

SzitWiki - http://szit.hu/

join nev szul1 János 19812 Ferenc 19343 István 19454 Kati 1967

Az állományok tartalmazhatnak üres sorokat. De ha nincs rendezve, akkor nem mindig jó azeredmény.

fold

sorok tördelése a megadott mezőszámmal:

fold -w 70 file.txt

Tegyük fel, hogy kaptam egy e-mailt, amelyben egy szöveges fájl van, de a levelet úgy írták, hogynem törtek sort a képernyő jobb szélre érve, ezért a mi olvasó programunkban kilóg a képernyőről.

level.txt

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiamcondimentum blandit sapien non volutpat. Vivamus posuere massa euismodlibero varius et mollis velit aliquam. Donec ultrices placeratconsequat. Phasellus sit amet est non lorem vestibulum placerat iaculisvitae justo. Lorem ipsum dolor sit amet, consectetur adipiscing elit.Vivamus bibendum feugiat eleifend. Duis tincidunt tempus eros, aclaoreet magna suscipit eu. Praesent quis facilisis lacus. Quisqueimperdiet egestas lectus dapibus iaculis. Morbi egestas nulla eu magnasagittis vitae eleifend lacus sodales. Nullam vel nunc nisl. Vestibulumeget sapien eros. Donec ac pellentesque odio. In hac habitasse plateadictumst.

(Ezt az állományt letöltheted így is:)

curl http://szit.hu/wiki/download/level.txt > level.txt

Ekkor tördelhetjük az az állományt a fenti mint alapján:

fold -w 70 level.txt

expr

Kifejezés kiértékelése

expr 1 + 23

Page 86: Linux Parancssor

Last update: 2015/12/08 20:38 oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor

http://szit.hu/ Printed on 2015/12/08 21:23

expr 1 ”<” 21

expr 1 ”>” 2

expr length "alma a"6

expr 3 "*" 26

expr 1 = 2

tsort

Topológikus rendezést hajt végre egy fájlon.

Szintaxis:

tsort [fájl]

Ha nincs fájl megadva, akkor STDIN-ről olvas.

Például

Át fogunk adni a tsort-nak egy „X történt Y előtt” típusú párokból álló listát, és megvizsgáljuk, hogyhogyan rendezi azt. Megjegyezzük, hogy adott részleges rendezés esetén nem mindig létezikegyértelműen teljes rendezés is.

Adott a következő állomány:

szul.txt

Éva JánosErika JánosPéter ÉvaZoltán Erika

Alkalmazás

tsort < szul.txtPéterZoltánÉvaErikaJános

Page 87: Linux Parancssor

2015/12/08 21:23 87/107 Linux parancssor

SzitWiki - http://szit.hu/

diff

A diff Két fájl összehasonlítása való sorról sorra. A használat során listázza a két összehasonlítottállomány eltérő részeit.

gy1.txt

almakörtebarackszilva

gy2.txt

almakörteszilva

diff gy1.txt gy2.txt3d2< barack

Két könyvtár összehasonlítása:

diff elso masodikCsak elso -ben: egy.txtCsak masodik -ben: ketto.txt

A program kiírja, ha egy fájl csak az egyik könyvtárban van.

patch

A patch program foltozásra való. A foltot a diff programmal készítjük, majd patch paranccsal fűzzük arégi állományhoz.

Például adott a következő állomány:

gy1.txt

almabarackkörteszilva

Lemásoljuk az állományt:

Page 88: Linux Parancssor

Last update: 2015/12/08 20:38 oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor

http://szit.hu/ Printed on 2015/12/08 21:23

cp gy1.txt gy2.txt

A gy2.txt állományban változásokat viszünk véghez.

Az állomány ezek után így néz ki:

gy2.txt

almabanánbarackcitromkörteszilva

A folt elkészítése:

diff -cBN gy1.txt gy2.txt > gy2.patch

Végrehajtás során:

diff -cBN gy1.txt gy2.txt > gy2.patch*** gy1.txt 2011-11-20 00:12:50.000000000 +0100--- gy2.txt 2011-11-20 00:45:58.000000000 +0100****************** 1,4 ****--- 1,6 ---- alma+ banán barack+ citrom körte szilva

Ha ezek után valakinek meg van gy1.txt állomány, a javítások alkalmazásához a foltot kellmegszerezni. Akinek csak a gy1.txt állomány van, megszerzi a foltot, majd alkalmazza a gy1.txtállományon.

A gy2.patch állományt a gy1.txt állománnyal azonos könyvtárba másolom. A patch alkalmazása ezután:

A folt alkalmazása:

patch < gy2.patch

Akkor hasznos ez a folthasználat alkalmazása ha az eredeti állomány nagyon nagy, nagyon komplexés szeretnénk egy apróbb vagy nagyobb változtatást alkalmazni az eredeti állományon.

A programozók gyakran használják a foltozást. Ha belejavítanak egy állományba, akkor csak elkészítika régi és új állomány különbségét (folt), majd ezt visszaküldik az eredeti fejlesztőnek. Az eredeti

Page 89: Linux Parancssor

2015/12/08 21:23 89/107 Linux parancssor

SzitWiki - http://szit.hu/

fejlesztőnek csak foltot kell letöltenie, amelyet alkalmaz az eredeti állományon.

diff3

Három fájl összehasonlítása sorról sorra.

sdiff

Két állomány összehasonlítása, tartalmuk interaktív egyesítése.

A két állomány tartalmát két oszlopban jeleníti meg, nagyon szemléletesen a különbségeket.

cmp

Két fájl összehasonlítása

Alapértelmezés szerint azonos állományok esetén nem ír ki semmit, eltérés esetén jelzi az eltérés sor-és bájtszámát.

comm

Sorról-sorra összehasonlít két rendezett fájlt.

A comm három oszlopban írja ki két állomány összehasonlításának eredményét. Az első oszlopbancsak azok a sorok szerepelnek, amelyek csak az első, a másodikban azok amelyek csak a második,végül a harmadikban azok amelyek mindkét állományban előfordulnak.

tail

Egy állomány végét írja ki.

Például:

tail /var/log/syslog

head

Egy állomány elejét írja ki.

dos2unix

A dos2unix egy parancs, amely ugyanezen a néven telepszik.

Page 90: Linux Parancssor

Last update: 2015/12/08 20:38 oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor

http://szit.hu/ Printed on 2015/12/08 21:23

A Wines fájlvége jeleket cseréli Linuxosra és vissza.

strings

ASCII karaktersorozatok keresése. Tipikusan bináris fájlokban szoktunk keresni olvasható szöveget.Például egy futtatható .exe vagy elf binárisban szeretnénk látni ki írta, hátha szerepel benne.

tee

A tee parancs a bemenetét fájlba és az alapértelmezett kimenetre irányítja egyszerre. Akkor lehethasznos, ha a fájlba írás mellett szeretnék a képernyőre is írni vagy a kimenetet egy másikprogramnak csővezetéken továbbadni.

Fájlba és képernyőre:

cat fajl.txt | tee kimenet.txt

Fájlba és másik programnak:

cat fajl.txt | tee kimenet.txt | sort

Esetleg:

cat fajl.txt | tee kimenet.txt | sort | rendezettkimenet.txt

Egyéb parancsok

zdump

Az aktuális időt írja ki az adott időzónában.

Grinwicsi középidő például:

zdump UTC

Észak-amerikai idő lekérdezése:

zdump EST

Közép-európai idő lekérdezése:

zdump CET

Japán idő lekérdezése:

Page 91: Linux Parancssor

2015/12/08 21:23 91/107 Linux parancssor

SzitWiki - http://szit.hu/

zdump Japan

Eredmény:

Japan Sun Nov 20 20:32:16 2011 JST

A használható paraméterek listája:

ls /usr/share/zoneinfo

time

Megmérhetjük mennyi idő alatt hajtódik végre egy parancs

Valósidő és folyamatidő. Statisztika mennyi ideig tartott a parancs végrehajtása.

Például:

time ls /usr/bin

Eredményhalmaz:

real 0m1.232suser 0m0.028ssys 0m0.048s

Vagy

time sleep 60 real 1m0.009suser 0m0.000ssys 0m0.004s

times

Statisztika a programfutásról

times ls -l /

Eredmény:

0m3.948s 0m1.392s0m24.246s 0m3.240s

Page 92: Linux Parancssor

Last update: 2015/12/08 20:38 oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor

http://szit.hu/ Printed on 2015/12/08 21:23

sleep

Várakozás meghatározott ideig. Alapértelmezett mértékegység a másodperc:

sleep 5

5 másodpercig vár

cal

Naptárat jelenít meg.

A cal parancs magyar kézikönyve sajnos elavult a Debian GNU/Linux 6.x rendszerekben. Helyettené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.

hwclock

A hardveróra lekérdezése és beállítása. Ez a parancs csak root felhasználóként használható.

rdate

Az rdate csomag egy távoli géről kérdezi le az időt.

rdate -p -n time.kfki.hu

Alapértelmezetten be is állítja az operációs rendszer idejét. Ez azonban csak root felhasználókénttehető meg.

A -n kapcsoló az RFC 2030 SNTP protokoll használatára utasít. Eredeti időprotokoll az RFC 868. De ezta példában szereplő kifki.hu intézet már régen nem szolgáltatja.

FIFO

FIFO fogalma

Mi a FIFO?

Elnevezett csövek

Page 93: Linux Parancssor

2015/12/08 21:23 93/107 Linux parancssor

SzitWiki - http://szit.hu/

Elnevezett pipe-okEgy különleges fájltípus

Mire jó?

Független folyamatok közötti adatcserét tesz lehetővé.

A FIFO használata

mkfifo pipeneve echo "Információ" > pipeneve & cat pipeneve

Az első sorral elkészítjük a FIFO-t. A második sorral teszünk bele információt, amely háttérbe kerül avégére tett & jel segítségével.

A cat pipeneve paranccsal olvassuk ki a FIFO tartalmát. A FIFO tartalma csak egyszer olvasható ki. Akiolvasással a háttérbe tett folyamat leáll.

ulimit

Az ulimit felhasználói limitek lekérdezésére és beállítására való.

Pl.:

ulimit -a

core file size (blocks, -c) 0data seg size (kbytes, -d) unlimitedscheduling priority (-e) 0file size (blocks, -f) unlimitedpending signals (-i) 16382max locked memory (kbytes, -l) unlimitedmax memory size (kbytes, -m) unlimitedopen files (-n) 1024pipe size (512 bytes, -p) 8POSIX message queues (bytes, -q) 819200real-time priority (-r) 95stack size (kbytes, -s) 8192cpu time (seconds, -t) unlimitedmax user processes (-u) unlimitedvirtual memory (kbytes, -v) unlimitedfile locks (-x) unlimited

Ehhez hasonló eredményt kaphatunk. Az egyes tulajdonságoknak megfelelő kapcsoló a kimenetbenlátható. Például, ha csak a verem (stack) méretét akarom lekérdezni:

Page 94: Linux Parancssor

Last update: 2015/12/08 20:38 oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor

http://szit.hu/ Printed on 2015/12/08 21:23

ulimit -s

Vagy felhasználóként mennyi folyamatot és szálat indíthatok.

Lásd bővebben: ulimit

lsof

A nyitott fájlokat mutatja

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAMEinit 1 root cwd unknown/proc/1/cwd (readlink: Permission denied)init 1 root rtd unknown/proc/1/

date

A dátum kiíratására és beállítására való. Szimplán, paraméterek nélkül kiírj a dátumot:

date

Eredmény:

2012. jan. 15., vasárnap, 11.07.34 CET

Ha csak az aktuális évszámot szeretném:

date +%Y

Az év, hó és nap, kötőjelekkel tagolva:

date +%Y-%m-%d

Az év, hó és nap, tagolás nélkü:

date +%Y%m%d

Az idő lekérdezése, kettősponttal tagolva:

date +%H:%M

A kötőjeles forma megint:

date +%F

A kettőspontos forma újra:

Page 95: Linux Parancssor

2015/12/08 21:23 95/107 Linux parancssor

SzitWiki - http://szit.hu/

date +%R

Vegyesen szóközzel tagolva:

date "+%F %R"

A következő paranccsal beállíthatom az időt (Ehhez rendszergazdai jogok kellenek):

date 01151114

A mintában Január 15-öt állítok be, 11 óra és 14 percre. Ez persze csak rendszergazdaként fogműködni.

Így is lehet:

date --set 1998-11-02date --set 21:08:

Néha előfordul, hogy egy időbélyeg számként van eltárolva, és szeretnénk olvashatóbb formábanlátni:

date -d @1344444444

BSD rendszeren ugyanez:

date -r 1344444444

nice

Prioritás beállítása indításkor.

nice -n 5 nano

renice

Prioritás állítása futás közben.

renice 2 -p 2848828488: régi prioritás: 0, új prioritás: 2

logger

A logger programmal felhasználóként is írhatunk egy /var/log/syslog könyvtárba.

logger<Enter>Ami a naplóba megy

Page 96: Linux Parancssor

Last update: 2015/12/08 20:38 oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor

http://szit.hu/ Printed on 2015/12/08 21:23

A naplóba dátummal, felhasználónévvel bekerül amit írtunk.

alias

Az alias parancs segítségével a parancsoknak megadhatunk alapértelmezett kapcsolókat.

Az alias parancs önmagában kiírja az aliaszokat:

alias

Ha például szeretnénk a -l kapcsolót folyamatosan megadni, akkor a következő parancsot adjuk ki:

alias ls="ls -l"

Az összes definiált alias megjelenítése:

alias -p

A beállított aliasok újabb munkamenet esetén elvesznek. Ezért írjuk őket ~/.bashrc fájlba. Ugyanakkornézünk szét ebben a fájlban az alias parancs után kutatva. A Debian GNU/Linux 6.x rendszerekben ittvan néhány előre definiált alias, és egy lehetőség, mely szerint ~/.bash_aliases fájlban ismeghatározhatunk újabb aliasokat.

Keresés

Szimpla keresés

Például keresem a main.c fájlt, amely az aktuális könyvtár valamelyik alkönyvtárban van:

find -name main.c

Lehetséges eredmény:

./c/main.c

Keresés helye

find /usr -name abook

A megtalált fájl becsomagolása

find -name main.c | xargs tar -cf valami.tar

Page 97: Linux Parancssor

2015/12/08 21:23 97/107 Linux parancssor

SzitWiki - http://szit.hu/

Keresés időbélyeg alapján

A fájlok statisztikájánál már volt szó arról, hogy egy Linux háromféle időbélyeget tárol egy fájlról.

mtime – modify time – A fájl módosításaatime – access time – A fájl olvasásactime – change time – Az inode módosítása

Az emberek ezekből általában az atime-ot ismerik, ami megmondja számunkra, a fájlt mikor olvastákutoljára.

Három napnál régebben olvasott fájlok:

find . -atime +3

Esetleg, ha a gyökérből értelmezve akarom futtatni:

find . -atime +3 -exec ls \;

Az utolsó három napban módosított fájl:

find . -mtime -3

Az utolsó 3 napban módosított txt fájlok:

find . -name '*.txt' -mtime -3

A 10000 kbytenál nagyobb fájlok:

find . -size +10000k

Fájl keresése tartalom alapján

find /utvonal/konyvtar -type f -exec grep -l "Amit keresek" {} +

Szabad hely

Háttértár

df -h

Memória

free

Page 98: Linux Parancssor

Last update: 2015/12/08 20:38 oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor

http://szit.hu/ Printed on 2015/12/08 21:23

Információk a rendszerről

A terjesztéssel kapcsolatos információk megjelenítése:

lsb_release -a

Lehetséges kimenet:

No LSB modules are available.Distributor ID: DebianDescription: Debian GNU/Linux 6.0.5 (squeeze)Release: 6.0.5Codename: squeeze

A CPU hőmérséklete:

cat /proc/acpi/thermal_zone/THRM/temperature

acpi -t

cpuinfo.sh

#/bin/bash MHZ=`cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq`HOMERSEKLET=`cat /sys/class/thermal/thermal_zone0/temp` echo CPU Sebesség: $(($MHZ/1000)) MHz -- CPU Hőmérséklet:$(($HOMERSEKLET/1000)$

A processzor adatai:

cat /proc/cpuinfo

vagy:

lscpu

Hány bites a processzorod:

grep flags /proc/cpuinfo

Ha fenti kimenetben látod az lm szót, akkor 64-bites.

Terminál beállítása

A setterm parancs segítségével megváltoztathatjuk a terminálunk színeit.

Page 99: Linux Parancssor

2015/12/08 21:23 99/107 Linux parancssor

SzitWiki - http://szit.hu/

setterm -background white -foreground blue -store

Virtuális terminálon nem működik.

man setterm

Hexedit

Hexaszerkesztésre több csomagot is találunk parancssorban, nekem eddig a hexedit jött be alegjobban.

hexedit

Telepítés:

apt-get install hexedit

mkdir ~/munka/hexcp /bin/ls ~/munka/hex/lshexedit ~/munka/hex/ls

A bc számológép

Alap

Indítás:

bc

Kilépés:

quit

Segítség:

man bc

Alapműveletek

Összeadás:

3+2

Kivonás:

Page 100: Linux Parancssor

Last update: 2015/12/08 20:38 oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor

http://szit.hu/ Printed on 2015/12/08 21:23

3-2

Osztás:

14/3

Szorzás:

3*5

Hatványozás:

2^8

Gyökvonás:

sqrt(9)

Számrendszerek közötti váltás

10 → 2

ibase=10obase=25101

10 → 16

ibase=10obase=1612C

Bemeneti számrendszer kiíratása:

print ibase,"\n"

2 → 10

ibase=2ibase=101004

Programírás

Page 101: Linux Parancssor

2015/12/08 21:23 101/107 Linux parancssor

SzitWiki - http://szit.hu/

#!/usr/bin/bc print "Első szám: "a = read()print "Második szám: "b = read()c = a + bprint "Összeg: ", c, "\n"quit

#!/usr/bin/bc

print "Első szám: "szam1 = read()

print "Második szám: "szam2 = read()

if (szam1>szam2) print "Az első szám nagyobb\n"

if(szam1<szam2) print "A második szám nagyobb\n"

quit

A stdin használata

A bc képe dolgozni az alapértelemzett bemenetről. Vagyis csővezetékből is képes adatokat venni:

echo 3 + 5 | bc

vagy:

echo 8 "*" 512 | bc

unix2dos

UNIX szöveges fájlok DOS/MAC formátumúvá alakítása.

Használatához a dos2unix csomagra van szükség.

Szintaxis:

unix2dos [options] [-c convmode] [-o file ...] [-n infile outfile ...]

Kapcsolók:

Page 102: Linux Parancssor

Last update: 2015/12/08 20:38 oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor

http://szit.hu/ Printed on 2015/12/08 21:23

[-fhkLlqV] [--force] [--help] [--keepdate] [--license] [--newline][--quiet] [--version]

Bináris és nem szabályos fájlokat, mint a linkeket automatikusan átlép a program, ha csak nemhasználjuk a --force kapcsolót.

A -c kapcsoló:

c –convmode konverziósmód1.

Módok a következők lehetnek:

asciimac7bitiso

Példák:

unix2dos a.txt -c 7bit b.txt

unix2dos -c ascii a.txt -c 7bit b.txt

unix2dos < in.txt | iconv -f ISO-8859-1 -t CP850 > out.txt

iconv

Az iconv parancs állományok átkonvertálása más karakterkódolásra.

A használható karakterkódolások a -l kapcsolóval kérdezhetők le:

iconv -l

Milyen ANSI kódolások támogatottak:

iconv -l | grep -i ansi

Az eredmény ilyen lehet:

ANSI_X3.4-1968//ANSI_X3.4-1986//ANSI_X3.4//ANSI_X3.110-1983//ANSI_X3.110//MS-ANSI//

Használatra példa:

iconv -f ISO8859-2 -t UTF8 -o kimenet.txt bemenet.txt

Page 103: Linux Parancssor

2015/12/08 21:23 103/107 Linux parancssor

SzitWiki - http://szit.hu/

Vagy:

iconv -f MS-ANSI -t UTF8 -o kimenet.txt bemenet.txt

Ha nem tudjuk milyen kódolású amit szeretnénk átkódolni, használhatjuk a file parancsot:

file szoveg.txtszoveg.txt: UTF-8 Unicode text, with CRLF line terminators

file

A file utasítással információt kérhetünk állományokról.

Milyen kódolású egy fájl:

file -i /etc/apache2/apache2.conf

arch

A számítógép architektúrájának kiíratása. Az eredmény például i686. Megegyezik az uname -mparanccsal.

arch

uname -m

uptime

A gép mennyi ideje megy. Eredmény:

10:37:00 up 1:06, 3 users, load average: 0,79, 0,82, 0,71

A load average értéke például 0.01 0.01 1.00, a processzorok átlagos elérési ideje.

első szám: rövid távonmásodik szám: közép távonharmadik szám: hosszú távon

Ha 1.00-nál a szám kisebb akkor a processzor mindent azonnal kiszolgál. Ha nagyobb mint 1.00,akkor a proceszeknek várakoznia kell.

Ellenőrző összeg

CRC összeg számítás:

Page 104: Linux Parancssor

Last update: 2015/12/08 20:38 oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor

http://szit.hu/ Printed on 2015/12/08 21:23

cksum fájlnév

Ellenőrző összeg számítása, BSD és System V algoritmusai:

sum fájlnév

MD5 ellenőrző összeg készítése:

md5sum fájlnév.kit > md5szam.txt

MD5 ellenőrzése:

md5sum -v -c md5szam.txt

A -v hatására kiírja ha az állomány rendben: OK Ha nem ok, akkor: FAILED

Önkicsomagoló állományok készítése

Az önkicsomagoló állomány mindig a már tömörített állományból készíthető. A tömörítendőállományokat célszerű egy könyvtárba tenni.

zip -r vmi.zip konyvatVagyAllomany | cat /usr/bin/unzipsfx vmi.zip > vmi.sfx

A zip esetén a -r rekurzívan az alkönyvtárakra is vonatkozik. vmi.zip esetén a kiterjeszétst nemkötelező megadni.

Az unzipsfx a Debian GNU/Linux 3.0-ban a uzip csomagban van.

A másik program shell típusú önkicsomagoló archív létrehozására:

shar -z állományok* > archinnev.shar

A -z kapcsoló a gzip tömörítésre ad utasítást.

A shar a Debain 3.0-ban a sharutils része.

Minimális személyes kalendárium

A when nevű parancs egy minimális személyi kalendáriumot valósít meg. Letölthető a weboldaláról,git tárolóból.

Debian alapú rendszereken csomagból telepíthetjük:

apt-get install when

Telepítés után kapunk egy „when” parancsot.

Első indításkor a következő üzenetet kapjuk:

Page 105: Linux Parancssor

2015/12/08 21:23 105/107 Linux parancssor

SzitWiki - http://szit.hu/

You can now set up your calendar. This involves creating a directory~/.when, and makinga couple of files in it. If you want to do this, type y and hit return.

Az üzenet szerint beállíthatjuk a kalendáriumunkat, amihez létre kell hozni egy ~/.when könyvtárat.Ha ezt az üzenet megértettük, akkor várja, hogy „y” leütésével nyugtázzuk, majd közli mi azalapértelmezett szövegszerkesztő.

yYou can edit your calendar file using your favorite editor. Please enter thecommand youwant to use to run your editor, or hit return to accept this default: emacs -nw

Én beírtam az „mcedit” parancsot, mivel ezt a szövegszerkesztőt szeretem.

mceditYou can now add items to your calendar file. Do ``when --help'' for moreinformation.Szo 2015 szept 26 4:50

A kalendárium szerkesztése ezek után:

when e

Ha az előbb a mcedit szövegszerkesztőt beírtuk, akkor azonnal el is indul, amely szerkesztiszámunkra a ~/.when/calendar állományt.

Írjunk be egy teszteseményt:

szept 26 Tesztesemény

A csillag az jelenti az év minden napján. A szeptembert magyarul beírva is értelmezi a program ahónapot. A napot 26-ra állítottam a példában. Mentés után lépjünk ki a szerkesztőből és futtassuk a„when” parancsot.

$ whenSzo 2015 szept 26 4:52

today 2015 szept 26 Tesztesemény

A program kiírja az aktuális napot, és az aktuális eseményt, ha van ilyen bejegyezve, a fenti példáhozhasonlóan.

SMB megosztás elérése

Egy állomány feltöltése:

Page 106: Linux Parancssor

Last update: 2015/12/08 20:38 oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor

http://szit.hu/ Printed on 2015/12/08 21:23

smbclient --user kati -c "put vmi.txt" //192.168.1.4/homes

A kati felhasználó könyvtárába töltjük fel a vmi.txt fájlt. Ha az aktuális felhasználó (ahol kiadjuk asmbclient parancsot) megegyezik a megosztás felhasználónevével, akkor nem kötelező a --userkapcsoló:

smbclient -c "put vmi.txt" //192.168.1.4/homes

Elérés interaktív módon:

smbclient //192.168.1.4/homes

Vagy van amikor a szerveren a megosztás csak „home”:

smbclient //172.16.0.1/home

Esetleg így:

smbclient --user joska //server/home

Általános kapcsolókkapcsoló Leírás

-U --user=felhasználónév Felhasználónév megadása-L --list A távoli gép szolgáltatásait mutatja-W --workgroup=tartománynév SMB csoport megadása-D --directory kezdőkönyvtár Kezdő könyvtár megadása

-c --command parancsszöveg Parancs végrehajtása a távoli szerveren.Kapcsolat nélkül szoktuk használni

Általánosan használt parancsok

Parancs Leírás

help [parancs] vagy ? [parancs] Az összes parancs megjelenítése,vagy egy adott parancs elírása

history Parancstörténet megjelenítése

cd [könyvtár] az aktuális könyvtár cseréje; argumentum nélkül az aktuáliskönyvtárat adja

lcd <könyvtár> a helyi könyvtár cseréjeput <helyi név> [távoli név] fájl feltöltéseget <távoli név> [helyi név] fájl letöltésels [maszk] az aktuális könyvtár tartalmamget <maszk> minden maszkra illeszkedő fájl letöltésemput <maszk> minden maszkra illeszkedő fájl feltöltése

recurse a rekurzív fel és letöltés engedélyezése az mget/mput parancsokesetén

promptVárakozás minden egyes fájl vagy könyvtár esetén,amikor mget/mput parancsot használjuk.Alapértelmezetten engedélyezve van.

!<helyi parancs> helyi parancs futtatása és a kimenet elkapása

Page 107: Linux Parancssor

2015/12/08 21:23 107/107 Linux parancssor

SzitWiki - http://szit.hu/

Parancs Leíráslistconnect Az aktuális kapcsolatról ad információt

more <fájlnév> Távoli fájl lekérése és tartalmának megmutatásaa PAGER környezetei változóban beállított lapozóval

rename <régi fájlnév> <újfájlnév>

Fájlok átnevezése az aktuáliskönyvtárban, a távoli gépen

rm <maszk> Az összes maszkkal egyező fájl törlése a távoli szerverenrmdir <könyvtárnév> Adott könyvtár törléseshowconnect Aktuális kapcsolat megjelenítése

lowercase Távoli fájlnevek kisbetűssé alakítása a get és mget parancsokszámára.

Utószó

Ezt a könyvet, jegyzetet (Ez az egy lap: Linux parancssor) még 2009-ben itt kezdtem el írni:

http://hu.wikibooks.org/wiki/Linux/Parancssor

Itt azonban kötekedett az ottani „vezető”, hogy hogyan alakítsam a tartalmat, mit írjak még. Eztmegelégeltem. Tulajdonképpen akkor gondoltam, hogy szükség lenne egy saját wikire. Íme a SzitWiki(http://szit.hu). Remélem másnak is hasznára válik. Az oktatás oldalon megtalálható az e-mail címem,szívesen veszek visszajelzéseket.

Külső linkek

http://www.gnu.org/software/bash/manual/html_node/http://hu.opensuse.org/Dokument%C3%A1ci%C3%B3/SL9.3/Rendszer/A_Linux_f%C3%A1jlrendszereihttp://www.thegeekstuff.com/2012/02/linux-fuser-command/http://thesmithfam.org/blog/2006/05/23/bash-socket-programming-with-devtcp-2/http://content.hccfl.edu/pollock/Unix/FindCmd.htm (find)http://linux.about.com/od/commands/a/blcmdl1_findx.htm (find)http://linuxbox.hu/find (find)http://www.comptechdoc.org/os/linux/programming/linux_pgsignals.html (Jelzések)http://www.nano-editor.org (Nano)http://codeidol.com/security/samba/Unix-Clients/smbclient/ (smbclient)

From:http://szit.hu/ - SzitWiki

Permanent link:http://szit.hu/doku.php?id=oktatas:linux:parancssor

Last update: 2015/12/08 20:38