2016/06/09 13:15
1/108
Linux parancssor
< 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
SzitWiki - http://szit.hu/
Last update: 2016/05/31 13:32
oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor
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 a jelszavunk 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 a jelenlegi jelszót, majd kétszer az új jelszót. Rendszergazdaként, azaz a root felhasználóval mások jelszavát is megváltoztathatjuk. Ehhez adjuk meg a kívánt felhasználónevet a passwd parancs paramétereként. A Linuxos rendszer úgy van összeállítva, hogy a rendszergazda nem tudja megmondani számodra a jelszavadat, ha már megváltoztattad. Ha elveszett, akkor legfeljebb újat tud adni.
A joska felhasználó jelszavának megváltoztatása Ha te magad is rendszergazda vagy a Linuxban, mert mondjuk most telepítetted, akkor például a joska felhasználónak a következő módon tudod megváltoztatni a jelszavát: passwd joska Ez a parancs persze csak rendszergazdaként belépve fog sikerülni, vagy ha te vagy a joska felhasználó.
Kijelentkezés Ha valahova bejelentkeztünk, akkor ki is kell tudnunk jönni onnan. Nézzük, hogyan lehet szabályosan kijelentkezni a rendszerből. http://szit.hu/
Printed on 2016/06/09 13:15
2016/06/09 13:15
3/108
Linux parancssor
A rendszerből kijelentkezni a logout paranccsal lehetséges: logout A kijelentkezés további parancsokkal is lehetséges. Az egyik az exit parancs, a másik egy billentyűkombináció: Ctrl+D. Az exit és logout között az a különbség, ha vannak félretett munkák (jobok), akkor az exit nem lép ki. A logout mindenképpen kilép. A linuxos rendszerekben a Ctrl+D billentyűkombináció fájlvége jel küldésére is használatos néhány parancs illetve, program esetén. Ha ilyen programmal dolgozunk, előfordulhat, hogy csak fájlvége jelet akartunk küldeni, de véletlenül kétszer nyomtuk meg a Ctrl-D billentyűkombinációt, így azonnal ki is jelentkeztünk. Egy Linuxos rendszeren ha grafikus felületet is telepítettünk, akkor lehetőség van a grafikus bejelentkezésre is, de mi most csak parancssorral foglalkozunk ebben a részben.
Megjegyzés Ha valaki feltelepítette a grafikus felületet és szeretne parancssorra átkapcsolni, a következőket kell tudnia. Egy linuxos rendszer alapértelmezetten 6 azaz hat darab karakteres (vagy konzolos) felületen ad belépési lehetőségeket. Ezeket terminálnak hívjuk. Vagyis van hat darab terminálunk. Indulás után az 1-s terminálon vagyunk. A többi terminált az F2, F3, stb. funkcióbillentyűkkel érhetjük el, egészen F6-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 darab grafikus felülete elindítását is. A grafikus felület és egy XDM, KDM vagy GDM telepítése után a hat grafikus felületből egy automatikusan elindul. Ha karakteres terminálban vagyunk ezt az Alt+F7 billentyűkombinációval érhetjük el. Grafikus felületről karakteresre kapcsolás esetén kell a Ctrl billentyű 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égtelen sokat indíthatunk. Ha GNOME grafikus környezetet telepítettünk, akkor a virtuális terminálunk lehet rendszergazdai és felhasználói. Elérésük: Alkalmazások → Kellékek → Terminál Alkalmazá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 SzitWiki - http://szit.hu/
Last update: 2016/05/31 13:32
oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor
Például Knoppix Derítse ki, milyen felhasználónévvel lehet belépni a rendszerbe
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 egy dollárjelet ($) jelenít meg a rendszer, a rendszergazdának pedig egy kettős-keresztet (#). A várakozási jel ki van bővítve némi információval. Tartalmazza a bejelentkezett felhasználónevet, a gép nevét és az aktuális könyvtárat. joska@iskolazo:~$
Felhasználó várakozási jele joska@iskolazo:~$ Ez a fajta várakozási jel a Debian GNU/Linuxra jellemző, de általában hasonló a többi linuxos rendszerben is. A felhasználónevet egy szeparátor követi (@). A gépnevet szintén, amely egy kettőspont (:). A kettőspont után egy tilde karakter (~) látható, amely a felhasználó saját könyvtárát jelképezi. A joska felhasználó esetében ez a /home/joska. A parancsokat a Bash nevű parancsértelmező várja, amelyre a dollárjel is utal.
Root felhasználó promptja A root felhasználónak az alapértelmezett várakozási jele eltérő. A várakozási jelben az utolsó karakter egy kettős kereszt („#”). root@iskolazo:~# A rendszergazda, azaz root felhasználó is a bash parancsértelmezőt használja, viszont ő a rendszer teljes jogú felhasználója. Éppen ezért ne használjuk felhasználói feladatokra. Csak akkor használjuk ezt a hozzáférést, ha valóban szükség van a rendszergazdai jogokra.
A PS1 Minden operációs rendszer úgynevezett változókban tárol információkat a programok számára. Mivel ezek a változók a programok környezetéből elérhetők, környezeti változóknak is hívjuk őket. A PS1 is egy ilyen környezeti változó. Bármely környezeti változónak a tartalmát megtekinthetjük az echo parancs segítségével. Ilyenkor a környezeti változó neve elé egy dollárjelet kell írni: $PS1. Az echo paranccsal ekkor így jeleníthetjük meg:
http://szit.hu/
Printed on 2016/06/09 13:15
2016/06/09 13:15
5/108
Linux parancssor
echo $PS1
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ós rendszerről vagy programjainkról tárolnak információkat. A környezet változók a rendszer indulása utá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 less paranccsal: set | less A grep parancs segítségével, megmondhatjuk, hogy csak azokat a sorokat szeretném látni, ahol szerepel, például a PATH szó:
SzitWiki - http://szit.hu/
Last update: 2016/05/31 13:32
oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor
set | grep PATH Magunk is beállíthatunk környezeti változókat: 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ított folyamatok is látni fogják a TEST_VAR változót. Ha nem használom az export változót, akkor ezek a folyamatok 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 ami rendelkezé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 export paranccsal: export BARAT_VAR=Feri Indítsunk egy xterm terminált: xterm Majd ebben a terminálban nézzük meg a változónkat: http://szit.hu/
Printed on 2016/06/09 13:15
2016/06/09 13:15
7/108
Linux parancssor
echo $BARAT_VAR Itt is látszik a tartalma.
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 egy szöveget ír a képernyőre. echo "Helló Világ!" Az echo a szöveg végén egy sortörést is a képernyőre küld, amiről lebeszélhető a -n kapcsolóval. echo -n "Helló Világ!" Különleges karakterek is engedélyezhetők a -e kapcsolóval: echo -e "Helló\nVilág!" Vegyük észre ez utóbbi példánkban a „\n” különleges karaktereket. Ez például sortörést jelet küld a képernyőre. Különleges karakterek táblázata: Karakter Jelentés \a csengőhang konzolos felületen \b egy karakter törlése visszafele \n sortörés \r kocsi vissza \c nem ír ki újsor karaktert \t vízszintes tabulátor \v függőleges tabulátor \\ backslash \nnn a karakter ASCII kódja nnn (oktálisan)
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 az aktuális könyvtárral. A PS1 környezeti változóban van leírva ez a forma. Ha megnézzük a fenti parancs eredményét, akkor ehhez hasonlót kell látnunk Debian GNU/Linux 6, 7 és 8 verzió esetén: SzitWiki - http://szit.hu/
Last update: 2016/05/31 13:32
oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor
Konzolon: ${debian_chroot:+($debian_chroot)}\u@\h:\w\$ 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 export paranccsal szokás beállítani, mert ez teszi lehetővé, hogy más folyamatok indítása után is érvényes legyen a beállítás. Az alábbi beállítás a terminál színezését mutatja be: export PS1='${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ét kiíratjuk azt.
Egyszerű prompt A fenti prompt nagyon hosszú tud lenni ha van egy nagyon hosszú könyvtárútvonalunk. Ilyenkor beá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örnyezeti vá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: "
http://szit.hu/
Printed on 2016/06/09 13:15
2016/06/09 13:15
9/108
Linux parancssor
Prompt beállítások \u Felhasználónév \h Hostnév \w Aktuális könyvtár 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 whoami parancsot. Ki vagyok én? whoami Ez a parancs kiírja a felhasználónevünket. Például:
SzitWiki - http://szit.hu/
Last update: 2016/05/31 13:32
oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor
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 A kimenet ehhez hasonló lehet: uid=1000(joska) gid=1000(joska) csoportok=1000(joska), 4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),108(lpadmin), 125(sambashare),126(vboxusers),1002(teachers) Jóval több információt ad. Megmondja milyen csoportokba tartozunk felhasználóként. Az id parancs az -un kapcsolóval úgy viselkedik mint a whoami parancs: id -un
Mi történt a rendszerben Általában szeretnénk tudni ki volt utoljára bejelentkezve, vagy mikor használták utoljára a hozzáférésünket (használata-e illetéktelen). Ebben segít a last parancs: last A last parancs kimenete persze túl fut a képernyőn, ha már sokszor használtuk a Linuxot. Ezt tördelhetjük a more paranccsal így: last | more Használhatjuk ebből a célból a less parancsot is: last | less A less parancs felületéből egy billentyűvel tudunk kilépni: Q
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:
http://szit.hu/
Printed on 2016/06/09 13:15
2016/06/09 13:15
11/108
Linux parancssor
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 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: date 2013. jan.
8., kedd, 20.39.43 CET
A dátum és időbeállításokról később bővebben is lesz szó.
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áltoztattunk várakozásijelen és már nem az alapértelmezett könyvtárban állunk, szeretnénk tudni az aktuális könyvtár nevét, útvonalastól együtt. Ezt a pwd parancs begépelésével tehetjük meg. pwd A joska nevű felhasználó például ezt láthatja, ha a saját könyvtárában áll: /home/joska
SzitWiki - http://szit.hu/
Last update: 2016/05/31 13:32
oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor
A könyvtár tartalmának listázása Általában szeretnénk a könyvtár tartalmát listázni. Szeretnénk látni milyen újabb könyvtárakat és fájlokat tartalmaz. Erre a célra az „ls” parancsot használhatjuk. ls alapok ls Az ls kapcsolók nélkül kiadva az aktuális könyvtár tartalmát mutatja. Ha először lépünk be egy linuxos hozzáférésünkre, akkor valószínűleg nem találunk a saját könyvtárunkban állományt. A rejtett állományok abban különböznek a többitől, hogy ponttal (.) kezdődnek. Ha először lépünk be egy hozzáférésünkre valószínűleg már vannak rejtett fájlok, csak nem látjuk őket. A -a kapcsolóval megtekinthetők a rejtett fájlok is: ls -a Egy következő kapcsoló a fájlokról a lehető legtöbb információt adja számunkra, ez a -l. Long azaz hosszú kimenet kapunk a kapcsolóval: ls -l Ha még nincs más könyvtárunk használjuk az „a” kapcsolót is: ls -la Az eredmény valami ilyesmi lehet: összesen 28 drwxr-xr-x 3 drwxr-xr-x 4 -rw------- 1 -rw-r--r-- 1 -rw-r--r-- 1 drwx------ 2 -rw-r--r-- 1
joska root joska joska joska joska joska
joska root joska joska joska joska joska
4096 4096 92 220 3184 4096 675
febr dec febr dec dec febr dec
24 13 25 13 13 24 13
23.49 18.37 00.04 18.37 18.37 23.49 18.37
. .. .bash_history .bash_logout .bashrc .mc .profile
Az ls parancsnak megadható, hogy melyik könyvtárat listázza számunkra. A gyökér könyvtár listázása a következő módon történhet: ls / Vagy a /bin könyvtár listázása: ls /bin
http://szit.hu/
Printed on 2016/06/09 13:15
2016/06/09 13:15
13/108
Linux parancssor
Az ls hosszú kimenete Fentebb már láttuk a -l kapcsoló hatását (-a -val együtt): összesen 28 drwxr-xr-x 3 drwxr-xr-x 4 -rw------- 1 -rw-r--r-- 1 -rw-r--r-- 1 drwx------ 2 -rw-r--r-- 1
joska root joska joska joska joska joska
joska root joska joska joska joska joska
4096 4096 92 220 3184 4096 675
febr dec febr dec dec febr dec
24 13 25 13 13 24 13
23.49 18.37 00.04 18.37 18.37 23.49 18.37
. .. .bash_history .bash_logout .bashrc .mc .profile
A kimenet első elemének a neve egy pont (.), a másodiknak pedig két pont (..). Az egy pont magában az aktuális könyvtárat jelképezi, a két pont egymás után pedig a szülőkönyvtárat jelképezi. A parancs először az állományról kiírja, hogy milyen fajta állomány. A Unix alapú rendszerekben a könyvtárak is állományként vannak kezelve, ezért a könyvtárat egy speciális állománynak is tekinthetjük. Így van ez a számítógép hardver eszközeivel is. Minden eszköz egy állományként érhető el a rendszerben. Ezért szoktuk mondani, hogy a Linuxban minden állomány. az állomány típusa
rw-r--r-jogok
1 linkek száma
joska
joska 3184
tulajdonos csoport méret
dec 13 18.37 utolsó módosítás dátuma
.bashrc az állomány neve
Minden sor 10 darab karakterrel kezdődik. Ebből az első az állomány típusa, a többi kilenc az állományhoz tartozó jogokat mutatja. A következő szám az állományra mutató linkek számát mutatja. A linkekről lásd később a link létrehozása című részt. A linkek száma után az állomány tulajdonosa, amit a csoport neve követ. A Debian GNU/Linux rendszerekben egy felhasználó létrehozásakor létrejön egy a nevével azonos csoport is. Így lehet, hogy a csoportnév megegyezik a tulajdonos nevével. A következő szám az állomány mérete. Könyvtárak esetén itt a blokk mérettét látjuk. Ezt követi az utolsó módosítás dátuma, és végül az állomány neve. Ha listázott elem egy könyvtár, akkor a méret résznél a fájlrendszerben használatos blokkméret fog megjelenni. Könyvtárak és fájlok megkülönböztetése A könyvtárak és fájlok a -l kapcsolóval megkülönböztethetők, de előfordul, hogy ezen kapcsoló nélkül is szeretném látni, hogy mivel van dolgom. Ezt a -F kapcsolóval tehetem meg: ls -F
SzitWiki - http://szit.hu/
Last update: 2016/05/31 13:32
oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor
Könyvtár méret A fájlok és könyvtárak számára legkisebb lefoglalható egység a fájlrendszertől függ. ext3 és ext4 fájlrendszeren ez 4096 bytes. Ha futtatjuk a ls -ld parancsot, akkor látjuk az adott könyvtár számára mennyi helyet foglalunk: ls -ld munka A kimenet pedig ehhez hasonló lehet: drwxr-xr-x joska joska 4096 márc
9 10.26 munka/
A könyvtár számára a 4096 a kezdeti lefoglalt hely (fájlok számára is). A könyvtárban eltárolt fájlok sokasodása után ez nőhet, a következő például 4096 valamelyik szorzatára. Az alábbi parancs létrehoz néhány fájlt: mkdir munka cd munka Hozzunk létre 200 fájlt: for ((i=; i<200; i++)); do touch aaaaaaaaaa_$i; done Nézzük meg a ls -ld kimenetét a könyvtáron: ls -ld . drwxr-xr-x joska joska 12288 márc 12 07.03 Ezek után az aktuális könyvtár listázásánál a méret: 12288 Ne felejtsük el, hogy más fájlrendszernél ezek az értékek eltérhetnek. Külön bejegyzések Egy könyvtár vagy fájl listázása esetén a jogok után ritka esetben megjelenhet plusz (+) vagy pont (.) karakter: drwxr-xr-x+ joska joska 12288 márc 12 07.03 Nev vagy: drwxr-xr-x. joska joska 12288 márc 12 07.03 Nev A plusz (+) karakter arra utal, hogy a fájlhoz (vagy könyvtárhoz) külön ACL bejegyzések is tartoznak. Ha pont (.) karakter van a jogok után, akkor ez SELinux címkék bejegyzésére utal. Ha mindkettő van (ACL és SELinux címke is), akkor a plusz (+) karakter látszik. További információk http://szit.hu/
Printed on 2016/06/09 13:15
2016/06/09 13:15
15/108
Linux parancssor
az ACL és az SELinux lapokon.
Könyvtár létrehozása Könyvtárakat az „mkdir” paranccsal hozhatunk létre. Az mk, a make szóból, a dir pedig a directory szóból származik. Paraméterként több könyvtárat is megadhatunk. A linuxos, illetve unixos rendszerek kis és nagybetű érzékenyek. A következő példában szereplő nevek két külön könyvtárat jelölnek: Informatika informatika A parancs szintaxisa: mkdir konyvtar_neve ... A mai Linuxok már UTF-8-as kódolást használják a rendszer minden szintjén, így használhatunk ékezetes könyvtárneveket is. Ezzel azonban gond lehet, ha más rendszerre visszük a könyvtárainkat. Egyszerre több könyvtárat is létrehozhatunk, ha szóközzel tagolva felsoroljuk, vagy kapcsos zárójelek között vesszővel tagoljuk azokat. Utóbbi esetben szóköz nem lehet köztük: mkdir elso masodik harmadik mkdir {elso,masodik,harmadik} Ha útvonalat is megadunk egy könyvtár létrehozásánál a -p kapcsoló segítségével, az útvonalban szereplő nem létező könyvtárak automatikusan létrejönnek: mkdir -p /home/joska/munka/dolgozok/human/gizi
Könyvtárcsere Ha már 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 a saját könyvtárunk a /home/joska. A „pwd” parancs tanúsága szerint pedig ebben a könyvtárban állunk. Kiadtuk a könyvtárlétrehozás parancsát: mkdir jarmu Szeretnénk az új könyvtárba belépni, vagyis könyvtárat cserélni. Erre a „cd” parancs ad lehetőséget: cd jarmu A „pwd” paranccsal ellenőrizzük a könyvtárváltás meglétét. A „cd” parancs első „c” betűje a „change” szóból van, a „d” betű pedig a „directory” szóból. SzitWiki - http://szit.hu/
Last update: 2016/05/31 13:32
oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor
Ha jól dolgoztunk a pwd parancs kimenete most a következő: /home/joska/jarmu Most a „jarmu” könyvtáron belül hozzunk létre egy „szeker” nevű könyvtárat: mkdir szeker Lépjünk bele: cd szeker Ezek után a pwd kimenete: /home/joska/jarmu/szeker Most vissza kellene lépni az előző könyvtárba. Az előző könyvtárat két pont jelképezi: .. Másként, ha most éppen a /home/joska/jarmu/szeker könyvtárban állunk akkor a két pont a /home/joska/jarmu könyvtárat jelképezi. Ha szeretnénk visszalépni a jarmu könyvtárba, akkor megtehetjük, hogy a teljes útvonal megadásával így lépek vissza: cd /home/joska/jarmu De ugyanezt az eredményt érhetjük el, ha cd paranccsal használjuk a két pontot: cd .. Ez utóbbi parancs bármely könyvtárban is állunk, azt eredményezi, hogy egy könyvtárral feljebb kerülünk. Ugyanígy használhatjuk a gyökérkönyvtár jelét a fájlrendszer gyökerébe jutáshoz: cd / Ezzel a fájlrendszer gyökerébe jutunk. Van még egy különleges karakter, amely a saját könyvtárunkat jelképezi. Ez a következő: ~ Tilde karakternek hívják. Bármely könyvtárban is állok a könyvtárstruktúrában, ha kiadom a következő parancsot, a saját könyvtárunkba fogok jutni: cd ~ Vegyük észre, hogy a várakozási jelben is szerepel egy tilde karakter (Legtöbb linuxos terjesztésben így van beállítva a várakozási jel). http://szit.hu/
Printed on 2016/06/09 13:15
2016/06/09 13:15
17/108
Linux parancssor
Könyvtár törlése Az rmdir parancs segítségével minden megadott üres könyvtárat törölhetünk: rmdir konyvtarnev Itt is használható a -p kapcsoló. A parancs így a legbelső könyvtárat törli, ha az üres, és utána a többit, egyenként. Legyen a példa kedvéért egy ilyen könyvtárszerkezet: egy/ketto/harom Kiadjuk a törlésre az utasítást: rmdir egy/ketto/harom A parancs először törli a harom könyvtárat, ha az üres. Utána a ketto könyvtárat, ha az előző sikeres volt és a ketto üres. Végül ha az előző kettő sikeres volt, akkor törli az egy könyvtárat is.
Könyvtár átnevezése A könyvtár átnevezését az mv paranccsal hajtjuk végre, amely az angol move szóból származik. Magyarul mozgatás jelent. A parancsot valójában arra találták ki, hogy egy állományt egy másik helyre mozgassunk. Viszont ha a mozgatás helye a kiindulási pont, akkor csak átnevezés történik. Szintaxisa a következő: mv eredetikonyvtar ujkonyvtar
Könyvtár átmozgatása mv konyvtar001 konyvtar002/ A konyvtar002 könyvtárba mozgatjuk a konyvtár001 nevű könyvtárat.
Könyvtárak másolása cp -R dir1 dir2 Ha a dir2 már egy létező könyvtár, akkor annak tartalmába másol! Ha nincs dir2 könyvtára akkor az aktuális könyvtárban létrehozza a dir2 könyvtárat. A -R kapcsoló hatására valójában rekurzív másolásra adunk parancsot, de könyvtármásolásnál éppen ezt szeretnénk.
SzitWiki - http://szit.hu/
Last update: 2016/05/31 13:32
oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor
Könyvtárnevek mérete A könyvtárnevek maximális hossza 256 bájt. De az ékezetesekkel duplán kell számolnunk.
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: Citroen Daewoo Fiat Ford Lada Mercedes Nissan Opel Peugeot
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, és abból újabb könyvtárak, alkönyvtárak nyílnak. A kiindulópontot azaz a gyökeret egyetlen karakterrel jelezzü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ár alkönyvtáraiban érhetők el. A rendszergazda azokat bárhova felcsatolhatja, igaz van mindegyiknek egy 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ér kö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 és egy 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:
http://szit.hu/
Printed on 2016/06/09 13:15
2016/06/09 13:15
19/108
Linux parancssor
/home/mari János felhasználó könyvtára: /home/janos 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ől nyí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 SzitWiki - http://szit.hu/
Last update: 2016/05/31 13:32
oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor
A „var” könyvtárból nyíljon egy „log” nevű könyvtár amelyben a naplófájlok vannak: / |--home | |--janos | | |--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 / bin boot dev hda0 hda1 etc http://szit.hu/
Printed on 2016/06/09 13:15
2016/06/09 13:15
21/108
Linux parancssor
home jozsi mari kati eszter peter lib media mnt opt proc root sbin srv sys tmp usr bin include lib local sbin share var log mail www 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ában leké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 amit nem 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. SzitWiki - http://szit.hu/
Last update: 2016/05/31 13:32
oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor
/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/ 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ét megváltoztassuk, de ha egy állomány nem létezik amelynek időbélyegét aktualizálni szeretnénk, akkor azt létrehozza. Természetesen a fájl tartalma üres lesz. A touch parancs nem kérdez semmit, csak elkészíti az állományt: touch fajlneve.txt Az echo paranccsal is létrehozhatunk fájlokat. Ekkor az echo után írt „Szöveg” a fájlba kerül. echo "alma" > gyumolcsok.txt
Fájlok törlése Egy fájl törlése: rm fajlnev Törlés rekurzívan: rm -r fajlnev http://szit.hu/
Printed on 2016/06/09 13:15
2016/06/09 13:15
23/108
Linux parancssor
Az rm parancs alapvetően fájlok törlésére lett kitalálva, ezért könyvtárat csak úgy tudunk törölni vele, ha beállítjuk a rekurzívitást. A könyvtár és tartalmának törlése: rm -r könyvtárnév Az egész könyvtárfa törlése a gyökértől kiindulva: rm -r /
Fájlok átnevezése mv fajl001 fajl002 Az mv parancs valójában a fájlok mozgatására lett kitalálva, de ha nem adunk meg könyvtárat, vagyis ugyanabba a könyvtárba mozgatunk, akkor tulajdonképpen átnevezés történik.
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/
SzitWiki - http://szit.hu/
Last update: 2016/05/31 13:32
oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor
Fájlok tartalmának megtekintése Gyakran szükség van arra, hogy gyorsan belenézzünk egy fájlba. Erre használható például a cat parancs: cat fajlnev
Fájlok darabolása split -b 1440000 fajlnev Régebben ha floppy lemezre akartunk másolni, pont ekkora méretre kellett darabolnunk a fájlt. A fenti parancs segítségével a fajlnev nevű állományt 1440000 byte nagyságú részekre lett feldarabolva. A fájlokat automatikusan elnevezi ehhez hasonlóan: xaa xab xac stb
Darabolt fájlok összefűzése A darabolt fájlokat előbb-utóbb szeretnénk összeszerkeszteni. Ezt a cat paranccsal tehetjük meg az alábbi formában: cat x* >> fajlnev A csillag, azt jelenti, hogy minden könyvtár ami x-el kezdődik.
Fájlok szerkesztése Fájlok szerkesztésére nagyon sok eszköz áll rendelkezésre. Lehet parancssorból a sed paranccsal szerkeszteni. Vagy lehet erre a célra kitalált szövegszerkesztőket használni. Legyen például a virag.txt nevű állomány amit szeretnénk szerkeszteni: vi virag.txt vagy nano virag.txt vagy mcedit virag.txt Az Midnight Commander beépített szövegszerkesztője. Valójában egy szimbolikus link az mc http://szit.hu/
Printed on 2016/06/09 13:15
2016/06/09 13:15
25/108
Linux parancssor
parancsra. Ebből következik, hogy a használatához az „mc” csomagnak telepítve kell lennie a gépünkön.
Nano Billentyűk A nano szövegszerkesztő alapvető billentyűkombinációi Ctrl gombbal működnek. Ezt maga a szövegszerkesztő is tudatja velünk, de a Ctrl helyett egy „^” karaktert látunk mindig. A mentés például a Ctrl+O billentyűkombinációval történhet, amit így látunk: ^O Vagy a kilépés Ctrl + X billentyűkombináció, amelyet így látunk: ^X Szerkesztés Meg kell mondani, hogy most kijelölés jön. A kijelölés végét nem kell jelezni (ellentétben az mceditel). Ha kijelöltük azt amit vágólapra szeretnénk tenni, akkor el kell dönteni ezt hogyan szeretnénk. A kijelölt szöveg kivágásával, vagy másolásával. Ennek megfelelő billentyűkombinációt nyomunk. Alt + 6 Kijelölés kezdete Ctrl + K Kivágás Ctrl + 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ör helyben, 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. Ugyanakkor létrejön egy bejegyezés, amelyet inode néven említjük. Az inode nevű egységben van leírva a fájl időbélyege, mérete, tulajdonosa, csoportja, jogok, stb. Az inodeban van feljegyezve, hogy hol helyezkedik 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öbbet SzitWiki - http://szit.hu/
Last update: 2016/05/31 13:32
oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor
létrehozhatunk egy fájlra. Ennek módja a következő: ln fajlnev linkfajlra 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ése csak 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 amelyre csak 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: Size: Device: Access: Access: http://szit.hu/
"log.txt" Blocks: IO Block: 4096 szabályos üres fájl 802h/2050d Inode: 1461005 Links: 1 (0644/-rw-r--r--) Uid: ( 1000/ andras) Gid: ( 1000/ andras) 2012-01-15 23:00:17.365731988 +0100 Printed on 2016/06/09 13:15
2016/06/09 13:15
27/108
Linux parancssor
Modify: 2011-08-09 22:35:50.584228887 +0200 Change: 2011-08-09 22:35:50.584228887 +0200 File Size Blocks IO
A fájl neve A fájl mérete A fájl által használt blokkok száma (512 bájtos blokkokkal számol!) IO blokkméret a fájl számára szabályos fájl, szabályos üres fájl könyvtár fájltípus szimbolikus link foglalat speciális karakterfájl speciális blokkfájl Device Az eszköz neve hexadecimális és decimális formában. Inode A fájl egyedi azonosítója a fájlrendszerben Links Linkek száma a fájlra Access Hozzáférés szám és karakterformában. Uid Tulajdonos Gid Csoport Access Utolsó fájlolvasási időpont Modify A fájl tartalmának utolsó változása Change A fájl inode leírójának utolsó változása stat konyvtarnev Magáról a fájlrendszerről kaphatunk információt a -f kapcsoló megadásával: stat -f fajlnev Például: stat -f log.txt File: "log.txt" ID: 3f4e5580b0204b72 Namelen: 255 Type: ext2/ext3 Block size: 4096 Fundamental block size: 4096 Blocks: Total: 9612076 Free: 4608081 Available: 4119806 Inodes: Total: 2444624 Free: 2115881 Ha írunk a fájlba, akkor módosul a mtime (Modify time), de ezzel együtt a ctime (Change time) is. A ctime viszont módosul még néhány esetben. Ha például módosítom a fájl jogait, vagy tulajdonsát, akkor a ctime érték frissül. A -c vagy a --format kapcsolóval kiírathatjuk (többek között) mit ért (hány bájt-ot) a stat blokkméret alatt: stat --format=%B fajlnev
SzitWiki - http://szit.hu/
Last update: 2016/05/31 13:32
oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor
Fájlok mérete A fájlok lemezen foglalt helyét és méretét tudhatjuk meg a „du” parancs segítségével. A du alapértelmezésként a lemezen elfoglalt helyet mutatja meg blokkméretben. 1 blokkot 1 kibibájt-nak számít, azaz 1024 bájtnak. Ha bájt-ban szeretnénk megkapni pontosan mekkora az állomány mérete, akkor a -b vagy --bytes kapcsolót kell használnunk. Hozzunk létre saját könyvtárunkban egy fájlt: cd ~ echo "Lorem ipsum doloest amet" > lorem.txt Nézzük meg a helyfoglalását: du lorem.txt Az eredmény: 4
lorem.txt
Nem négy bájt. Négy kilóbájt (4 * 1024 bájt). Ennyi helyet foglal a lemezen. A du parancs tehát alapértelmezésben 1024-es blokkokkal számol. Ha be van állítva a POSIXLY_CORRECT környezeti változó, akkor 512 bájtos blokkokkal kell számolnunk. Állítsuk be a változót és nézzük meg újra a parancs kimenetét: set -o posix du 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 http://szit.hu/
Printed on 2016/06/09 13:15
2016/06/09 13:15
29/108
Linux parancssor
vagy: du --bytes lorem.txt 26 bájtot kapunk: 26
lorem.txt
Nézzük meg a stat paranccsal is a lorem.txt lefoglalt blokkméretét. Vegyük észre a különbséget. A stat azt mondja 8 blokk, mert az eleve 512 bájt mérettel számol. Ebből láthatjuk, hogy az adott fájlrendszer blokkmérete 4096 bájt. A teszteléshez létrehozhatunk egy 4096 bájt nagyságú fájlt: dd if=/dev/zero of=teszt.txt bs=1024 count=4 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 a fájl neve. Harmadik verzió: egrep -R "Nagy József" /útvonal/könyvtár SzitWiki - http://szit.hu/
Last update: 2016/05/31 13:32
oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor
A find és grep parancsról később részletesen is szó esik. A locate parancs: locate minta Létezik egy /var/lib/mlocate/mlocate.db nevű adatbázis, amely segít megtalálni állományokat. Az adatbázis a következő paranccsal frissíthető: updatedb
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. Írjon pé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 lehetett terminálként használni. A Linuxot ma leggyakrabban nem nagygépre, hanem egy PC-re telepítjük. A PC-hez pedig egyetlen monitor és billentyűzet kapcsolódik alapesetben. Mi ezt tekintjük most terminá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. Egy Linuxos rendszeren parancssoros felületen 6 helyen léphetünk be. Ezeket teletype névvel illetjük az ASR33 teletype után. Szokás még terminál néven is említeni. http://szit.hu/
Printed on 2016/06/09 13:15
2016/06/09 13:15
31/108
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?
SzitWiki - http://szit.hu/
Linux parancssor
Last update: 2016/05/31 13:32
oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor
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. Esetleg azt is szeretnénk tudni, hogy a parancsokat megvalósító programok valójában hol találhatók. Esetleg szükségünk van egy parancsra de azt sem tudjuk hol, milyen néven keressük. A következő fejezet ezeket 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 kiadott parancsot ő maga fogja-e végrehajtani. Ha nem ismeri, akkor egy külső programot keres, amelyet futtat.
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. Ha telepített rendszer magyar, akkor kereshetek magyar szavakra is. A parancsok kereséséhez egyik lehetséges program az apropos. Használata a könyvtárkezeléssel kapcsolatos parancsok keresése eseté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ár basename (1) chroot (1) chroot (8) cp (1) find (1) ldd (1) ls (1) http://szit.hu/
-
levágja a könyvtárat és a végződést a fájlneve... parancs futtatása eltérő gyökérkönyvtárral megváltoztatja a gyökérkönyvtárat és végrehajt ... fájlok és könyvtárak másolása fájlokat keres egy könyvtárstruktúrában kiírja a program által használt megosztott könyvt... könyvtárak tartalmának listázása Printed on 2016/06/09 13:15
2016/06/09 13:15
mkdir (1) pwd (1) rmdir (1) whois (1)
33/108
-
Linux parancssor
könyvtár létrehozása kiírja az aktuális (munka-) könyvtárat törli az üres könyvtárakat 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 magyarra fordí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 directory alphasort (3) basename (1) bf_compact (1) bf_compact-bdb (1) bf_copy (1) bf_copy-bdb (1) bf_tar (1) direc... bf_tar-bdb (1) direc... bindtextdomain (3) chdir (2) chroot (2) chroot (8) dir... closedir (3) dbus-cleanup-sockets depmod.conf (5) desktop-file-install directory dh_installdeb (1) dh_testdir (1) dir (1) dirfd (3) dirsplit (1)
-
scan a directory for matching entries strip directory and suffix from filenames shell script to compact a bogofilter directory shell script to compact a bogofilter directory shell script to copy a bogofilter working directory shell script to copy a bogofilter working directory shell script to write a tar file of a bogofilter
- shell script to write a tar file of a bogofilter -
set directory containing message catalogs change working directory change root directory run command or interactive shell with special root
- close a directory (1) - clean up leftover sockets in a directory - Configuration file/directory for depmod (8) - install a desktop file to the applications -
install files into the DEBIAN directory test directory before building debian package list directory contents get directory stream file descriptor splits directory into multiple with equal size
-
print name of current/working directory report current working directory of a process read directory entry read a directory read a directory read value of a symbolic link relative to a directory
... pwd (1) pwdx (1) readdir (2) readdir (3) readdir_r (3) readlinkat (2) ... remove (3) renameat (2) rewinddir (3) SzitWiki - http://szit.hu/
- remove a file or directory - rename a file relative to directory file descriptors - reset directory stream
Last update: 2016/05/31 13:32
rmdir (2) ...
oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor
- 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 van kézikönyve, amely leírja annak használatát és persze mindent amit a program dokumentálója jónak lá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öbbet szeretné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 a whatis 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 az is lehet, hogy csak egy karakter kell: -h Ez mindig az adott program írójától függ. A szabvány szerint tö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 parancs amelyik 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ást pedig 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. http://szit.hu/
Printed on 2016/06/09 13:15
2016/06/09 13:15
35/108
Linux parancssor
man ls Fejezetek A kézikönyv, angolul manual, innen a parancs röviden: man. A kézikönyvek 9 fejezetre oszthatók. Ezek: 1. 2. 3. 4. 5. 6. 7. 8. 9.
Futtatható programok vagy shell parancsok Rendszerhívások (a kernel függvényei) Osztott könyvtári függvények Speciális fájlok (rendszerint /dev) Fájlformátumok, konverziók (pl. /etc/passwd) Jétékok Egyéb (makrócsomagok, man(7), groff(7) Rendszer-adminisztrátori parancsok (a root felhasználó számára) Kernel rutinok
A kézikönyvek részei Egy kézikönyv a következő részekre tagolható: NAME - rövid leírás SYNOPSIS - szintaktikai leírás CONFIGURATION - beállítások DESCRIPTION - leírás OPTIONS - kapcsolók EXIT STATUS - kilépési kódok RETURN VALUE - visszatérési érték ERRORS - hibák ENVIRONMENT - környezet FILES - fájlok VERSIONS - verziók CONFORMING TO - egyezések NOTES - megjegyzések BUGS - a program hibái EXAMPLE - példák AUTHORS - tulajdonos SEE 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:
SzitWiki - http://szit.hu/
Last update: 2016/05/31 13:32
oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor
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 magyar nyelvűben nem találjuk a keresett információt (ez előfordulhat, ha például a magyarítást nem frissítették az adott programnál). A Debian GNU/Linux 6.x-es rendszerben például a magyar ps kézikönyv nem tartalmazza a <, N, L, s, l, + státuszok leírását. Az angol nyelvű verzióban azonban megtalá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árom paramétere van. http://szit.hu/
Printed on 2016/06/09 13:15
2016/06/09 13:15
37/108
Linux parancssor
Az argumentumokat kapcsolókra és paraméterekre osztjuk fel. Parancssor parancsnév argumentumok parancsnév kapcsolók paraméterek
Opciók Kapcsolók vagy opciók a parancs nevét követik. Egy vagy két kötőjel vezeti be őket. Ha egy kötőjel van, átláthatóbb egy hosszú parancssor. Ha hosszú formát használjuk olvashatóbb. Hogy egy-egy parancs esetén mi van megvalósítva, az csak a programozón múlik. Az opciók módosítják a parancs végrehajtását. -F --classify -a --all -s --size
Paraméterek A paraméterek az opciókat követik. Egy vagy több is lehet belőlük. A paraméterek határozzák meg, min kell végrehajtani a parancsot. ls -1 -F
file1 file2 file3
Két opció: -1 -F Három paraméter: file1 file2 file3
Összevonható opciók ls -1 -F file1 ls -F -1 file1 ls -1F file1 ls -F1 file1 A -1 és -F opciókat egyetlen kötőjellel is megadhatom. Ilyenkor a két opciót leírom egymás mellé. A sorrend lényegtelen.
WhiteSpace karakterek WhiteSpace karakter a szóköz és a tabulátor. A parancs neve, az opciók és a paraméterek között ezekből egy vagy több is szerepelhet: SzitWiki - http://szit.hu/
Last update: 2016/05/31 13:32
oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor
ls <szóköz>-l<szóköz>-F<szóköz>file1 ls
-l-Ffile1 ls <szóköz>-l<szóköz>-Ffile1
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. http://szit.hu/
Printed on 2016/06/09 13:15
2016/06/09 13:15
39/108
Linux parancssor
A gyumolcs.txt fájl tartalmát a képernyő helyett a gyumolcs2.txt fájlba irányítom: cat > gyumolcs.txt szilva barack körte alma+ A bevitelt a + billentyűkombinációval szakítjuk meg, amellyel tulajdonképpen „fájlvége jelet” 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 a hibaüzenetek nem kerülnek fájlba az előbbi átirányítás esetén: A hibaüzenetek átirányítását is megoldhatjuk azonban: Tegyük fel, hogy nem létezik az aktuális könyvtárban nincs „aaaa” nevű könyvtár és fájl sem, amikor kiadjuk 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 a stdout helyett a stderr-re íródik. Persze alapértelmezetten az is képernyő. Az alapértelmezett kimenet szá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.
SzitWiki - http://szit.hu/
Last update: 2016/05/31 13:32
oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor
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 a gyumolcs2.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 program normá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ár letezofajl.txt A stderr és stdout háttere Az alapértelmezett kimenet és az alapértelmezett hibakimenet szétválasztása a programozásnál kezdődik. A megértéshez vegyünk egy egyszerű C programot, amely a képernyőre ír. Képernyőre ír például a printf() függvény: http://szit.hu/
Printed on 2016/06/09 13:15
2016/06/09 13:15
41/108
Linux parancssor
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 a pé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értelmezett kimenet 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: Egy Kettő Három Most használjuk az átirányítást. Irányítsuk fájlba az alapértelmezett kimenetet: ./main > naplo.txt vagy: SzitWiki - http://szit.hu/
Last update: 2016/05/31 13:32
oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor
./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ára adjuk á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.txt körte szilva barack alma szilva+ Az állomány tartalmaz néhány ismétlődést. Ezt kezelni tudjuk az uniq paranccsal. Az uniq parancs azonban 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: http://szit.hu/
Printed on 2016/06/09 13:15
2016/06/09 13:15
43/108
Linux parancssor
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ünk megjegyezni. 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-e az /usr/bin/ könyvtárban gcc parancs. Ha van akkor végrehajtja. Persze a PATH változóban egyszerre több útvonal is megadható, egymástól kettősponttal elválasztva. Felhasználóként az útvonal nekem pé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örnyezeti változóval: echo $PATH Próbáljuk ki a parancsot. A parancsértelmező ezekben a könyvtárakban keresi az általunk kiadott parancsot. 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. Az ifconfig parancs a /sbin könyvtárban van, ami az átlag felhasználónak nincs útvonalban. Igaz a felhasználó nem végezhet vele beállításokat, de a kártya beállításait lekérdezheti. Ehhez viszont meg kell 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 útvonalban van. Ekkor az a parancs hajtódik végre, amelyik a PATH változóban hamarabb szerepel. Ha a másik parancsot szeretnénk, akkor meg kell adjuk a teljes elérési utat. SzitWiki - http://szit.hu/
Last update: 2016/05/31 13:32
oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor
Ú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, akkor felülírjuk az egész .bashrc fájlt. Ha biztosra akarunk menni akkor előbb készítsünk róla biztonsági má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 a parancsé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 http://szit.hu/
Printed on 2016/06/09 13:15
2016/06/09 13:15
45/108
Linux parancssor
rendszerről változókban tárol számunkra információkat, de magunk is tárolhatunk információkat saját vá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ékeinek kií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/bash BASHOPTS=checkwinsize:cmdhist:expand_aliases:extglob:extquote:force_fignore: histappend:interactive_comments:progcomp:promptvars:sourcepath BASH_ALIASES=() BASH_ARGC=() BASH_ARGV=() BASH_CMDS=() BASH_COMPLETION_COMPAT_DIR=/etc/bash_completion.d BASH_LINENO=() BASH_SOURCE=() BASH_VERSINFO=([0]="4" [1]="2" [2]="45" [3]="1" [4]="release" [5]="i686-pclinux-gnu") BASH_VERSION='4.2.45(1)-release' COLORTERM=mate-terminal COLUMNS=80 DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbusBIZkKgmiL9,guid=d390d6b4250fc89be357def452828ff8 DBUS_STARTER_ADDRESS=unix:abstract=/tmp/dbusBIZkKgmiL9,guid=d390d6b4250fc89be357def452828ff8 DBUS_STARTER_BUS_TYPE=session DEFAULTS_PATH=/usr/share/gconf/default.default.path DESKTOP_SESSION=default DIRSTACK=() DISPLAY=:0 EUID=1000 GPG_AGENT_INFO=/tmp/keyring-kt96rN/gpg:0:1 GROUPS=() HISTCONTROL=ignoreboth HISTFILE=/home/andras/.bash_history HISTFILESIZE=2000 HISTSIZE=1000 SzitWiki - http://szit.hu/
Last update: 2016/05/31 13:32
oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor
HOME=/home/andras HOSTNAME=meteor HOSTTYPE=i686 IFS=$' \t\n' IM_CONFIG_PHASE=1 LANG=hu_HU.UTF-8 LIBGL_DRIVERS_PATH=/usr/lib/fglrx/dri:/usr/lib/i386-linuxgnu/dri:/usr/lib/dri LINES=24 LOGNAME=andras ... MACHTYPE=i686-pc-linux-gnu MAILCHECK=60 MANDATORY_PATH=/usr/share/gconf/default.mandatory.path MATE_DESKTOP_SESSION_ID=this-is-deprecated MATE_KEYRING_CONTROL=/tmp/keyring-kt96rN MDMSESSION=default MDM_LANG=hu_HU.UTF-8 MDM_XSERVER_LOCATION=local OPTERR=1 OPTIND=1 OSTYPE=linux-gnu PATH=/home/andras/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbi n:/bin:/usr/games:/usr/local/games PIPESTATUS=([0]="0") PPID=4056 PS1='\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$ ' PS2='> ' PS4='+ ' PWD=/home/andras SESSION_MANAGER=local/meteor:@/tmp/.ICE-unix/2711,unix/meteor:/tmp/.ICEunix/2711 SHELL=/bin/bash SHELLOPTS=braceexpand:emacs:hashall:histexpand:history:interactivecomments:monitor SHLVL=1 SSH_AGENT_PID=2796 SSH_AUTH_SOCK=/tmp/keyring-kt96rN/ssh TERM=xterm TEXTDOMAIN=im-config TEXTDOMAINDIR=/usr/share/locale/ UID=1000 USER=andras USERNAME=andras WINDOWID=75507613 WINDOWPATH=8 XAUTHORITY=/home/andras/.Xauthority XDG_CONFIG_DIRS=/etc/xdg/xdg-default:/etc/xdg ... http://szit.hu/
Printed on 2016/06/09 13:15
2016/06/09 13:15
47/108
Linux parancssor
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 nem szeretné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 + billentyűt. Ekkor a következő várakozási jel jelenik 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 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 parancs van, 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ájlt egyetlen fájlba mozgatunk, vagyis egyetlen fájlként szeretnénk kezelni. Erre a tar parancs haszná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 SzitWiki - http://szit.hu/
Last update: 2016/05/31 13:32
oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor
A -cf tulajdonképpen két kapcsoló, egy -c és egy -f, de azok összevonhatók. A -c create szóból, az archí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.gz A „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
http://szit.hu/
Printed on 2016/06/09 13:15
2016/06/09 13:15
49/108
Linux parancssor
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énye nélkül tartalmaz tömörítő programokat: xz arc gzip bzip2 pbzip2 lrzip lzip p7zip rzip (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
SzitWiki - http://szit.hu/
Last update: 2016/05/31 13:32
oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor
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 algoritmust használja. Az xz tulajdonképpen a 7z lecsupaszított változatának is tekintik (A 7z bzip2, LZMA2 és LZMA 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 a memóriában, másként végrehajtás alatt lévő program. Angolul task vagy process néven találkozunk vele. Az átlagfelhasználó persze nem szokta ezeket neveket használni, egyszerűen csak programként beszél róla. A folyamatok újabb folyamatokat indíthatnak. Amikor elindítunk egy parancsot, azt eleve egy parancsértelmező programban tesszük. A parancsértelmezőből indított folyamat szülője maga a parancsé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 vagy tudja hol van az elindítani kívánt program, vagy mi magunk mondjuk meg hol találhatók azok. A kö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 http://szit.hu/
Printed on 2016/06/09 13:15
2016/06/09 13:15
51/108
Linux parancssor
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 a dmesg 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, amelyben elhelyezhetik 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áma alapé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ül használva csak az aktuális terminálról indított folyamatokról informál minket: ps PID TTY 8205 pts/2 8215 pts/2
TIME CMD 00:00:00 bash 00:00:00 ps
Indítsunk három folyamatot, amelyet rögtön a háttérbe is teszünk: nano & mcedit & SzitWiki - http://szit.hu/
Last update: 2016/05/31 13:32
oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor
yes > /dev/null & A folyamataink megtekintése: ps PID 2975 22403 22407 22409 22411
TTY pts/0 pts/0 pts/0 pts/0 pts/0
TIME 00:00:00 00:00:00 00:00:00 00:02:59 00:00:00
CMD bash nano mcedit yes ps
Nézzük meg milyen állapotban vannak a háttérbe tett folyamatok (ps a): ... 22403 pts/2 22407 pts/2 22409 pts/2 ...
T T R
9:58 nano 0:00 mcedit 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 a nano és az mcedit programokat háttérbe tettük, azok megállított állapotba kerültek. A yes parancs viszont futó állapotba került. A yes parancs csak az y karaktert írja a képernyőre szünet nélkül. Mi persze ezt a /dev/null-ba irányítottuk. Amikor az ”&„ karakterrel háttérbe tesszük a folyamat nem áll meg. 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 ... 4244 ? 4245 ? ... 8474 ? 8509 ? 8572 pts/2
STAT
TIME COMMAND
S S
0:01 /usr/sbin/apache2 -k start 0:00 /usr/sbin/apache2 -k start
S R R+
0:01 [kworker/1:2] 0:01 [kworker/1:1] 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émon programok nincsenek.
http://szit.hu/
Printed on 2016/06/09 13:15
2016/06/09 13:15
53/108
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 2522 2523 2524 2525 2526
? ? ? ? ? ?
Ss S S S S S
0:00 /usr/sbin/apache2 -k start 0:00 \_ /usr/sbin/apache2 -k start 0:00 \_ /usr/sbin/apache2 -k start 0:00 \_ /usr/sbin/apache2 -k start 0:00 \_ /usr/sbin/apache2 -k start 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 IO T megállított (job kontroll; stoped) vagy nyomkövetett (traced) Z zombi (zombie) megállított, de elvesztette a szülőjét W nincs rezidens lapja (érvénytelen a 2.6.xx kernelek óta X 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 ps ké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írhatja L a lapok a memóriába vannak zárva (valós idő eléréséhez és IO tevékenységhez s vezető munkamenet l 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
SzitWiki - http://szit.hu/
Linux parancssor
Last update: 2016/05/31 13:32
UID andras andras
oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor
PID PPID 22290 22151 23071 22290
C STIME TTY 0 07:32 pts/5 0 11:40 pts/5
TIME CMD 00:00:00 bash 00:00:00 ps -f
UID felhasználó azonosító PID folyamatazonosító PPID szülőfolyamat azonosítója C processzor kihasználtság STIME indulási idő TTY melyik teletájphoz van kötve TIME felhalmozott processzoridő CMD indító parancs Felhasználói oszlopok ps -o PID 3823 4582
pid,stat,cmd STAT CMD Ss bash 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 root root root root root ...
PID 1 2 3 4 5
PPID 0 0 2 2 2
C 0 0 0 0 0
STIME 10:24 10:24 10:24 10:24 10:24
TTY ? ? ? ? ?
TIME 00:00:01 00:00:00 00:00:00 00:00:00 00:00:00
CMD /sbin/init [kthreadd] [ksoftirqd/0] [kworker/0:0] [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 http://szit.hu/
Printed on 2016/06/09 13:15
2016/06/09 13:15
55/108
Linux parancssor
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ól szá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 HUP
1
Term
INT QUIT ILL ABRT FPE KILL SEGV PIPE ALRM TERM USR1 USR2 CHLD CONT STOP TSTP TTIN TTOU
2 3 4 6 8 9 11 13 14 15 30,10,16 31,12,17 20,17,18 19,18,25 17,19,23 18,20,24 21,21,26 22,22,27
Term Core Core Core Core Term Core Term Term Term Term Term Ign Cont Stop Stop Stop Stop
Leírás 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 Megszakítás a billentyűzetről (Ctrl + C) Kilépés a billentyűzetről Illegális utasítás Abort signal from abort(3) Lebegőpontos kivétel Semlegesítő jel Érvénytelen memóriahivatkozás Eltört cső (pájp): írás vagy olvasás nem létező csőbe Időzítőjel az alarm(2)-től Megszakításjel Felhasználó által definiált jelzés 1 Felhasználó által definiált jelzés 2 A gyermek leállt vagy megszakadt Folytatás, ha meg lett állítva A folyamat megállítása Megálljt gépeltek egy tty eszközön tty bevitel egy háttérfolyamat számára tty kivitel egy háttérfolyamat számára
Termi - megállítja a folyamatot Core - megállítja a folyamatot, majd a kidumpolja a core adatokat Stop - megállítja a folyamatot Cont - folytatja a folyamatot, ha az meg volt állítva Ign - 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
SzitWiki - http://szit.hu/
Last update: 2016/05/31 13:32
oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor
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 ezt is. Ezek után nézzük meg a háttérbe tett folyamatokat a „jobs” paranccsal: jobs Az eredmény ehhez hasonló: [1] [2] [3][4]+
Megállítva Megállítva Megállítva Megálíltva
nano nano vi mutt
A megállított nano, vi és mutt programot látjuk. Mindegyik kapott egy sorszámot. A sorszámokat haszná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 azonban paramé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 fogja előtérbe hozni.
http://szit.hu/
Printed on 2016/06/09 13:15
2016/06/09 13:15
57/108
Linux parancssor
Gyakorlás A yes parancs folyamatosan a képernyőre írja a paraméterként megadott szöveget, és a coreutils csomagban 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 a tanult 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 + nano + pstree -c tibi Lehetséges kimenet (ha tibi csak egyszer lépett, és csak ezeket a programokat futtatja egy SzitWiki - http://szit.hu/
Last update: 2016/05/31 13:32
oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor
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ése l,t,m Összefoglalók: 'l' terhelési átlagok; 't' folyamat/CPU statisztika; 'm' memóriainformációk 1,I SMP nézet: '1' egyszerű/kifejtett; 'I' Irix/Solaris mód f,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 jobbra R,H Kulcs: 'R' normál/fordított rendezés; 'H' szálak mutatása c,i,S Kulcs: 'c' cmd name/line; 'i' üres folyamatok; 'S' növekvő idő x,y Kiemelő kulcsok: 'x' rendezett mezők; 'y' futó folyamatok z,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áma k,r Folyamatok kezelése: 'k' kill; 'r' prioritás (renice) d vagy s Frissítési időköz beállítása W Beállítások fájlba írása q 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:
http://szit.hu/
Printed on 2016/06/09 13:15
2016/06/09 13:15
.:
59/108
Linux parancssor
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 meg számunkra. Lássuk milyen típusok vannak még: c az aktuális könyvtár e végrehajtható állomány f nyitott fájl F írásra megnyitott fájl r root könyvtár m 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:
80/tcp:
Porthasználat példa 2 fuser -v -n tcp 12345
SzitWiki - http://szit.hu/
FELHASZNÁLÓ PID HOZZÁFÉRÉS PARANCS 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
Last update: 2016/05/31 13:32
12345/tcp:
oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor
FELHASZNÁLÓ PID HOZZÁFÉRÉS PARANCS 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 ezt a programot: fuser -vmk /mnt/valami Futtatható program ./fuser fuser -v server Eredmény:
server:
FELHASZNÁLÓ PID HOZZÁFÉRÉS PARANCS 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
server:
FELHASZNÁLÓ PID HOZZÁFÉRÉS PARANCS andras 3097 ...e. server
Ha program terminálhoz van kötve, akkor a következőt láthatjuk: ./server Kilőve
http://szit.hu/
Printed on 2016/06/09 13:15
2016/06/09 13:15
61/108
Linux parancssor
Folyamat kilővése interaktív módon fuser -v -i -k server FELHASZNÁLÓ PID HOZZÁFÉRÉS PARANCS server: andras 3199 ...e. server Kilövi a(z) 3199 folyamatot? (i/N) fuser -v -i -k ./ Eredmény: ./:
Kilövi a(z) Kilövi a(z) Kilövi a(z) Kilövi a(z) [1] Kilőve [2] Kilőve [3] Kilőve
1282 1327 1343 1345
folyamatot? folyamatot? folyamatot? folyamatot?
FELHASZNÁLÓ joska joska joska joska (i/N) n (i/N) i (i/N) i (i/N) i nano mcedit yes
PID 1231 1327 1343 1345
HOZZÁFÉRÉS ..c.. ..c.. ..c.. ..c..
PARANCS bash nano mcedit yes
pgrep és pkill A pgrep és pkill parancsok segítségével a folyamatlistát tudjuk megszűrni minta alapján. A mintában haszná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
SzitWiki - http://szit.hu/
Last update: 2016/05/31 13:32
oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor
A pidof segítségével folyamatok azonosítóját deríthetjük ki. Indítsunk egy nano programot, majd tegyü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 írja azokat 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: http://szit.hu/
Printed on 2016/06/09 13:15
2016/06/09 13:15
cat < eredeti > masolat A fájl végéhez fűzünk: cat >> dolgozok.txt Szabó Gábor 830000 [Ctrl]+[D] A fájl végéhez fűzők: cat >> dolgozok.txt <
Állományok létrehozása
cat > filenev.txt tartalom ... +
Á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
SzitWiki - http://szit.hu/
63/108
Linux parancssor
Last update: 2016/05/31 13:32
oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor
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 002 003 004
Alex Brown 85 5 Dan Igor 40 3 Barton Flex 56 3 Rock Brain 78 4
Szeretnénk a nevek oszlopait eltüntetni. Megoldás: cat tanulok | colrm 9 24 Eredmény: cel.txt 001 002 003 004
85 40 56 78
5 3 3 4
Nagyobb példafájl: tanulok.txt 001 002 003 004 005 006 007 008 009 010 011 012 http://szit.hu/
Alex Brown 85 5 Dan Igor 40 3 Barton Flex 56 3 Rock Brain 78 4 Kis István 72 4 Nagy Béla 70 4 Fehér Tamás 28 1 Kékes Imre 45 4 Per Béla 78 4 Zöld Elek 78 4 Piros Gábor 23 1 Fék Lajos 28 4 Printed on 2016/06/09 13:15
2016/06/09 13:15
013 014 015 016 017 018
65/108
Linux parancssor
Elmúlt Tibor 78 4 Leendő Tamás 28 4 Pék Gergő 78 4 Rob Sándor 18 1 Kékedi Imre 70 4 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. A cé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 002 003 004
Alex Brown Dan Igor Barton Flex Rock Brain
85 40 56 78
Megoldás: cat tanulok2.txt | cut -c4-22 Az eredmény: Alex Brown Dan Igor Barton Flex SzitWiki - http://szit.hu/
5 3 3 4
Last update: 2016/05/31 13:32
oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor
Rock Brain Tabulátorral tagolt sorok
tanulok.txt 001 002 003 004
Alex Brown 85 5 Dan Igor 40 3 Barton Flex 56 3 Rock Brain 78 4
Megoldás: cut -f2 <
tanulok.txt
A futtatás eredménye: cut -f2 < tanulok.txt Alex Brown Dan Igor Barton Flex Rock Brain Kettősponttal tagolt
tanulok3.txt 001:Alex Brown:85:5 002:Dan Igor:40:3 003:Barton Flex:56:3 004: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ármit megadhatunk szeparátornak. Eredmény: cut -f2 -d: tanulok3.txt Alex Brown Dan Igor Barton Flex http://szit.hu/
Printed on 2016/06/09 13:15
2016/06/09 13:15
67/108
Linux parancssor
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.txt Alex Brown:85:5 Dan Igor:40:3 Barton Flex:56:3 Rock Brain:78:4
mcrypt A következő parancsok használatához szükséges az mcrypt nevű csomag telepítése. A telepítéshez lá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.txt Enter 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:
SzitWiki - http://szit.hu/
Last update: 2016/05/31 13:32
oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor
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.nc Enter 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árja a bemenetet, és a stdout-ra ír. crypt < nyilt.txt > titkos.txt Unix 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.nc Unix 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. http://szit.hu/
Printed on 2016/06/09 13:15
2016/06/09 13:15
69/108
Linux parancssor
Stdin was encrypted. Visszafele ugyanígy: crypt < titkos.nc Unix 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 2005.10.26 2005.10.26 2005.10.28 2005.10.29
18:30 18:30 18:44 22:31 18:00
alex 196.145.43.3 joe 216.45.3.2 richard 196.145.43.3 joe 196.145.43.3 alex 196.145.43.3
A futtatás eredménye: grep alex belepesinaplo.txt 2005.10.25 18:30 alex 196.145.43.3 2005.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.txt 2005.10.26 18:30 joe 216.45.3.2 2005.10.26 18:44 richard 196.145.43.3 2005.10.28 22:31 joe 196.145.43.3
SzitWiki - http://szit.hu/
Last update: 2016/05/31 13:32
oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor
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 2005.12.26 2005.12.26 2005.12.28 2005.12.29 2006.01.02 2006.01.02
18:30 18:30 18:44 22:31 18:00 08:25 12:20
alex 196.145.43.3 1960 bytes joe 216.45.3.2 1512 bytes richard 196.145.43.3 2005 bytes joe 196.145.43.3 2006 bytes alex 196.145.43.3 2050 bytes joe 195.166.29.5 2008 bytes 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én szerepel. Ehhez a ^ karaktert használjuk: grep ^2006 naplo.log A karakterosztályok használata
naplo.log 2005.12.25 2005.12.26 2005.12.26 2005.12.28 2005.12.29 2006.01.02 2006.01.02 2006.01.03
18:30 18:30 18:44 22:31 18:00 08:25 12:20 07:02
alex 196.145.43.3 1960 bytes joe 216.45.3.2 1512 bytes richard 196.145.43.3 2005 bytes joe 196.145.43.3 2006 bytes alex 196.145.43.3 2050 bytes joe 195.166.29.5 2008 bytes alex 195.165.1.1 2005 bytes 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. Az 5,6,7 vagy 8-as karakterek valamelyikére. A szám után kötelezően egy szóköznek, majd utána bytes karakterek megköveteltek. A szögletes zárójel lehetővé teszi intervallumok megadását [5-8]: http://szit.hu/
Printed on 2016/06/09 13:15
2016/06/09 13:15
71/108
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 Feb Feb Feb Feb Feb
21 21 21 21 21 21
18:32:12 18:32:12 18:32:46 18:32:12 18:32:12 18:32:46
server server server server server server
postfix: Connection, postfix: LOGIN, [email protected], postix: LOGOUT, [email protected] pop3d: Connection, pop3d: LOGIN, [email protected], pop3d: LOGOUT, [email protected]
Csak a pop3d-t tartalmazhó sorokat szeretnék megjeleníteni. SzitWiki - http://szit.hu/
Linux parancssor
Last update: 2016/05/31 13:32
oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor
grep pop3d /var/log/syslog Adott egy konfigurációs állomány (dspam.conf) ami tele van megjegyzésekkel. Szeretném kiszűrni a megjegyzé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 ezt haszná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: sroszam nev http://szit.hu/
Printed on 2016/06/09 13:15
2016/06/09 13:15
73/108
szuletesnap telefonszam sorszam 001 002 003
nev Alex Brown Joe
szuletesnap 1985.07.11 1987.01.12 1999.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 002 003
Alex Brown Joe
Tagolás szóközökkel Megoldása SzitWiki - http://szit.hu/
1987.07.11 1987.01.12 1999.12.22
(1)335-3345 (37) 332-328 (48) 143-981
Linux parancssor
Last update: 2016/05/31 13:32
oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor
paste -d ' ' sorszam nev szuletesnap telefon
> info
Eredmény: info 001 Alex 1987.07.11 (1)335-3345 002 Brown 1987.01.12 (37) 332-328 003 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ás Alex 130000 festő Brown 150000 asztalos Joe 170000 villanyszerelő
Megoldás: cut -f1 dolgozok > nev cut -f2 dolgozok > fizetes cut -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:
http://szit.hu/
Printed on 2016/06/09 13:15
2016/06/09 13:15
75/108
Linux parancssor
cat filenev.txt | sort Ha a program bemenete egy állomány: sort < filenev.txt Fordított rendezés sort -r nevek.txt sort --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 korte alma szilva barack
Eredmény: SzitWiki - http://szit.hu/
Last update: 2016/05/31 13:32
oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor
sort gyumolcs.txt alma barack korte szilva Rendezés adott mező szerint
gy.txt 1 körte 2 alma 3 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 tartalma legyen a következő: adat.txt 12345 abcde AxAxA
Futtatás: rev adat.txt 54321 edcba http://szit.hu/
Printed on 2016/06/09 13:15
2016/06/09 13:15
77/108
Linux parancssor
AxAxA
spell A spell egy helyesírás ellenőrző program. A unixos rendszerekből származik. A spell csomag telepítése utá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ül barack barck szilva szilve körte körite alma alme helyes helytelen peach peac plum plem pear peare apple aple Gyakorlás Adott a következő fájl: gy.txt barcak szilve eper körte alme
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
SzitWiki - http://szit.hu/
Last update: 2016/05/31 13:32
oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor
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ámokkal adhatjuk meg, mire szeretnénk javítani. Ha ez nem egyezik az általunk kívánt lehetőséggel, akkor az r lenyomá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] R)epl A)ccept I)nsert L)ookup U)ncap Q)uit e(X)it or ? for help 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. http://szit.hu/
Printed on 2016/06/09 13:15
2016/06/09 13:15
79/108
Linux parancssor
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 aspellhu 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 barck szilva körite alme
1) barack 2) Barcs 3) Barok
4) barik 5) barok 6) barék
i) r) a) b) ?
I) R) l) x)
Ignore Replace Add Abort
Ignore all Replace all Add Lower 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:
SzitWiki - http://szit.hu/
Last update: 2016/05/31 13:32
barck
oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor
File: gy.txt
barck 0: 1: 2: 3: 4: 5: 6: 7:
barack barok barik barék barcsik Barcs barcsi 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
http://szit.hu/
Printed on 2016/06/09 13:15
2016/06/09 13:15
81/108
Linux parancssor
É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 alma körte alma barack szilva körte
uniq adat alma körte alma barack szilva körte Így helyes!
adat alma körte alma barack szilva körte
SzitWiki - http://szit.hu/
Last update: 2016/05/31 13:32
oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor
sort adat | uniq alma barack körte szilva
wc Sorok megszámolása Sorok, szavak és karakterek számolása Szintaxis: wc [kapcsoló] ... [fájl] ... Adott egy állomány: adat alma körte barack szilva
Végrehajtás: wc adat 4 4 25 Amit kaptunk: 4 sor 4 szó 25 byte Gyakori használat. wc -l Csak sorok számolása
nl Sorszámozás A sorokat sorszámozza http://szit.hu/
Printed on 2016/06/09 13:15
2016/06/09 13:15
83/108
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 körte barack szilva
40 db 53 db 25 db 27 db
szilva barack körte alma
27 25 53 40
uj.txt db db db db
expand tabulátorok szóközökre cserélése tanulok_tab.txt 001 002 003 004
Alex Brown 85 5 Dan Igor 40 3 Barton Flex 56 3 Rock Brain 78 4
Végrehajtás:
SzitWiki - http://szit.hu/
Linux parancssor
Last update: 2016/05/31 13:32
oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor
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 002 003 004
Alex Brown Dan Igor Barton Flex Rock Brain
85 40 56 78
5 3 3 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 tab karakterekké.
join Összefűzés Minden egyes azonos összekapcsolási mezővel rendelkező bementi sorpárhoz kiír egy sort a szabványos kimenetre. nev 1 2 3 4
János Ferenc István Kati
1 4 2 3
1981 1934 1945 1967
szul
Végrehajtás:
http://szit.hu/
Printed on 2016/06/09 13:15
2016/06/09 13:15
85/108
Linux parancssor
join nev szul 1 János 1981 2 Ferenc 1934 3 István 1945 4 Kati 1967 Az állományok tartalmazhatnak üres sorokat. De ha nincs rendezve, akkor nem mindig jó az eredmé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, hogy nem 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. Etiam condimentum blandit sapien non volutpat. Vivamus posuere massa euismod libero varius et mollis velit aliquam. Donec ultrices placerat consequat. Phasellus sit amet est non lorem vestibulum placerat iaculis vitae justo. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus bibendum feugiat eleifend. Duis tincidunt tempus eros, ac laoreet magna suscipit eu. Praesent quis facilisis lacus. Quisque imperdiet egestas lectus dapibus iaculis. Morbi egestas nulla eu magna sagittis vitae eleifend lacus sodales. Nullam vel nunc nisl. Vestibulum eget sapien eros. Donec ac pellentesque odio. In hac habitasse platea dictumst.
(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 + 2 3 SzitWiki - http://szit.hu/
Last update: 2016/05/31 13:32
oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor
expr 1 ”<” 2 1 expr 1 ”>” 2 expr length "alma a" 6 expr 3 "*" 2 6 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, hogy hogyan rendezi azt. Megjegyezzük, hogy adott részleges rendezés esetén nem mindig létezik egyértelműen teljes rendezés is. Adott a következő állomány: szul.txt Éva János Erika János Péter Éva Zoltán Erika
Alkalmazás tsort < szul.txt Péter Zoltán Éva Erika János http://szit.hu/
Printed on 2016/06/09 13:15
2016/06/09 13:15
87/108
Linux parancssor
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 alma körte barack szilva
gy2.txt alma körte szilva
diff gy1.txt gy2.txt 3d2 < barack Két könyvtár összehasonlítása: diff elso masodik Csak elso -ben: egy.txt Csak 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 a régi állományhoz. Például adott a következő állomány: gy1.txt alma barack körte szilva
Lemásoljuk az állományt: SzitWiki - http://szit.hu/
Last update: 2016/05/31 13:32
oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor
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 alma banán barack citrom körte szilva
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 kell megszerezni. 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 ez utá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ítik a régi és új állomány különbségét (folt), majd ezt visszaküldik az eredeti fejlesztőnek. Az eredeti http://szit.hu/
Printed on 2016/06/09 13:15
2016/06/09 13:15
89/108
Linux parancssor
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ő oszlopban csak 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. SzitWiki - http://szit.hu/
Last update: 2016/05/31 13:32
oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor
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 lehet hasznos, ha a fájlba írás mellett szeretnék a képernyőre is írni vagy a kimenetet egy másik programnak 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:
http://szit.hu/
Printed on 2016/06/09 13:15
2016/06/09 13:15
91/108
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.232s user 0m0.028s sys 0m0.048s Vagy time sleep 60 real 1m0.009s user 0m0.000s sys 0m0.004s
times Statisztika a programfutásról times ls -l / Eredmény: 0m3.948s 0m1.392s 0m24.246s 0m3.240s
SzitWiki - http://szit.hu/
Linux parancssor
Last update: 2016/05/31 13:32
oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor
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. Helyette nézzük meg az angol nyelvűt. Például: man -L us cal Használhatjuk a cal helyett a ncal parancsot is. A cal és az ncal parancsok a bsdmainutils csomag részei.
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ént tehető meg. A -n kapcsoló az RFC 2030 SNTP protokoll használatára utasít. Eredeti időprotokoll az RFC 868. De ezt a példában szereplő kifki.hu intézet már régen nem szolgáltatja.
FIFO FIFO fogalma Mi a FIFO? Elnevezett csövek http://szit.hu/
Printed on 2016/06/09 13:15
2016/06/09 13:15
93/108
Linux parancssor
Elnevezett pipe-ok Egy 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 a vé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. A kiolvasá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) 0 data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 16382 max locked memory (kbytes, -l) unlimited max memory size (kbytes, -m) unlimited open files (-n) 1024 pipe size (512 bytes, -p) 8 POSIX message queues (bytes, -q) 819200 real-time priority (-r) 95 stack size (kbytes, -s) 8192 cpu time (seconds, -t) unlimited max user processes (-u) unlimited virtual memory (kbytes, -v) unlimited file locks (-x) unlimited Ehhez hasonló eredményt kaphatunk. Az egyes tulajdonságoknak megfelelő kapcsoló a kimenetben látható. Például, ha csak a verem (stack) méretét akarom lekérdezni: SzitWiki - http://szit.hu/
Last update: 2016/05/31 13:32
oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor
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 init 1 root cwd unknown /proc/1/cwd (readlink: Permission denied) init 1 root rtd unknown /proc/1/
DEVICE SIZE/OFF
NODE NAME
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: http://szit.hu/
Printed on 2016/06/09 13:15
2016/06/09 13:15
95/108
Linux parancssor
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 fog működni. Így is lehet: date --set 1998-11-02 date --set 21:08: Néha előfordul, hogy egy időbélyeg számként van eltárolva, és szeretnénk olvashatóbb formában lá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 28488 28488: 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 SzitWiki - http://szit.hu/
Last update: 2016/05/31 13:32
oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor
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. Ugyanakkor nézünk szét ebben a fájlban az alias parancs után kutatva. A Debian GNU/Linux 6.x rendszerekben itt van néhány előre definiált alias, és egy lehetőség, mely szerint ~/.bash_aliases fájlban is meghatá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
http://szit.hu/
Printed on 2016/06/09 13:15
2016/06/09 13:15
97/108
Linux parancssor
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ása atime – access time – A fájl olvasása ctime – 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ák utoljá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
SzitWiki - http://szit.hu/
Last update: 2016/05/31 13:32
oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor
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: Debian Description: Debian GNU/Linux 6.0.5 (squeeze) Release: 6.0.5 Codename: 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. http://szit.hu/
Printed on 2016/06/09 13:15
2016/06/09 13:15
99/108
Linux parancssor
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 a legjobban. hexedit Telepítés: apt-get install hexedit mkdir ~/munka/hex cp /bin/ls ~/munka/hex/ls hexedit ~/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:
SzitWiki - http://szit.hu/
Last update: 2016/05/31 13:32
oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor
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=10 obase=2 5 101 10 → 16 ibase=10 obase=16 12 C Bemeneti számrendszer kiíratása: print ibase,"\n" 2 → 10 ibase=2 ibase=10 100 4 Programírás
http://szit.hu/
Printed on 2016/06/09 13:15
2016/06/09 13:15
101/108
Linux parancssor
#!/usr/bin/bc print "Első szám: " a = read() print "Második szám: " b = read() c = a + b print "Ö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:
SzitWiki - http://szit.hu/
Last update: 2016/05/31 13:32
[-fhkLlqV] [--force] [--quiet] [--version]
oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor
[--help]
[--keepdate]
[--license]
[--newline]
Bináris és nem szabályos fájlokat, mint a linkeket automatikusan átlép a program, ha csak nem használjuk a --force kapcsolót. A -c kapcsoló: 1. c –convmode konverziósmód Módok a következők lehetnek: ascii mac 7bit iso 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 http://szit.hu/
Printed on 2016/06/09 13:15
2016/06/09 13:15
103/108
Linux parancssor
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.txt szoveg.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 -m paranccsal. 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ávon második szám: közép távon harmadik 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:
SzitWiki - http://szit.hu/
Last update: 2016/05/31 13:32
oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor
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 nem kö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: http://szit.hu/
Printed on 2016/06/09 13:15
2016/06/09 13:15
105/108
Linux parancssor
You can now set up your calendar. This involves creating a directory ~/.when, and making a 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 az alapértelmezett szövegszerkesztő. y You can command want to emacs
edit your calendar file using your favorite editor. Please enter the you use to run your editor, or hit return to accept this default: -nw
Én beírtam az „mcedit” parancsot, mivel ezt a szövegszerkesztőt szeretem. mcedit You can now add items to your calendar file. Do ``when --help'' for more information. 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 szerkeszti szá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 a hó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. $ when Szo 2015 szept 26 today
4:52
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ához hasonlóan.
SMB megosztás elérése Egy állomány feltöltése:
SzitWiki - http://szit.hu/
Last update: 2016/05/31 13:32
oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor
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 a smbclient parancsot) megegyezik a megosztás felhasználónevével, akkor nem kötelező a --user kapcsoló: 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ók kapcsoló 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 Parancs végrehajtása a távoli szerveren. -c --command parancsszöveg Kapcsolat nélkül szoktuk használni Általánosan használt parancsok Parancs help [parancs] vagy ? [parancs] history cd [könyvtár] lcd put [távoli név] get [helyi név] ls [maszk] mget <maszk> mput <maszk> recurse prompt ! http://szit.hu/
Leírás Az összes parancs megjelenítése, vagy egy adott parancs elírása Parancstörténet megjelenítése az aktuális könyvtár cseréje; argumentum nélkül az aktuális könyvtárat adja a helyi könyvtár cseréje fájl feltöltése fájl letöltése az aktuális könyvtár tartalma minden maszkra illeszkedő fájl letöltése minden maszkra illeszkedő fájl feltöltése a rekurzív fel és letöltés engedélyezése az mget/mput parancsok esetén Vá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 futtatása és a kimenet elkapása Printed on 2016/06/09 13:15
2016/06/09 13:15
107/108
Parancs listconnect more rename <új fájlnév> rm <maszk> rmdir showconnect lowercase
Linux parancssor
Leírás Az aktuális kapcsolatról ad információt Távoli fájl lekérése és tartalmának megmutatása a PAGER környezetei változóban beállított lapozóval Fájlok átnevezése az aktuális könyvtárban, a távoli gépen Az összes maszkkal egyező fájl törlése a távoli szerveren Adott könyvtár törlése Aktuális kapcsolat megjelenítése Távoli fájlnevek kisbetűssé alakítása a get és mget parancsok számára.
Az smb megosztások elérhetők az smbnetfs csomag smbnetfs parancsával, de jelenleg bugos.
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. Ezt megelé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%A1jlrendsz erei http://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: 2016/05/31 13:32 SzitWiki - http://szit.hu/
Last update: 2016/05/31 13:32
http://szit.hu/
oktatas:linux:parancssor http://szit.hu/doku.php?id=oktatas:linux:parancssor
Printed on 2016/06/09 13:15