Felhasználói eszközök

Eszközök a webhelyen


oktatas:linux:parancssor

Különbségek

A kiválasztott változat és az aktuális verzió közötti különbségek a következők.

Összehasonlító nézet linkje

Előző változat mindkét oldalon Előző változat
Előző változat
Következő változat Következő változat mindkét oldalon
oktatas:linux:parancssor [2018/11/10 18:13]
oktatas:linux:parancssor [2019/10/13 19:40]
admin [Linux parancssor]
Sor 1: Sor 1:
 +[[oktatas:​linux|<​ Linux]]
  
 +====== Linux parancssor ======
 +
 +  * **Szerző:​** Sallai András
 +  * Copyright (c) Sallai András, 2009-2019
 +  * Licenc: GNU Free Documentation License 1.3
 +  * Web: http://​szit.hu
 +
 +===== Bevezetés =====
 +Az alábbi leírás a Linux parancssori használatát mutatja be. 
 +A leírás elolvasása nem elég az anyag elsajátításához. ​
 +Minden parancsot folyamatosan ki kell próbálni. ​
 +
 +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. Néhány Linuxot megtalálsz
 +az alábbi helyeken online futtatva, de egyik sem Debian. Van köztük
 +egyszerű parancssoros felület, ami tulajdonképpen csak egy Unix
 +parancssor, és van köztük grafikus felület. ​
 +  * http://​s-macke.github.io/​jor1k/​
 +  * https://​bellard.org/​jslinux/​
 +  * http://​jslinux.org/​
 +  * http://​tour.ubuntu.com/​en/​
 +  * https://​copy.sh/​v86/​
 +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 [[http://​hu.wikipedia.org/​wiki/​Knoppix|Knoppix]]
 +vagy a [[http://​hu.wikipedia.org/​wiki/​Linux_Mint|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 
 +[[http://​hu.wikipedia.org/​wiki/​Virtu%C3%A1lis_sz%C3%A1m%C3%ADt%C3%B3g%C3%A9p|virtuális számítógépre]]
 +telepíts Linuxot. Ide már mehet például a [[http://​debian.org|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 ====
 +
 +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. ​
 +
 +
 +<code bash>
 +login: joska
 +</​code>​
 +
 +Ha a rendszerben a felhasználónevünk joska, akkor azt a login: után beírjuk. ​
 +Egy <​Enter>​ leütésével tudatjuk a rendszerrel,​ hogy végeztünk a bevitellel. ​
 +A felhasználónév beírása után a password: várakozási jelet látjuk, amely a jelszavunk beírásra szólít fel:
 +
 +<code bash>
 +password: ​
 +</​code>​
 +
 +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:
 +
 +<code bash>
 +passwd
 +</​code>​
 +
 +
 +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:
 +<code bash>
 +passwd joska
 +</​code>​
 +Ez a parancs persze csak rendszergazdaként belépve fog sikerülni, vagy ha te vagy a joska felhasználó. ​
 +
 +
 +
 +
 +
 +
 +
 +==== Kijelentkezés ====
 +
 +Ha valahova bejelentkeztünk,​ akkor ki is kell tudnunk jönni onnan. ​
 +Nézzük, hogyan lehet szabályosan kijelentkezni a rendszerből.
 +
 +A rendszerből kijelentkezni a logout paranccsal lehetséges:​
 +<​code>​
 +logout
 +</​code>​
 +
 +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?
 +  * Hány darab konzolos terminál áll rendelkezésre?​
 +  * Töltsön le egy linuxos Live CD-ét
 +    * 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. Ezt egy várakozási jellel adja 
 +értésünkre. A várakozási jel felhasználók és rendszergazdák számára is más. A felhasználók
 +számára egy dollárjelet ($) jelenít meg a rendszer, a rendszergazdának pedig egy kettős-keresztet
 +(#). A várakozási jel ki van bővítve némi információval. Tartalmazza a bejelentkezett felhasználónevet,​
 +a gép nevét és az aktuális könyvtárat. ​
 +
 +<​code>​
 +joska@iskolazo:​~$
 +</​code>​
 +==== 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 ("#"​). ​
 +
 +<​code>​
 +root@iskolazo:​~#​
 +</​code>​
 +
 +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:
 +  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?
 +
 +===== Gyorsbillentyűk =====
 +
 +==== Tab ====
 +
 +Tegyük fel, hogy van olyan fájlom, amelynek neve elég hosszú:
 +  touch kedvenc_valmilyen_fajlom.txt
 +
 +Szeretném a tartalmát megjeleníteni a "​cat"​ paranccsal. Ekkor
 +begépelem "cat m" karaktereket, ​ majd megnyomom a Tab billentyűt.
 +
 +De mi van akkor, ha több azonos módon kezdődő fájlunk is van:
 +  touch valmilyen_kedvenc_fajlom_1.txt
 +  touch valmilyen_kedvenc_fajlom_2.txt
 +  touch valmilyen_kedvenc_fajlom_3.txt
 +  touch valmilyen_kedvenc_fajlom_4.txt
 +
 +A fenti fájloknál begépelem "cat v", majd megnyomom a "​Tab"​ billentyűt,​
 +melyiket fogja beírni. A rendszer ilyenkor addig jeleníti meg a fájlnevet,
 +amíg azok egyeznek. Esetünkben így egészíti ki:
 +  cat valmilyen_kedvenc_fajlom_
 +Ezek után nekünk kell beírni hogyan kell folytatódjon. Beírjuk például a "​3"​-as ​
 +számot, akkor és újabb "​Tab"​ billentyűt nyomunk, ekkor kiegészíti a maradék részt is.
 +==== Le, fel nyíl ====
 +
 +A le és a fel billentyűvel lapozhatunk a kiadott parancsok között. ​
 +A fel billentyűvel visszafele lapozunk, a le billentyűvel előre.
 +
 +
 +==== Ctrl+R ====
 +
 +A Ctrl+R billentyűkombináció arra való, hogy az előző parancsokban keressünk.
 +Nyomjuk meg a Ctrl+R billentyűkombinációt,​ majd írjuk be a keresett parancs részletét.
 +  <​Ctrl>​+<​R>​
 +  export
 +
 +A gépelés közben máris megjelennek az egyezést mutató régebbi parancsok.
 +
 +Alapértelmezetten csak egy találat jelenik meg. 
 +Több eredmény megjelenítéshez nyomjuk meg újra a Ctrl+R billentyűt.
 +Tulajdonképpen lapozhatunk a parancsokban.
 +
 +A keresést a Ctrl+C billentyűkombinációval szakíthatjuk meg, egy Enter
 +lenyomásával újra aktiválhatjuk.
 +
 +==== Ctrl+S ====
 +
 +A Ctlr+S megállítja,​ megfagyasztja a terminált. Olyankor jöhet jól
 +ha valamilyen parancs adatokat ír a képernyőre,​ ami nem fér el,
 +ezért folyamatosan továbbítja azt, mi pedig szeretnénk beleolvasni,​
 +így megállítanánk.
 +
 +A képernyő továbbítása folytatható a Ctrl+Q billentyűkombinációval.
 +
 +==== Mozgás soron belül ====
 +
 +A sor elejére a <​Home>​ vagy a <​Ctrl>​+<​a>​ billentyűvel mozoghatunk.
 +
 +A sor végére az <End> vagy a <​Ctrl>​+<​e>​ billentyűvel mozoghatunk.
 +
 +==== Az előző argumentum felhasználása ====
 +
 +Egy parancs kiadása után ha megnyomjuk az <​Alt>​+<​.>​ billentyűkombinációt,​
 +az utoljára beírt argumentum a parancssorba íródik.
 +
 +==== Ctrl+Z ====
 +
 +Az aktuális folyamatot a háttérbe teszi. A háttérbe tett folyamat a fg és bg
 +parancsokkal szabályozhatók.
 +
 +==== Ctrl+C ====
 +Az aktuális folyamatot megszakítja.
 +
 +==== Ctrl+L ====
 +A képernyő törlése.
 +
 +==== Ctrl+U ====
 +A kurzor előtti részt egy speciális vágólapra helyezi.
 +==== Ctrl+K ====
 +A kurzor utáni részt egy speciális vágólapra helyezi.
 +
 +==== Ctrl+Y ====
 +A speciális vágólapról beilleszti a tartalmat, amely a Ctrl+U vagy Ctrl+K ​
 +billentyűparanccsal került oda.
 +
 +==== Ctrl+W ====
 +A kurzortól balra törli a szót.
 +
 +==== Ctrl+T ====
 +A kurzor alatti és kurzor előtti két karakter cseréje.
 +
 +==== Ctrl+D ====
 +Kilép a terminálból.
 +
 +
 +==== Gyakorlat ====
 +
 +  * Mire jó a Tab billentyű?
 +  * Mi történik, ha parancskiegészítést kérek, de hasonló kezdetű állomány több is létezik?
 +  * Mire használható a Ctrl+D karakter?
 +  * Mire való a Ctrl+A billentyűkombinációt?​
 +  * Mire való a Ctrl+E billentyűkombinációt?​
 +  * Mire való a Ctrl+U billentyűkombinációt?​
 +  * Mire való a Ctrl+K billentyűkombinációt?​
 +  * Mi a különbség a Ctrl+U és a Ctrl+K billentyű között?
 +
 +
 +
 +===== 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örnyezeti 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, amelynek van értéke.
 +
 +Megadhatjuk melyik változót szeretnénk:​
 +  printenv PATH
 +
 +vagy 
 +  printenv HOME
 +
 +vagy
 +  printenv SHELL
 +
 +
 +A **set** paranccsal vigyáznunk kell, mert Shellenként másként viselkedik. ​
 +Ráadásul az alapértelmezetten futó Bash parancsértelmezőben egészen mást
 +csinál paraméterezve,​ minta mondjuk a csh, vagy ksh környezetben. ​
 +
 +A set parancs önmagában kiadva, mindenesetre kiírja a környezeti változókat,​
 +de a különféle parancsértelmezők esetén más, más kimenetet kapunk:
 +  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ó:
 +
 +  set | grep PATH
 +
 +
 +
 +Beállítható saját változó is:
 +  export TEST_VAR=hello
 +
 +
 +Nézzük meg az eredményt:
 +  set | grep TEST_VAR
 +
 +vagy:
 +  printenv
 +
 +
 +
 +A változó megszüntetése:​
 +  unset TEST_VAR
 +
 +Érdekes, hogy a Bash esetén a set másként működik a többi parancsértelmezővel szemben,
 +az unset viszont ugyanazt csinálja. Az unset bármely paraméterként megadott
 +változót megszüntet. ​
 +
 +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 parancsot, 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:​
 +  echo $BARAT_VAR
 +Itt is látszik a tartalma.
 +
 +Saját rendszer szintű környezeti változók bevezetése a /​etc/​environment állományban lehetséges.
 +Az állomány alapértelmezetten üres. Vegyük fel a következő sorokat:
 +
 +  Z1=első
 +  Z2=második
 +
 +Egy sor egy változó.
 +
 +Indítsuk újra a rendszert, majd a set paranccsal írassuk ki az összes változót:
 +  set
 +
 +Az /​etc/​environment fájlban létrehozott változók még grafikus felületen is érvényesek.
 +
 +A PATH változó esetén, ügyelni kell arra, hogy felülírja a változót. ​
 +A PATH változó egész tartalmát itt meg kell adni:
 +
 +  PATH=/​usr/​local/​sbin:/​usr/​local/​bin:/​usr/​sbin:/​usr/​bin:/​sbin:/​bin
 +
 +Néhány leírás szerint a **setenv** parancs is használható a változók beállítására,​
 +de ez csak a **csh** parancsértelmezőben áll rendelkezésre.
 +==== env ====
 +
 +Az env parancsot arra használhatjuk,​ hogy egy parancsot módosított környezetben futtassunk.
 +Paraméter nélkül kiírja a környezeti változókat.
 +
 +  env
 +
 +==== A Bash set parancsa ====
 +Mint fentebb már írtam a set parancs másként viselkedik a különböző parancsértelmezők esetén.
 +A Bash set parancsa a Bash számára állít be pozíció szerinti paramétereket,​ úgy mint
 +  * $1, $2, $3
 +
 +Legyen a GYUMOLCS változó, értéke alma:
 +  set GYUMOLCS=alma
 +Értékét így tudjuk kiolvasni:
 +  echo $1
 +
 +Ha több paramétert is szeretnénk megadni:
 +  set alma körte barack
 +
 +  echo $1
 +  alma
 +
 +  echo $2
 +  körte
 +
 +  echo $3
 +  barack
 +
 +A pozíciónális paraméterekből bármikor lekérhetők az értékek.
 +
 +
 +===== 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. ​
 +
 +<code bash>
 +echo "​Helló Világ!"​
 +</​code>​
 +
 +Az echo a szöveg végén egy sortörést is a képernyőre küld, amiről lebeszélhető a <​nowiki>​-n</​nowiki>​ kapcsolóval. ​
 +
 +
 +<code bash>
 +echo -n "​Helló Világ!"​
 +</​code>​
 +
 +
 +Különleges karakterek is engedélyezhetők a <​nowiki>​-e</​nowiki>​ kapcsolóval:​
 +<code bash>
 +echo -e "​Helló\nVilág!"​
 +</​code>​
 +
 +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 |
 +|  <​nowiki>​\\</​nowiki> ​ | backslash |
 +|  \nnn  | a karakter ASCII kódja nnn (oktálisan) |
 +
 +Az echo parancsot úgy is használhatjuk,​ mint egy ls. 
 +Az összes .txt kiterjesztésű állomány megjelenítése:​
 +  echo *.txt
 +
 +Az echo parancsnak két változatát használhatjuk.
 +Az egyik:
 +  * a parancsértelmező beépített parancsa
 +  * külső parancs
 +
 +Figyeljük meg a type echo kimenetét:
 +<​code>​
 +$ type echo
 +echo egy beépített parancs
 +</​code>​
 +
 +Alapból tehát ezt használjuk. Ha mégis a külső parancsot szeretnénk hasznáni
 +meg kell adnunk a teljes útvonalat:
 +  /bin/echo
 +
 +
 +==== A PS1 tartalma ====
 +
 +
 +Fentebb már láttuk, hogy a PS1 környezeti változó tartalmát így tudjuk megnézni:
 +<code bash>
 +echo $PS1
 +</​code>​
 +
 +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:
 +
 +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:
 +
 +<code bash>
 +export PS1='​${debian_chroot:​+($debian_chroot)}\[\033[01;​34m\]\u@\h\[\033[00m\]:​\w\$ '
 +</​code>​
 +
 +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: 
 +
 +<code bash>
 +export PS1="$ "
 +</​code>​
 +
 +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
 +
 +<code bash>
 +export PS1='$ '
 +</​code>​
 +
 +
 +
 +
 +Ez is szép megoldás:
 +<code bash>
 +export PS1="​Irj be egy parancsot: "
 +</​code>​
 +
 +
 +
 +==== 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?
 +  * Készítsen egy ilyen várakozási jelet: "​C:​\>​ "
 +
 +
 +
 +
 +
 +
 +===== 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
 +
 +Esetleg így: 
 +  who am i
 +
 +
 +
 +Ez a parancs kiírja a felhasználónevünket. Például:
 +  joska
 +
 +
 +Mit lehet rólam tudni? Néha azt is szeretnénk tudni, milyen csoportokban van benne a felhasználónk. Ebben segít az id parancs.
 +
 +  id
 +
 +A kimenet ehhez hasonló lehet:
 +<​code>​
 +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)
 +</​code>​
 +
 +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:
 +
 +<code bash>
 +last
 +</​code>​
 +
 +
 +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:
 +<code bash>
 +last | more
 +</​code>​
 +
 +Használhatjuk ebből a célból a less parancsot is:
 +<code bash>
 +last | less
 +</​code>​
 +
 +A less parancs felületéből egy billentyűvel tudunk kilépni:
 +<​code>​
 +Q
 +</​code>​
 +
 +Csak a jelenlegi kapcsolatok:​
 +<code bash>
 +last -ap now
 +</​code>​
 +
 +
 +
 +==== Kik vannak bent? ====
 +
 +
 +Van amikor csak egyszerűen arra vagyunk kíváncsiak ki van bejelentkezve:​
 +<code bash>
 +users
 +</​code>​
 +
 +
 +Ha azt is szeretnénk látni honnan léptek be, akkor a következő parancsot használjuk:​
 +
 +<code bash>
 +who
 +</​code>​
 +
 +
 +<code bash>
 +who -u
 +</​code>​
 +
 +
 +A legtöbb információt azonban a következő parancs adja:
 +<code bash>
 +w
 +</​code>​
 +
 +Ez a parancs azt is kiírja, a bejelentkezett felhasználók mit csinálnak.
 +Ezért ügyelnünk kell arra, hogy ha olyan parancsot használunk,​ amely 
 +paraméterként jelszót vár, azt ne futtassuk parancssorból önmagában.
 +Hagyjuk, hogy a programunk kérje azt be.
 +
 +Belépések listázása:​
 +
 +<code bash>
 +lslogins
 +</​code>​
 +
 +Csak valódi felhasználók:​
 +<code bash>
 +lslogins -u
 +</​code>​
 +
 +==== A finger parancs ====
 +
 +A finger parancs alapértelmezetten nem érhető el.
 +
 +A telepítéshez rendszergazdai jogok szükségesek:​
 +  apt install finger
 +
 +A használathoz egyszerűen beírhatjuk a finger parancsot:
 +  finger
 +
 +De egy felhasználó megadható paraméterként. Így több információt jelenít meg,
 +a kívánt felhasználóról:​
 +  finger janos
 +
 +
 +==== 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?
 +
 +
 +
 +
 +===== A rendszer lekérdezése =====
 +==== date ====
 +
 +Az aktuális dátumot a date paranccsal lehet lekérdezni:​
 +
 +<code bash>
 +date
 +2013. jan.  8., kedd, 20.39.43 CET
 +</​code>​
 +
 +
 +A dátum és időbeállításokról később bővebben is lesz szó.
 +
 +
 +
 +A lekérdezések formája beállítható,​ ahogy azt az alábbiakban látjuk.
 +
 +Csak az óra lekérdezése:​
 +  date +%H
 +Óra perc:
 +  date +%H:%M
 +
 +Évszám:
 +  date +%Y
 +Évszám, hónappal és nappal
 +  date +%Y-%m-%d
 +
 +A dátum kiíratható unix formátumban is:
 +<​code>​
 +$ date +%s
 +1539114959
 +$ date -d @1417827123
 +2014. dec.  6., szombat, 01:52:03 CET
 +
 +</​code>​
 +==== cal ====
 +
 +A cal megmutatja az aktuális hónapot és évet. ​
 +Az aktuális hónap minden napját külön is megjeleníti,​
 +naptárszerűen. ​
 +
 +A cal ma már csak egy szimbolikus link a ncal programra.
 +Ha az ncal nézetben, hétfővel kezdődő naptárat szeretnénk,​
 +használjuk az ncal -b parancsot:
 +  ncal -b
 +
 +Adott hónap az évben:
 +  ncal -m 10
 +
 +
 +Az adott hónap előtt és után is egy hónap megjelenítése:​
 +  ncal -b -3
 +Szeptemberben így augusztus, szeptember és október jelenik meg.
 +
 +  ncal -b -3 -m 10
 +Így szeptember, október és november jelenik meg.
 +
 +  ncal -y 2020
 +
 +Még pluszban hány hónap jelenjen meg, az aktuális után:
 +  ncal -A 3
 +
 +Még pluszban hány hónap jelenjen meg, az aktuális előtt:
 +  ncal -B 3
 +
 +Adott év, adott hónapja:
 +  ncal -d 2020-4
 +vagy:
 +  ncal -d 2020-04
 +  ncal -d 2020-04 -A 2
 +
 +==== uptime ====
 +
 +Kiírja mennyi ideje fut a rendszer, milyen terhelésnek van kitéve.
 +  uptime
 +
 +==== uname ====
 +
 +Az uname a kernelről ad információt:​
 +  uname
 +Kapcsoló nélkül csak annyit mond, hogy "​Linux"​. Ez az információ ​
 +jelenik meg a -s hatására is. 
 +
 +A -m kapcsoló kiírja milyen hardvert használunk:​
 +  uname -m
 +
 +Vagy:
 +  uname --machine
 +
 +A válasz például: ​
 +  * x86_64
 +
 +A -r megadja a kernel verziószámát:​
 +  uname -r
 +  4.9.0-4-amd64
 +
 +
 +
 +
 +Az összes információt a -a kapcsolóval írja a képernyőre:​
 +  uname -a
 +
 +==== A CPU és a memória ====
 +
 +A processzor adatai:
 +  cat /​proc/​cpuinfo
 +A memória adatai:
 +  cat /​proc/​meminfo
 +Használt és szabad memória, cserehellyel együtt:
 +  free
 +
 +==== Lemezhasználat ====
 +
 +  df -h
 +
 +  du
 +
 +===== Könyvtárkezelés =====
 +
 +
 +
 +
 +
 +
 +
 +==== Aktuális könyvtár ====
 +
 +A felhasználók alapértelmezésben,​ belépés után a saját könyvtárukba kerülnek, amelynek a jele "​~"​. Alapértelmezés az is, hogy az aktuális könyvtár megjelenik a várakozási-jelben. Ha változtattunk várakozási-jelen és már nem az alapértelmezett könyvtárban állunk, szeretnénk tudni az aktuális könyvtár nevét, útvonalastól együtt. Ezt a **pwd** parancs begépelésével tehetjük meg. A pwd a //present work directory// vagy
 +a //print working directory// rövidítése.
 +
 +<code bash>
 +pwd
 +</​code>​
 +
 +
 +A joska nevű felhasználó például ezt láthatja, ha a saját könyvtárában áll:
 +  /home/joska
 +
 +
 +
 +==== A könyvtár tartalmának listázása ====
 +
 +Általában szeretnénk a könyvtár tartalmát listázni. Szeretnénk látni
 +milyen újabb könyvtárakat és fájlokat tartalmaz. Erre a célra az "​ls"​
 +parancsot használhatjuk. ​
 +
 +
 +=== ls alapok ===
 +
 +<code bash>
 +ls
 +</​code>​
 +
 +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:
 +
 +<code bash>
 +ls -a
 +</​code>​
 +
 +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:​
 +<code bash>
 +ls -l
 +</​code>​
 +
 +Ha még nincs más könyvtárunk használjuk az "​a"​ kapcsolót is:
 +
 +<code bash>
 +ls -la
 +</​code>​
 +
 +Az eredmény valami ilyesmi lehet:
 +<​code>​
 +összesen 28
 +drwxr-xr-x 3 joska joska 4096 febr  24 23.49 .
 +drwxr-xr-x 4 root  root  4096 dec   13 18.37 ..
 +-rw------- 1 joska joska   92 febr  25 00.04 .bash_history
 +-rw-r--r-- 1 joska joska  220 dec   13 18.37 .bash_logout
 +-rw-r--r-- 1 joska joska 3184 dec   13 18.37 .bashrc
 +drwx------ 2 joska joska 4096 febr  24 23.49 .mc
 +-rw-r--r-- 1 joska joska  675 dec   13 18.37 .profile
 +</​code>​
 +
 +
 +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:​
 +
 +<code bash>
 +ls /
 +</​code>​
 +
 +Vagy a /bin könyvtár listázása:​
 +
 +<code bash>
 +ls /bin
 +</​code>​
 +
 +
 +=== Az ls hosszú kimenete ===
 +
 +Fentebb már láttuk a -l kapcsoló hatását (-a -val együtt):
 +
 +
 +<​code>​
 +összesen 28
 +drwxr-xr-x 3 joska joska 4096 febr  24 23.49 .
 +drwxr-xr-x 4 root  root  4096 dec   13 18.37 ..
 +-rw------- 1 joska joska   92 febr  25 00.04 .bash_history
 +-rw-r--r-- 1 joska joska  220 dec   13 18.37 .bash_logout
 +-rw-r--r-- 1 joska joska 3184 dec   13 18.37 .bashrc
 +drwx------ 2 joska joska 4096 febr  24 23.49 .mc
 +-rw-r--r-- 1 joska joska  675 dec   13 18.37 .profile
 +</​code>​
 +
 +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. ​
 +
 +
 +|  <​nowiki>​-</​nowiki> ​ |  <​nowiki>​rw-r--r--</​nowiki> ​ |  1  |  joska  |  joska  |  3184  |  dec   13 18.37  |  .bashrc ​ |
 +|  az állomány típusa ​ |  jogok  |  linkek száma ​ |  tulajdonos ​ |  csoport ​ |  méret ​ |  utolsó módosítás dátuma ​ |  az állomány neve  |
 +
 +
 +Minden sor 10 darab karakterrel kezdődik. Ebből az első 
 +az állomány típusa, a többi kilenc az állományhoz tartozó jogokat mutatja. ​
 +
 +A következő szám az állományra mutató linkek számát mutatja. A linkekről lásd később a link létrehozása című részt.
 +
 +A linkek száma után az állomány tulajdonosa,​ amit a csoport neve követ. A Debian GNU/Linux
 +rendszerekben egy felhasználó létrehozásakor létrejön egy a nevével azonos csoport is.
 +Így lehet, hogy a csoportnév megegyezik a tulajdonos nevével. ​
 +
 +A következő szám az állomány mérete. Könyvtárak esetén itt a blokk mérettét látjuk. ​
 +
 +Ezt követi az utolsó módosítás dátuma, és végül az állomány neve. 
 +
 +Ha listázott elem egy könyvtár, akkor a méret résznél a fájlrendszerben használatos blokkméret fog megjelenni. ​
 +
 +=== Könyvtárak és fájlok megkülönböztetése ===
 +
 +A könyvtárak és fájlok a -l kapcsolóval megkülönböztethetők,​ de előfordul, hogy ezen
 +kapcsoló nélkül is szeretném látni, hogy mivel van dolgom. Ezt a -F kapcsolóval ​
 +tehetem meg:
 +
 +<code bash>
 +ls -F
 +</​code>​
 +
 +
 +=== 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:
 +
 +<code bash>
 +ls -ld munka
 +</​code>​
 +A kimenet pedig ehhez hasonló lehet:
 +<​file>​
 +drwxr-xr-x joska joska 4096 márc   9 10.26 munka/
 +</​file>​
 +
 +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:
 +<code bash>
 +mkdir munka
 +cd munka
 +</​code>​
 +
 +Hozzunk létre 200 fájlt:
 +<code bash>
 +for ((i=0; i<200; i++)); do touch aaaaaaaaaa_$i;​ done
 +</​code>​
 +
 +Nézzük meg a ls -ld kimenetét a könyvtáron:​
 +<code bash>
 +ls -ld .
 +drwxr-xr-x joska joska 12288 márc 12 07.03
 +</​code>​
 +
 +Ezek után az aktuális könyvtár listázásánál a méret: 12288
 +
 +Ne felejtsük el, hogy más fájlrendszernél ezek az értékek eltérhetnek.
 +
 +=== Külön bejegyzések ===
 +
 +Egy könyvtár vagy fájl listázása esetén a jogok után 
 +ritka esetben megjelenhet plusz (+) vagy pont (.) karakter:
 +  drwxr-xr-x+ joska joska 12288 márc 12 07.03 Nev
 +vagy:
 +  drwxr-xr-x. joska joska 12288 márc 12 07.03 Nev
 +
 +A plusz (+) karakter arra utal, hogy a fájlhoz (vagy könyvtárhoz)
 +külön ACL bejegyzések is tartoznak. Ha pont (.) karakter
 +van a jogok után, akkor ez SELinux címkék bejegyzésére utal. 
 +
 +Ha mindkettő van (ACL és SELinux címke is), akkor a plusz (+)
 +karakter látszik. További információk az 
 +[[oktatas:​linux:​acl|ACL]] és az [[oktatas:​linux:​selinux|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:
 +<code bash>
 +mkdir konyvtar_neve ...
 +</​code>​
 +
 +
 +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:
 +
 +<code bash>
 +mkdir elso masodik harmadik
 +</​code>​
 +
 +<code bash>
 +mkdir {elso,​masodik,​harmadik}
 +</​code>​
 +
 +Ha útvonalat is megadunk egy könyvtár létrehozásánál a <​nowiki>​-p</​nowiki>​
 +kapcsoló segítségével,​ az útvonalban szereplő nem létező könyvtárak ​
 +automatikusan létrejönnek:​
 +
 +<code bash>
 +mkdir -p /​home/​joska/​munka/​dolgozok/​human/​gizi
 +</​code>​
 +
 +==== Könyvtárcsere ====
 +
 +Ha már vannak újabb könyvtáraink szeretnék "​belépni"​ azokba. ​
 +
 +A példa kedvéért, hozzuk létre saját könyvtárunkban a jarmu nevű könyvtárat.
 +Tegyük fel, hogy a saját könyvtárunk a /​home/​joska. A "​pwd"​ parancs tanúsága ​
 +szerint pedig ebben a könyvtárban állunk. Kiadtuk a könyvtárlétrehozás ​
 +parancsát:
 +  mkdir jarmu
 +
 +Szeretnénk az új könyvtárba belépni, vagyis könyvtárat cserélni. Erre a "​cd"​
 +parancs ad lehetőséget:​
 +  cd jarmu
 +A "​pwd"​ paranccsal ellenőrizzük a könyvtárváltás meglétét.
 +
 +A "​cd"​ parancs első "​c"​ betűje a "​change"​ szóból van, a "​d"​ betű pedig a
 +"​directory"​ szóból. ​
 +
 +Ha jól dolgoztunk a pwd parancs kimenete most a következő:​
 +  /​home/​joska/​jarmu
 +
 +Most a "​jarmu"​ könyvtáron belül hozzunk létre egy "​szeker"​ nevű könyvtárat:​
 +  mkdir szeker
 +
 +Lépjünk bele:
 +  cd szeker
 +
 +Ezek után a pwd kimenete:
 +  /​home/​joska/​jarmu/​szeker
 +
 +Most vissza kellene lépni az előző könyvtárba. Az előző könyvtárat két pont jelképezi:
 +  ..
 +Másként, ha most éppen a /​home/​joska/​jarmu/​szeker könyvtárban állunk akkor a két pont 
 +a /​home/​joska/​jarmu könyvtárat jelképezi. Ha szeretnénk visszalépni a jarmu könyvtárba,​
 +akkor megtehetjük,​ hogy a teljes útvonal megadásával így lépek vissza:
 +  cd /​home/​joska/​jarmu
 +De ugyanezt az eredményt érhetjük el, ha cd paranccsal használjuk a két pontot:
 +  cd ..
 +
 +Ez utóbbi parancs bármely könyvtárban is állunk, azt eredményezi,​ hogy egy könyvtárral
 +feljebb kerülünk. ​
 +
 +Ugyanígy használhatjuk a gyökérkönyvtár jelét a fájlrendszer gyökerébe jutáshoz:
 +  cd /
 +Ezzel a fájlrendszer gyökerébe jutunk. ​
 +
 +Van még egy különleges karakter, amely a saját könyvtárunkat jelképezi. ​
 +Ez a következő:​
 +  ~
 +Tilde karakternek hívják. Bármely könyvtárban is állok a könyvtárstruktúrában, ​
 +ha kiadom a következő parancsot, a saját könyvtárunkba fogok jutni:
 +  cd ~
 +
 +Vegyük észre, hogy a várakozási jelben is szerepel egy tilde karakter (Legtöbb linuxos
 +terjesztésben így van beállítva a várakozási jel).
 +
 +A saját könyvtárunkba visszaléphetünk egyszerűen a cd paranccsal is:
 +  cd
 +
 +Az utoljára használt könyvtárba is könnyedén visszaléphetünk:​
 +  cd -
 +
 +
 +
 +
 +
 +==== Könyvtár törlése ====
 +
 +Az rmdir parancs segítségével minden megadott üres könyvtárat törölhetünk:​
 +
 +  rmdir konyvtarnev
 +
 +
 +Itt is használható a <​nowiki>​-p</​nowiki>​ 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 ====
 +
 +<code bash>
 +mv konyvtar001 konyvtar002/​
 +</​code>​
 +
 +A konyvtar002 könyvtárba mozgatjuk a konyvtár001 nevű könyvtárat.
 +
 +
 +
 +
 +==== Könyvtárak másolása ====
 +
 +<code bash>
 +cp -R dir1 dir2
 +</​code>​
 +
 +Ha a dir2 már egy létező könyvtár, akkor annak tartalmába másol!
 +Ha nincs dir2 könyvtára akkor az aktuális könyvtárban létrehozza a
 +dir2 könyvtárat. ​
 +
 +A -R kapcsoló hatására valójában rekurzív másolásra adunk parancsot,
 +de könyvtármásolásnál éppen ezt szeretnénk. ​
 +
 +==== Könyvtárnevek mérete ====
 +
 +A könyvtárnevek maximális hossza 256 bájt. De az ékezetesekkel duplán kell számolnunk.
 +
 +
 +
 +==== 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
 +  * Lépjen be a /sys/block könyvtárba. Derítse ki milyen állományok vannak ebben a könyvtárban.
 +  * Lépjen be a /​sys/​block/​sda könyvtárba,​ ha az létezik. Milyen állományok vannak benne?
 +
 +
 +===== 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:​
 +  /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
 +
 +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
 +    * 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.
 +    * /​dev/​sr0 ​  A CD-ROM elérése.
 +  * /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. ​
 +    * /​media/​cdrom0
 +  * /mnt   ​Kézzel csatlakoztatott más fájlrendszerek.
 +    * /mnt/cdrom Ha kézzel csatolunk egy CD-ROM-t a fájlrendszerbe,​ akkor azt ide szokás.
 +  * /proc  A memória leképezése fájlokra.
 +  * /root  A root (rendszergazda) felhasználó saját könyvtára.
 +  * /sbin  A rendszergazda parancsainak programjai itt találhatók.
 +  * /​selinux ​ A selinux szolgáltatás beállításai.
 +  * /srv   A szolgáltatásokat nyújtó programok adatállományai (mint a home).
 +  * /sys   ​Néhány kernelobjektum itt van leképezve.
 +  * /tmp   ​Ideiglenes fájlok helye.
 +  * /usr   A programok könyvtárai.
 +    * /usr/bin/ : Futtatható programok a felhasználók számára.
 +    * /​usr/​include/​ : A programozáshoz szükséges "​include"​ fájlok helye.
 +    * /usr/lib/ : Osztott programkönyvtárak.
 +    * /usr/sbin/ : A root felhasználók programjai.
 +    * /usr/share/ : Architektúra független adatok.
 +    * /usr/src/ : Forráskódok. (Debian csomagok fordításához;​ Lásd még a /​usr/​local/​src/​ 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:​
 +
 +<code bash>
 +touch fajlneve.txt
 +</​code>​
 +
 +
 +Az echo paranccsal is létrehozhatunk fájlokat. Ekkor az echo után írt "​Szöveg"​ a fájlba kerül. ​
 +<code bash>
 +echo "​alma"​ > gyumolcsok.txt
 +</​code>​
 +
 +
 +==== Fájlok törlése ====
 +
 +Egy fájl törlése:
 +<code bash>
 +rm fajlnev
 +</​code>​
 +
 +Törlés rekurzívan:​
 +<code bash>
 +rm -r fajlnev
 +</​code>​
 +
 +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:
 +<code bash>
 +rm -r könyvtárnév
 +</​code>​
 +
 +Az egész könyvtárfa törlése a gyökértől kiindulva:
 +<code bash>
 +rm -r /
 +</​code>​
 +
 +A -f kapcsolóval kérdés nélkül törölhetők az állományok. A nem létező
 +állományok miatt sincs visszajelzés:​
 +  rm -f vmi.txt
 +
 +Egyszerre több fájl is törölhető:​
 +  rm vmi1 vmi2 vmi3
 +
 +Ha óvatosak szeretnénk lenni, ezért minden fájl törlése előtt elvárnánk egy
 +kérdés, hogy törölhetjük-e,​ akkor használjuk az -i kapcsolót:
 +  rm -i vmi1 vmi2 vmi3
 +
 +Ha kérdés nélkül szeretnék egy könyvtárat,​ tartalmukkal együtt töröli, ​
 +használjuk a -f és -r kapcsolókat:​
 +  rm -rf könyvtárnév
 +
 +A -r mondja meg, hogy legyen rekurzív a művelet, a -f pedig, hogy 
 +ne problémázzon az rm parancs.
 +
 +Az rm parancs mellett használható a "​*"​ jelölése, amely bármilyen
 +szövegre illeszkedik. a .txt kiterjesztésű fájlok törlése:
 +  rm *.txt
 +
 +A csillag karakter persze állhat a bárhol a mintában.
 +
 +
 +==== Fájlok átnevezése ====
 +
 +<code bash>
 +mv fajl001 fajl002
 +</​code>​
 +
 +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:​
 +<code bash>
 +mv fajl konyvtar
 +</​code>​
 +
 +vagy:
 +
 +<code bash>
 +mv fajl konyvtar/
 +</​code>​
 +
 +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ó:
 +
 +<code bash>
 +mv fajl1 fajl2 fajl3 konyvtar
 +</​code>​
 +
 +
 +==== Fájlok másolása ====
 +
 +
 +Az aktuális könyvtárban szeretnénk a file1 állományról egy file2 másolatot:
 +<code bash>
 +cp fajl01 fajl02
 +</​code>​
 +
 +
 +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:
 +
 +<code bash>
 +cp fajl01 munka/
 +</​code>​
 +
 +A -u, vagy hosszabban <​nowiki>​--update</​nowiki>​ kapcsolóval,​ a nem
 +kerülnek másolásra azok a nem-könyvtár fájlok, amelyek azonos
 +vagy újabb módosítási idővel rendelkeznek.
 +  cp -u *.c cel
 +
 +
 +
 +==== Fájlok tartalmának megtekintése ====
 +
 +Gyakran szükség van arra, hogy gyorsan belenézzünk egy fájlba. Erre használható például a cat parancs:
 +<code bash>
 +cat fajlnev
 +</​code>​
 +
 +
 +<code bash>
 +more fajlnev
 +</​code>​
 +
 +<code bash>
 +less fajlnev
 +</​code>​
 +
 +==== Fájlok darabolása ====
 +
 +<code bash>
 +split -b 1440000 fajlnev
 +</​code>​
 +
 +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:
 +
 +
 +<code bash>
 +cat x* >> fajlnev
 +</​code>​
 +
 +
 +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:​
 +
 +<code bash>
 +vi virag.txt
 +</​code>​
 +
 +vagy
 +
 +<code bash>
 +nano virag.txt
 +</​code>​
 +
 +
 +vagy
 +
 +<code bash>
 +mcedit virag.txt
 +</​code>​
 +
 +
 +
 +Az Midnight Commander beépített szövegszerkesztője. Valójában egy szimbolikus link az mc parancsra. ​
 +Ebből következik,​ hogy a használatához az "​mc"​ csomagnak telepítve kell lennie a gépünkön.
 +
 +
 +
 +==== Nano ====
 +=== Billentyűk ===
 +
 +A nano szövegszerkesztő alapvető billentyűkombinációi Ctrl gombbal működnek. ​
 +Ezt maga a szövegszerkesztő is tudatja velünk, de a Ctrl helyett egy
 +"​^"​ karaktert látunk mindig. A mentés például a Ctrl+O billentyűkombinációval
 +történhet,​ amit így látunk: ​
 +  ^O
 +
 +Vagy a kilépés Ctrl + X billentyűkombináció,​ amelyet így látunk:
 +  ^X
 +
 +
 +=== Szerkesztés ===
 +A vágólapos szerkesztési műveleteket kezdjük a kijelöléssel. ​
 +Először meg kell mondani, hogy most kijelölés jön. A kijelölés
 +végét nem kell jelezni (ellentétben az mceditel).
 +Ha kijelöltük azt amit vágólapra szeretnénk tenni, akkor el kell dönteni ezt hogyan szeretnénk.
 +A kijelölt szöveg kivágásával,​ vagy másolásával. Ennek megfelelő billentyűkombinációt nyomunk.
 +Ezt követően arra a helyre lépünk, ahova a szöveget be kell illeszteni, amit Ctrl +  U kombinációval
 +tehetünk meg.
 +
 +
 +
 +
 +|  Alt + A | Szelekció ​ megkezdése ​ |
 +|  Alt + 6  | Másolás (ha nincs kijelölve, akkor az aktuális sor) |
 +|  Ctrl + K  | Kivágás |
 +|  Ctrl + U  | Beillesztés |
 +
 +
 +
 +
 +A Ctrl + K billentyűkombinációt használhatjuk kijelölés nélkül is. Ekkor azt a sort
 +vágja ki, amelyikben éppen állt a kurzor a Ctrl + K lenyomásakor.
 +
 +
 +
 +
 +=== Egyéb ===
 +
 +|  Alt + Q  | Kijelölés kezdete |
 +
 +==== Linkek a fájlrendszerben ====
 +
 +=== Merev link ===
 +
 +Amikor létrehozunk egy állományt a merevlemezen létrehozunk számára egy
 +inode nevű bejegyzést. Az inode tartalmazza a következő információkat:​
 +  * időbélyegek
 +  * méret
 +  * tulajdonos
 +  * csoport
 +  * jogok
 +  * elfoglalt blokk méret
 +  * IO-blokk méret
 +
 +A fájl neve nem az inode-ban tárolódik. A fájlnév a szülő könyvtár ​
 +tartalmi részében tárolódik. A név mellett egy mutató jön létre
 +a fájl inode-ra. Ezt nevezzük linknek. ​
 +
 +További linkeket hozhatunk létre az ln paranccsal: ​
 +
 +<code bash>
 +touch fruit.txt
 +ln fruit.txt frutta.txt
 +</​code>​
 +A fruit.txt és a frutta.txt is ugyanarra az inode-ra mutat. Ellenőrizzük az ls
 +paranccsal. A -i kapcsoló megmutatja inode azonosítót:​
 +  ls -li fruit.txt frutta.txt
 +
 +A lehetséges kimenet:
 +<​code>​
 +1059029 -rw-r--r-- 2 janos janos 2 okt   12 21:06 fruit.txt
 +1059029 -rw-r--r-- 2 janos janos 2 okt   12 21:06 frutta.txt
 +</​code>​
 +
 +
 +Ha már két merev link mutat egy fájlra, a fájl csak akkor törlődik, ha mindkét linket töröljük.
 +
 +Vegyük a következő példát. Létrehozok egy fájlt:
 +<code bash>
 +touch erdo.txt
 +</​code>​
 +
 +Most létrehozok egy rámutató linket:
 +<code bash>
 +ln erdo.txt fak.txt
 +</​code>​
 +
 +Most törlöm a erdo.txt-t:
 +<code bash>
 +rm erdo.txt
 +</​code>​
 +A fájl maga nem kerül törlésre, mert a fak.txt nevű
 +link még az állományra mutat. Az állomány törlése csak
 +ekkor történhet meg.
 +
 +Az ls -l parancs kimenetében vegyük észre a linkek számát.
 +
 +=== Szimbolikus link ===
 +
 +A szimbolikus link másként viselkedik, mint a merev link,
 +ezért is nevezzük szimbolikusnak. ​
 +
 +A szimbolikus link létrehozásakor létrejön egy új inode bejegyzés. ​
 +Az ebben található mutató viszont nem célként megadott inode-ra mutat.
 +Helyette a célhoz tartozó névre mutat (ami egy merev link neve). ​
 +
 +Ennek eredménye, ha töröljük a merev linket, a szimbolikus link
 +nem fog mutatni sehova. ​
 +
 +
 +Szimbolikus link létrehozása
 +<code bash>
 +ln -s fajlnev linkfajlra
 +</​code>​
 +
 +
 +A fájlrendszerben szimbolikus linkre példa:
 +  ls -l /vmlinuz
 +
 +A kísérletezéshez lehetőleg újonnan telepített Linuxot használjunk,​
 +ahol a háttérben nagy eséllyel nem jönnek létre újabb fájlok,
 +nincs még szolgáltatás telepítve.
 +
 +Kísérletképpen hozzuk létre a fruit.txt állományt,​ ha az még nem létezik.
 +A kísérlet folytatása előtt nézzük meg az adott fájlrendszeren mennyi
 +a szabadon felhasználható inode:
 +  stat -f fruit.txt
 +A kimenet utolsó sorában például ilyet láthatunk:
 +  Inode-ok: összes: 36626432 ​  ​szabad:​ 35042423
 +Vagyis van 35042423 szabad inode.
 +
 +Most hozzunk létre egy obst.txt nevű szimbolikus linket, ami a fruit.txt-re mutat:
 +  touch fruit.txt
 +  ln -s fruit.txt obst.txt
 +
 +Most nézzük meg a hozzájuk tartozó inode azonosítókat:​
 +  ls -li fruit.txt obst.txt
 +
 +A fruit.txt és az obst.txt inode azonosítói különböznek.
 +
 +Most nézzük meg újra, hány szabad inode van:
 +  stat -f fruit.txt
 +
 +A kimenet utolsó sora ilyen lehet:
 +  Inode-ok: összes: 36626432 ​  ​szabad:​ 35042422
 +
 +A szabad inode-ok számra eggyel csökkent, azaz létrejött egy új inode.
 +
 +==== Fájlok statisztikája ====
 +
 +A stat parancs még több információt szolgáltat egy állományról vagy egy könyvtárról.
 +
 +<code bash>
 +stat fajlnev
 +</​code>​
 +
 +
 +Például:
 +
 +<code bash>
 +stat log.txt
 +</​code>​
 +
 +<file io>
 +  File: "​log.txt"​
 +  Size: 0         ​ Blocks:​ 0          IO Block: 4096   ​szabályos üres fájl
 +Device: 802h/​2050d Inode:​ 1461005 ​    ​Links:​ 1
 +Access: (0644/​-rw-r--r--) ​ Uid: ( 1000/  andras) ​  Gid: ( 1000/  andras)
 +Access: 2012-01-15 23:​00:​17.365731988 +0100
 +Modify: 2011-08-09 22:​35:​50.584228887 +0200
 +Change: 2011-08-09 22:​35:​50.584228887 +0200
 +</​file>​
 +
 +
 +| File | A fájl neve |
 +| Size | A fájl mérete |
 +| Blocks | A fájl által használt blokkok száma (512 bájtos blokkokkal számol!) |
 +| IO | IO blokkméret a fájl számára |
 +| fájltípus | szabályos fájl, \\ szabályos üres fájl \\ könyvtár \\ szimbolikus link \\ foglalat \\ speciális karakterfájl \\ speciális blokkfájl |
 +| Device | Az eszköz neve hexadecimális és decimális formában. |
 +| Inode | A fájl egyedi azonosítója a fájlrendszerben |
 +| Links | Linkek száma a fájlra |
 +| Access | Hozzáférés szám és karakterformában. |
 +| Uid | Tulajdonos |
 +| Gid | Csoport |
 +| Access | Utolsó fájlolvasási időpont |
 +| Modify | A fájl tartalmának utolsó változása |
 +| Change | A fájl inode leírójának utolsó változása |
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +<code bash>
 +stat konyvtarnev
 +</​code>​
 +
 +
 +Magáról a fájlrendszerről kaphatunk információt a -f kapcsoló megadásával:​
 +
 +
 +<code bash>
 +stat -f fajlnev
 +</​code>​
 +
 +
 +Például: ​
 +
 +<code bash>
 +stat -f log.txt
 +</​code>​
 +
 +<file io>
 +  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
 +</​file>​
 +
 +
 +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 <​nowiki>​-c vagy a --format</​nowiki>​ 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
 +
 +<​code>​
 +$ stat --format=%B vmi.txt
 +512
 +</​code>​
 +
 +==== Fájlok mérete ====
 +
 +A fájlok lemezen foglalt helyét és méretét tudhatjuk meg a "​du"​ parancs segítségével. ​
 +A du alapértelmezésként a lemezen elfoglalt helyet mutatja meg blokkméretben. ​
 +1 blokk 1 kibibájt-nak számít, azaz 1024 bájtnak. ​
 +
 +
 +Ha bájt-ban szeretnénk megkapni pontosan mekkora az állomány mérete, akkor a <​nowiki>​-b vagy --bytes</​nowiki>​ 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:
 +
 +<​code>​
 +4 lorem.txt
 +</​code>​
 +
 +Nem négy bájt. Négy kibibájt (4 * 1024 bájt). Ennyi helyet foglal a lemezen. ​
 +A du parancs tehát alapértelmezésben 1024-es blokkokkal számol. ​
 +
 +Ha be van állítva a POSIXLY_CORRECT környezeti változó, akkor 512 bájtos blokkokkal kell számolnunk. Állítsuk be a változót és nézzük meg újra a parancs kimenetét:
 +<​code>​
 +set -o posix
 +export POSIXLY_CORRECT
 +du lorem.txt
 +</​code>​
 +Megjegyzés:​ A korábbi Bash változatokban (Debian10 előtt), nem volt szükség az export parancsra.
 +Ugyanakkor, a set és export helyett megfelel egy export POSIXLY_CORRECT=1 utasítás is.
 +
 +A kimenet:
 +<​code>​
 +8 lorem.txt
 +</​code>  ​
 +A kimenetben most 8 blokk, vagyis 8 darab 512 bájtos helyet foglal az állományunk,​
 +ami 4096 bájt összesen.
 +
 +A POSIXLY_CORRECT környezeti változót azért szokták beállítani,​ hogy a 
 +programok úgy működjenek,​ hogy megfeleljenek a POSIX szabványnak.
 +A POSIXLY_CORRECT kikapcsolásához:​
 +  set +o posix
 +A set Bash belső parancsa, több információért nézd meg a leírását:​
 +  help set
 +
 +
 +
 +Most nézzük meg a valós méretét:
 +  du -b lorem.txt
 +
 +vagy:
 +  du --bytes lorem.txt
 +
 +26 bájtot kapunk:
 +<​code>​
 +26 lorem.txt
 +</​code>​
 +
 +
 +
 +
 +Nézzük meg a stat paranccsal is a lorem.txt lefoglalt blokkméretét. Vegyük észre a különbséget. A stat azt mondja 8 blokk, mert az eleve 512 bájt mérettel számol.
 +
 +
 +Ebből láthatjuk, hogy az adott fájlrendszer blokkmérete 4096 bájt. ​
 +
 +A teszteléshez létrehozhatunk egy 4096 bájt nagyságú fájlt:
 +  dd if=/​dev/​zero of=teszt.txt bs=1024 count=4
 +
 +Nézzük meg a du paranccsal hány blokkot foglal:
 +
 +<​code>​
 +$ du teszt
 +4       ​teszt.txt
 +</​code>​
 +
 +Most adjunk hozzá még két bájtot:
 +  echo a >> teszt.txt
 +Megjegyzés:​ egy sortörés is hozzáíródik,​ azért 2 bájt. ​
 +
 +Ellenőrizzük újra:
 +<​code>​
 +$ du teszt
 +8       ​teszt.txt
 +</​code>​
 +
 +==== Fájlnevek ====
 +
 +A fájlnevek tartalmazhatnak ékezetes fájlneveket,​ számokat, alulvonást (_), kötőjelet,​ pontot stb.
 +
 +  Maximális hosszuk: 255 bájt
 +
 +Vegyük észre, hogy a 255 a karakterek száma helyett a szükséges bájtokat tartalmazza. A magyar ékezetes betűk például 2 bájtosak.
 +
 +A fájlnevek lehetséges hossza fájlrendszerfüggő,​ de általában mindenhol 255. 
 +
 +
 +Próbáljunk meg létrehozni egy olyan fájlt, amelynek a neve 255 bájt hosszú:
 +<​code>​
 +touch 012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234
 +</​code>​
 +
 +A fájl létrejön. Most próbáljunk meg 256-tal:
 +
 +<​code>​
 +touch 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345
 +touch: '​0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345'​ elérése sikertelen: Túl hosszú fájlnév
 +
 +</​code>​
 +A fájl nem hozható létre a hibaüzenet:​ Túl hosszú fájlnév.
 +
 +A példában megadott fájlnév hosszát magunk is ellenőrizhetjük a wc -c segítségével.
 +Vegyünk egy rövidebb fájl nevet ami csak 3 karakterből áll.
 +Vegyük a fenti fájlnévnek csak az első 3 karakterét,​ hogy megnézzük
 +hogyan működik a wc -c. 
 +
 +  echo 012 | wc -c
 +  4
 +Az echo 012 | wc -c eredménye 4, tehát eggyel több, mint ahány karakter van.
 +Most másoljuk az 012 három helyére a fent megadott teljes fájlnevet,
 +ellenőrizzük az eredményt.
 +
 +
 +Megjegyzés:​ Egy útvonal maximális hossza 4096 karakter.
 +
 +A kernel forrásában a limits.h fejállományban van definiálva a maximális nagyság.
 +  * https://​github.com/​torvalds/​linux/​blob/​master/​include/​uapi/​linux/​limits.h
 +
 +<code c>
 +[...]
 +#define NAME_MAX ​        ​255 /​* # chars in a file name */
 +#define PATH_MAX ​       4096 /* # chars in a path name including nul */
 +[...]
 +</​code>​
 +
 +Ha gépünkön telepítve vannak a fejállományok,​ akkor ott is ellenőrizhetjük.
 +4.9.0-3-as kernel esetén:
 +  /​usr/​src/​linux-headers-4.9.0-3-common/​include/​uapi/​linux/​limits.h
 +
 +
 +==== Fájlok keresése ====
 +
 +
 +Keresés tartalom alapján:
 +  find . -name "​*.txt"​ -print | xargs grep "Nagy József"​
 +
 +Olyan .txt kiterjesztésű fájlokat keresünk, amelyben szerepel a "Nagy József"​ név.
 +
 +
 +Egyszerűbben:​
 +  grep -lir "Nagy József"​ /​utvonal/​konyvtar
 +Olyan fájlokat keresünk, adott könyvtárban,​ amelyben szerepel a "Nagy József név.
 +Az eredmény a fájl neve.
 +
 +Harmadik verzió:
 +  egrep -R "Nagy József"​ /​útvonal/​könyvtár
 +
 +Negyedik verzió:
 +  grep -Pri "Nagy József"​ /​útvonal/​könyvtár
 +
 +A kapcsolók rendre:
 +  * <​nowiki>​-P --perl-regexp ​ -- A minta Perl reguláris kifejezés</​nowiki>​
 +  * <​nowiki>​-r --recursive ​   -- Rekurzívan az alkönyvtárakban is keres</​nowiki>​
 +  * <​nowiki>​-i --ignore-case ​ -- Kis és nagybetűk megegyeznek</​nowiki>​
 +
 +
 +
 +A find és grep parancsról később részletesen is szó esik.
 +
 +A locate parancs:
 +
 +A locate parancs telepítése:​
 +  apt install locate
 +
 +  locate minta
 +Létezik egy /​var/​lib/​mlocate/​mlocate.db nevű adatbázis, amely
 +segít megtalálni állományokat. Az adatbázis a következő
 +paranccsal frissíthető:​
 +  updatedb
 +
 +
 +
 +
 +==== 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. ​
 +
 +==== 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?
 +
 +
 +
 +===== 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ől a "​help"​ parancs tájékoztat minket.
 +
 +A help valójában egy belső parancs amit Bash értelmez.
 +
 +A help parancs paraméterezhető,​ lekérdezhető vele egy konkrét ​
 +parancs kézikönyve:​
 +  help -m cd
 +==== 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.
 +
 +<​code>​
 +apropos könyvtár
 +basename (1)         - levágja a könyvtárat és a végződést a fájlneve...
 +chroot (1)           - parancs futtatása eltérő gyökérkönyvtárral
 +chroot (8)           - megváltoztatja a gyökérkönyvtárat és végrehajt ...
 +cp (1)               - fájlok és könyvtárak másolása
 +find (1)             - fájlokat keres egy könyvtárstruktúrában
 +ldd (1)              - kiírja a program által használt megosztott könyvt...
 +ls (1)               - könyvtárak tartalmának listázása
 +mkdir (1)            - könyvtár létrehozása
 +pwd (1)              - kiírja az aktuális (munka-) könyvtárat
 +rmdir (1)            - törli az üres könyvtárakat
 +whois (1)            - Internet user név könyvtár szolgáltatás
 +</​code>​
 +
 +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. ​
 +
 +
 +<​code>​
 +$ apropos directory
 +alphasort (3)        - scan a directory for matching entries
 +basename (1)         - strip directory and suffix from filenames
 +bf_compact (1)       - shell script to compact a bogofilter directory
 +bf_compact-bdb (1)   - shell script to compact a bogofilter directory
 +bf_copy (1)          - shell script to copy a bogofilter working directory
 +bf_copy-bdb (1)      - shell script to copy a bogofilter working directory
 +bf_tar (1)           - shell script to write a tar file of a bogofilter direc...
 +bf_tar-bdb (1)       - shell script to write a tar file of a bogofilter direc...
 +bindtextdomain (3)   - set directory containing message catalogs
 +chdir (2)            - change working directory
 +chroot (2)           - change root directory
 +chroot (8)           - run command or interactive shell with special root dir...
 +closedir (3)         - close a directory
 +dbus-cleanup-sockets (1) - clean up leftover sockets in a directory
 +depmod.conf (5)      - Configuration file/​directory for depmod
 +desktop-file-install (8) - install a desktop file to the applications directory
 +dh_installdeb (1)    - install files into the DEBIAN directory
 +dh_testdir (1)       - test directory before building debian package
 +dir (1)              - list directory contents
 +dirfd (3)            - get directory stream file descriptor
 +dirsplit (1)         - splits directory into multiple with equal size
 +
 +...
 +
 +pwd (1)              - print name of current/​working directory
 +pwdx (1)             - report current working directory of a process
 +readdir (2)          - read directory entry
 +readdir (3)          - read a directory
 +readdir_r (3)        - read a directory
 +readlinkat (2)       - read value of a symbolic link relative to a directory ...
 +remove (3)           - remove a file or directory
 +renameat (2)         - rename a file relative to directory file descriptors
 +rewinddir (3)        - reset directory stream
 +rmdir (2)            - delete a directory
 +...
 +</​code>​
 +
 +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. 
 +
 +==== Beépített parancs vagy önálló program ====
 +
 +A type parancs segítségével megtudhatjuk egy adott parancsról,​ hogy
 +azt a shell tudja, beépített parancsként,​ vagy valahol a fájlrendszerben
 +egy önálló program. Maga a type bash shell része:
 +  $ type type
 +
 +Még néhány beépített parancs:
 +  $ type pwd
 +  pwd egy beépített parancs
 +
 +  $ type cd
 +  cd egy beépített parancs
 +
 +Ha parancs nem shell parancs akkor kiírja annak útvonalát a which utasításhoz hasonlóan:
 +  $ type cp
 +  cp: /bin/cp
 +
 +
 +==== 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.
 +
 +<code bash>
 +man ls
 +</​code>​
 +
 +
 +=== Fejezetek ===
 +
 +A kézikönyv,​ angolul manual, innen a parancs röviden: man. 
 +A kézikönyvek 9 fejezetre oszthatók. Ezek:
 +
 +  - Futtatható programok vagy shell 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:
 +<code bash>
 +man ps
 +</​code>​
 +
 +A chmod parancs:
 +<code bash>
 +man chmod
 +</​code>​
 +
 +A chown parancs:
 +<code bash>
 +man chown
 +</​code>​
 +
 +
 +=== 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:
 + 
 +<code bash>
 +man -L en ps
 +</​code>​
 +
 +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 parancsokat && karakterpárossal is tagolhatjuk:​
 +  parancs1 && parancs2
 +
 +Ekkor a parancs2 csak akkor fog végrehajtódni,​ ha az első sikeres volt. 
 +
 +
 +A prancssort két részre lehet osztani. A parancs neve és az argumentumok.
 +
 +Példa:
 +  ls -1 -F fajlnev1
 +A példában az ls a parancs neve ami után jön az pedig mind 
 +argumentum. Itt az ls parancsnak három paramétere van.
 +
 +Az argumentumokat kapcsolókra és paraméterekre osztjuk fel.
 +
 +|   ​Parancssor ​ |||
 +|  parancsnév ​ |  argumentumok ​ ||
 +|  parancsnév ​ |  kapcsolók ​ |  paraméterek ​ |
 +
 +
 +==== Opciók ====
 +
 +Kapcsolók vagy opciók a parancs nevét követik.
 +Egy vagy két kötőjel vezeti be őket. ​
 +Ha egy kötőjel van, átláthatóbb egy hosszú parancssor.
 +Ha hosszú formát használjuk olvashatóbb.
 +Hogy egy-egy parancs esetén mi van megvalósítva,​ az
 +csak a programozón múlik.
 +
 +Az opciók módosítják a parancs végrehajtását.
 +
 +| -F | <​nowiki>​--</​nowiki>​classify |
 +| -a | <​nowiki>​--</​nowiki>​all |
 +| -s | <​nowiki>​--</​nowiki>​size |
 +
 +
 +==== Paraméterek ====
 +
 +
 +A paraméterek az opciókat követik. Egy vagy több is lehet belőlük.
 +
 +A paraméterek határozzák meg, min kell végrehajtani a parancsot.
 +
 +
 +  ls -1 -F  file1 file2 file3
 +
 +
 +Két opció: ​ -1 -F 
 +
 +Három paraméter: file1 file2 file3
 +
 +==== Összevonható opciók ====
 +
 +
 +  ls -1 -F file1
 +
 +  ls -F -1 file1
 +
 +  ls -1F file1
 +
 +  ls -F1 file1
 +
 +A -1 és -F opciókat egyetlen kötőjellel is megadhatom. Ilyenkor a két opciót leírom egymás mellé. A sorrend lényegtelen. ​
 +==== WhiteSpace karakterek ====
 +
 +WhiteSpace karakter a szóköz és a tabulátor. A parancs neve, az opciók és a paraméterek között ezekből egy vagy több is szerepelhet:​
 +
 +  ls <​szóköz>​-l<​szóköz>​-F<​szóköz>​file1
 +
 +  ls <​tab>​-l<​tab>​-F<​tab>​file1
 +
 +  ls <​szóköz><​tab>​-l<​szóköz>​-F<​tab><​tab><​tab>​file1
 +
 +==== Az előző argumentum felhasználása ====
 +
 +Az előző argumentumot felhasználhatjuk !$ beírásával.
 +
 +  mkdir Dokumentumok
 +  cd !$
 +
 +Használhatjuk a <​Alt>​+<​.>​ billentyűkombinációt is.
 +
 +==== Előző parancs használata ====
 +
 +Tegyük fel, hogy szeretnénk létrehozni a dir1 könyvtárban egy dir2 könyvtárat.
 +Beírjuk:
 +  mkdir dir1/dir2
 +
 +De kiderül, hogy a dir1 könyvtár nem is ebben a könyvtárban van.
 +A megfelelő könyvtárba váltunk, majd megismételjük a parancsot:
 +  !!
 +
 +
 +
 +
 +
 +
 +==== 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.
 +
 +
 +A gyumolcs.txt fájl tartalmát a képernyő helyett a gyumolcs2.txt fájlba irányítom:​
 +<code bash>
 +cat > gyumolcs.txt
 +szilva
 +barack
 +körte
 +alma<​Ctrl>​+<​D>​
 +</​code>​
 +
 +A bevitelt a <​Ctrl>​+<​D>​ 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:
 +
 +<code bash>
 +ls aaaa
 +</​code>​
 +
 +Az eredmény a képernyőre íródik. ​
 +<code bash>
 +ls: aaaa nem érhető el: Nincs ilyen fájl vagy könyvtár
 +</​code>​
 +
 +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:​
 +
 +<code bash>
 +ls aaaa 2> a.txt
 +</​code>​
 +
 +
 +Ezek után a képernyőre nem ír semmit a parancs. Az a.txt fájlban viszont:
 +<​code>​
 +ls: aaaa nem érhető el: Nincs ilyen fájl vagy könyvtár
 +</​code>​
 +
 +
 +
 +
 +
 +=== A bemenet átirányítása ===
 +
 +
 +A gyumolcs.txt fájl tartalmát a képernyőre írom:
 +<code bash>
 +cat < gyumolcs.txt
 +</​code>​
 +A cat bemenete alapértelmezetten a billentyűzet. Mi most azt mondtuk, hogy ez egy fájl legyen.
 +
 +
 +
 +
 +=== 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:​
 +<code bash>
 +cat < gyumolcs.txt > gyumolcs2.txt
 +</​code>​
 +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:
 +
 +<code bash>
 +echo "​banán"​ >> gyumolcs.txt
 +</​code>​
 +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.
 +
 +
 +<code bash>
 +program > kimenet 2>&1
 +</​code>​
 +
 +vagy:
 +
 +<code bash>
 +program &> kimenet.txt
 +</​code>​
 +
 +A kimenet stdout és az stderr képernyőre és fájlba írása, példa:
 +<code bash>
 +dir letezofaj.txt nemletezofajl.txt 2>&1 | tee kimenetifajl.txt ​
 +</​code>​
 +
 +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:
 +<​code>​
 +dir: nemletezofajl.txt nem érhető el: Nincs ilyen fájl vagy könyvtár
 +letezofajl.txt
 +</​code>​
 +
 +=== 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:
 +<code c>
 +printf("​Egy\n"​);​
 +</​code>​
 +
 +Ugyanezt csinálja a következő utasítás is:
 +<code c>
 +fprintf(stdout,​ "​Egy\n"​);​
 +</​code>​
 +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:​
 +<code c>
 +fprintf(stderr,"​Három\n"​);​
 +</​code>​
 +
 +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:
 +<code c main.c>
 +#include <​stdio.h>​
 +main()
 +{
 +    printf("​Egy\n"​);​
 +    fprintf(stdout,​ "​Kettő\n"​);​
 +    fprintf(stderr,​ "​Három\n"​);​
 +}
 +
 +</​code>​
 +
 +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:
 +<code bash>
 +gcc -o main main.c
 +</​code>​
 +
 +Elkészül egy main nevű állomány. Ha futtatjuk:
 +<code bash>
 +./main
 +</​code>​
 +a képernyőre íródik mind a három szám:
 +<​code>​
 +Egy
 +Kettő
 +Három
 +</​code>​
 +
 +Most használjuk az átirányítást. Irányítsuk fájlba az alapértelmezett kimenetet:
 +<code bash>
 +./main > naplo.txt
 +</​code>​
 +
 +vagy:
 +<code bash>
 +./main 1> naplo.txt
 +</​code>​
 +
 +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:​
 +
 +
 +<code bash>
 +./main 2> naplo.txt
 +</​code>​
 +
 +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:
 +<code bash>
 +./main &> naplo.txt
 +</​code>​
 +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. 
 +
 +
 +<code bash>
 +cat gyumolcs.txt | sort
 +</​code>​
 +
 +
 +==== Többszörös átirányítás ====
 +
 +
 +Létrehozunk egy állományt.
 +<code bash>
 +cat > gyumolcs3.txt
 +körte
 +szilva
 +barack
 +alma
 +szilva<​Ctrl>​+<​D>​
 +</​code>​
 +
 +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.
 +
 +<code bash>
 +cat gyumolcs3.txt | sort | uniq
 +</​code>​
 +
 +
 +Esetleg ha szeretnénk megszámoltatni a sorok számát is, akkor:
 +
 +<code bash>
 +cat gyumolcs3.txt | sort | uniq | wc -l 
 +</​code>​
 +
 +Az egésznek az eredményét pedig ugyancsak fájlba irányíthatjuk:​
 +
 +<code bash>
 +cat gyumolcs3.txt | sort | uniq | wc -l > gyumolcsszam.txt
 +</​code>​
 +==== Fájl tartalmának törlése ====
 +
 +A ">"​ karakter önmagában is kiadható, mint egy parancs. ​
 +Ha utána írunk egy állományt,​ annak tartalma törlődik.
 +Így használható állományok tartalmának törlésére:​
 +  > vmi.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. 
 +
 +
 +==== Útvonal beállítása ====
 +
 +Parancssor beállítása általánosságban:​
 +<code bash>
 +export PATH=$PATH:/​új/​útvonal
 +</​code>​
 +
 +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:
 +<code bash>
 +export PATH=$PATH:/​home/​joska/​programok
 +</​code>​
 +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:
 +<code bash>
 +mcedit /​home/​joska/​.bashrc
 +</​code>​
 +
 +Vagy ha éppen a /home/joska könyvtárban állunk akkor csak röviden:
 +<code bash>
 +mcedit .bashrc
 +</​code>​
 +
 +Parancssorból egyetlen paranccsal is megoldhatjuk a fájl végére írást:
 +<code bash>
 +echo "​export PATH=$PATH:/​home/​joska/​programok"​ >> /​home/​joska/​.bashrc
 +</​code>​
 +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:
 +<code bash>
 +cp /​home/​joska/​.bashrc /​home/​joska/​.bashrc_mentes
 +</​code>​
 +
 +
 +
 +==== 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 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:
 +<​code>​
 +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-pc-linux-gnu"​)
 +BASH_VERSION='​4.2.45(1)-release'​
 +COLORTERM=mate-terminal
 +COLUMNS=80
 +DBUS_SESSION_BUS_ADDRESS=unix:​abstract=/​tmp/​dbus-BIZkKgmiL9,​guid=d390d6b4250fc89be357def452828ff8
 +DBUS_STARTER_ADDRESS=unix:​abstract=/​tmp/​dbus-BIZkKgmiL9,​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
 +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-linux-gnu/​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:/​sbin:/​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/​.ICE-unix/​2711
 +SHELL=/​bin/​bash
 +SHELLOPTS=braceexpand:​emacs:​hashall:​histexpand:​history:​interactive-comments:​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
 +
 +...
 +</​code>​
 +
 +==== 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 janos@zold.and
 +
 +A kereséshez elsőként nyomjuk meg a <​Ctrl>​ + <R> 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 <Tab> billentyűt. A parancs
 +ezek után várja, hogy az <​Enter>​ billentyűvel végrehajtsuk.
 +
 +A használt parancsokat a history nevű paranccsal is megjeleníthetjük.
 +Egy idő után olyan sok 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
 +
 +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
 +  * <​nowiki>​-c,​ --create</​nowiki>​
 +  * <​nowiki>​-f,​ --file fájlnév</​nowiki>​
 +  * <​nowiki>​-z,​ --gzip, --ungzip</​nowiki>​
 +  * <​nowiki>​-x,​ --extract, --get</​nowiki>​
 +  * <​nowiki>​-t,​ --list</​nowiki>​
 +  * <​nowiki>​-W,​ --verify</​nowiki>​
 +
 +verify [UK: ˈverɪfaɪ] [US: ˈverəˌfaɪ] átvizsgál,​ bizonyít, ellenőriz
 +==== 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
 +
 +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
 +
 +
 +Az xz-utils telepítésével létrejön egy lzma nevű szimbolikus link is. 
 +Így használható ez is tömörítésre:​
 +  lzma fajlnev.tar
 +Ennek eredménye egy fajlnev.tar.lzma csomag. Néhány esetben ez jobb
 +tömörítési arányt adhat mint az xz parancs.
 +
 +==== zcat ====
 +A zcat tömörített fájlok tartalmát jeleníti meg. 
 +
 +  zcat /​var/​log/​user.log.2.gz
 +
 +
 +==== zless ====
 +A zcat tömörített fájlok tartalmát teszi lapozhatóvá.
 +
 +  zless /​var/​log/​user.log.2.gz
 +
 +
 +==== zgrep ====
 +A zgrep tömörített fájlok tartalmát szűrhetővé teszi.
 +
 +  zgrep postfix /​var/​log/​user.log.2.gz
 +
 +
 +
 +===== 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
 +
 +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 [[oktatas:​operációs_rendszerek:​témakörök#​útvonal|ú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:
 +
 +<code bash>
 +ps 
 +</​code>​
 +
 +<​code>​
 +PID TTY          TIME CMD
 +8205 pts/2    00:00:00 bash
 +8215 pts/2    00:00:00 ps
 +</​code>​
 +
 +Indítsunk három folyamatot, amelyet rögtön a háttérbe is teszünk:
 +
 +<code bash>
 +nano &
 +mcedit &
 +yes > /dev/null &
 +</​code>​
 +
 +A folyamataink megtekintése:​
 +<code bash>
 +ps
 +</​code>​
 +
 +
 +<​code>​
 +  PID TTY          TIME CMD
 + 2975 pts/0    00:00:00 bash
 +22403 pts/0    00:00:00 nano
 +22407 pts/0    00:00:00 mcedit
 +22409 pts/0    00:02:59 yes
 +22411 pts/0    00:00:00 ps
 +</​code>​
 +
 +
 +Nézzük meg milyen állapotban vannak a háttérbe tett folyamatok (ps a):
 +<​code>​
 +...
 +22403 pts/2    T      9:58 nano
 +22407 pts/2    T      0:00 mcedit
 +22409 pts/2    R      0:00 yes
 +...
 +</​code>​
 +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:
 +
 +<code bash>
 +ps ax
 +</​code>​
 +
 +A kapcsolókat nem vezettük be kötőjellel.
 +
 +Ezek után ehhez hasonló kimenetet láthatunk (részlet másolata):
 +
 +<​code>​
 +PID TTY      STAT   TIME COMMAND
 +...
 + 4244 ?        S      0:01 /​usr/​sbin/​apache2 -k start
 + 4245 ?        S      0:00 /​usr/​sbin/​apache2 -k start
 +...
 + 8474 ?        S      0:01 [kworker/​1:​2]
 + 8509 ?        R      0:01 [kworker/​1:​1]
 + 8572 pts/2    R+     0:00 ps ax
 +</​code>​
 +
 +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. ​
 +
 +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 <​nowiki>​-f</​nowiki>​ kapcsoló a full szóból ered, használata teljes kiemenet ad:
 +<code bash>
 +ps ax -f
 +</​code>​
 +
 +
 +Az "​f"​ alparancs viszont megmutatja a gyermek szülő kapcsolatokat:​
 +<code bash>
 +ps axf
 +</​code>​
 +
 +Például egy részlet:
 +<​code>​
 + 1366 ?        Ss     0:00 /​usr/​sbin/​apache2 -k start
 + 2522 ?        S      0:00  \_ /​usr/​sbin/​apache2 -k start
 + 2523 ?        S      0:00  \_ /​usr/​sbin/​apache2 -k start
 + 2524 ?        S      0:00  \_ /​usr/​sbin/​apache2 -k start
 + 2525 ?        S      0:00  \_ /​usr/​sbin/​apache2 -k start
 + 2526 ?        S      0:00  \_ /​usr/​sbin/​apache2 -k start
 +</​code>​
 +
 +
 +
 +A folyamatot indító felhasználók mutatása:
 +<code bash>
 +ps axu
 +</​code>​
 +
 +^  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) véget ért a futása, de a szülője még nem szüntette meg  |
 +|  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:
 +
 +<​code>​
 +ps -f
 +</​code>​
 +
 +<​code>​
 +UID        PID  PPID  C STIME TTY          TIME CMD
 +andras ​  22290 22151  0 07:32 pts/5    00:00:00 bash
 +andras ​  23071 22290  0 11:40 pts/5    00:00:00 ps -f
 +</​code>​
 +
 +  * 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
 +
 +Egy paraméterek esetén, pl. -f:
 +  * USER A folyamat tulajdonosa
 +  * %CPU A CPU idő osztva a folyamat futási idejével.
 +  * %MEM A folyamat rezidens része a fizikai memóriában
 +  * VSZ Az egész folyamat virtuális-memória használata (KiB)
 +  * RSS A folyamat azon része, amely a fizikai memóriában van (KiB)
 +  * STAT Többkarakteres folyamatállapot
 +  * START A folyamat indulási ideje vagy dátuma
 +  * COMMAND parancs az összes argumentummal
 +
 +=== Felhasználói oszlopok ===
 +
 +
 +<​code>​
 +ps -o pid,​stat,​cmd
 +  PID STAT CMD
 + 3823 Ss   bash
 + 4582 R+   ps -o pid,​stat,​cmd
 +</​code>​
 +
 +=== 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:
 +
 +<​code>​
 +UID    PID   ​PPID ​ C  STIME  TTY  TIME     CMD
 +root   ​1 ​    ​0 ​    ​0 ​ 10:24  ?    00:00:01 /sbin/init
 +root   ​2 ​    ​0 ​    ​0 ​ 10:24  ?    00:00:00 [kthreadd]
 +root   ​3 ​    ​2 ​    ​0 ​ 10:24  ?    00:00:00 [ksoftirqd/​0]
 +root   ​4 ​    ​2 ​    ​0 ​ 10:24  ?    00:00:00 [kworker/​0:​0]
 +root   ​5 ​    ​2 ​    ​0 ​ 10:24  ?    00:00:00 [kworker/​0:​0H]
 +...
 +</​code>​
 +
 +=== Zombi folyamatok listázása ===
 +
 +  ps ax | grep -w Z
 +
 +=== Szülők és gyermekek ===
 +
 +A postfix gyermekei:
 +  ps -ef --forest | grep -v grep | grep postfix
 +
 +Az apache2 gyermekei:
 +  ps -ef --forest | grep -v grep | grep apache2
 +
 +  ps f -C apache2
 +
 +
 +==== Folyamatok leállítása ====
 +=== Folyamat leállítása normál módon ===
 +
 +A folyamatot elsőként mindig próbáljuk meg normál módon leállítani,​
 +a 15-ös jelzéssel. Ha ez nem megy, csak és csakis akkor forduljunk a 9-es jelzéshez. ​
 +  kill -15 PIDSZÁM
 +
 +
 +=== Folyamat leállítása mindenképpen ===
 +<code bash>
 +kill -9 PIDSZÁM
 +</​code>​
 +
 +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:
 +
 +<code bash>
 +kill -9 4852
 +</​code>​
 +
 +
 +A Linuxos rendszerben a folyamatok jelzésekkel kommunikálnak egymással. A használható jelzéseket
 +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 ​ ^  Leírás ​ ^
 +|  HUP  |  1  |  Term  | A kontroll terminál megszűnt (A felhasználó kilépett) \\ vagy démon esetén újra kell olvasni a konfigurációs fájlokat ​ |
 +|  INT  |  2  |  Term  | Megszakítás a billentyűzetről (Ctrl + C)  |
 +|  QUIT  |  3  |  Core  | Kilépés a billentyűzetről ​ |
 +|  ILL  |  4  |  Core  | Illegális utasítás ​ |
 +|  ABRT  |  6  |  Core  | Leállítási jelzés az abort(3) függvénytől ​ |
 +|  FPE  |  8  |  Core  | Lebegőpontos kivétel ​ |
 +|  KILL  |  9  |  Term  | Semlegesítő jel  |
 +|  SEGV  |  11  |  Core  | Érvénytelen memóriahivatkozás |
 +|  PIPE  |  13  |  Term  | Eltört cső (pájp): írás vagy olvasás nem létező csőbe ​ |
 +|  ALRM  |  14  |  Term  | Időzítőjel az alarm(2)-től ​ |
 +|  TERM  |  15  |  Term  | Megszakításjel ​ |
 +|  USR1  |  30,​10,​16 ​ |  Term  | Felhasználó által definiált jelzés 1  |
 +|  USR2  |  31,​12,​17 ​ |  Term  | Felhasználó által definiált jelzés 2  |
 +|  CHLD  |  20,​17,​18 ​ |  Ign  | A gyermek leállt vagy megszakadt ​ |
 +|  CONT  |  19,​18,​25 ​ |  Cont  | Folytatás, ha meg lett állítva ​ |
 +|  STOP  |  17,​19,​23 ​ |  Stop  | A folyamat megállítása ​ |
 +|  TSTP  |  18,​20,​24 ​ |  Stop  | Megálljt gépeltek egy tty eszközön ​ |
 +|  TTIN  |  21,​21,​26 ​ |  Stop  | tty bevitel egy háttérfolyamat számára ​ |
 +|  TTOU  |  22,​22,​27 ​ |  Stop  | 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:​
 +<code bash>
 +killall -HUP pidszám
 +</​code>​
 +
 +Egy 0 számú szignállal azt is megvizsgálhatjuk,​ hogy egy folyamat fut vagy nem fut.
 +
 +A kernelfolyamatok nem fogadnak el jelzéseket,​ azokat figyelmen kívül hagyják. ​
 +
 +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:
 +<code bash>
 +nano
 +</​code>​
 +
 +
 +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:
 +
 +<code bash>
 +jobs
 +</​code>​
 +
 +Az eredmény ehhez hasonló:
 +<code bash>
 +[1]   ​Megállítva ​             nano
 +[2]   ​Megállítva ​             nano
 +[3]-  Megállítva ​             vi
 +[4]+  Megálíltva ​             mutt
 +</​code>​
 +
 +
 +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:​
 +
 +<code bash>
 +fg 2
 +</​code>​
 +
 +
 +Egy folyamat persze már indításkor is háttérbe tehető:
 +<​code>​
 +yes > /dev/null &
 +</​code>​
 +
 +
 +Ha az fg parancsnak nem adunk meg paramétert,​ akkor a legkisebb azonosító számú ​
 +programot fogja előtérbe hozni.
 +
 +
 +
 +=== 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:​
 +
 +<​code>​
 +nano <​Ctrl>​+<​Z>​
 +nano <​Ctrl>​+<​Z>​
 +pstree -c tibi
 +</​code>​
 +
 +
 +Lehetséges kimenet (ha tibi csak egyszer lépett, és csak ezeket a programokat futtatja egy teletájpról):​
 +<​code>​
 +bash─┬─nano
 +     ​└─nano
 +</​code>​
 +
 +
 +
 +
 +
 +
 +==== 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:
 +
 +
 +<code bash>
 +fuser .
 +</​code>​
 +
 +A kimenet:
 +<​code>​
 +.:                   ​21384c
 +</​code>​
 +
 +
 +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:
 +<code bash>
 +fuser -v .
 +</​code>​
 +A kimenet:
 +<​code>​
 +                     ​FELHASZNÁLÓ ​ PID HOZZÁFÉRÉS PARANCS
 +.:                   ​joska ​    21384 ..c.. bash
 +</​code>​
 +
 +=== Használt port ===
 +Melyik program használt egy adott portot?
 +
 +Vizsgáljuk meg rootként a 80-as portot:
 +
 +<code bash>
 +fuser -v -n tcp 80
 +</​code>​
 +
 +A kimenet:
 +<​code>​
 +                     ​FELHASZNÁLÓ ​ PID HOZZÁFÉRÉS PARANCS
 +80/​tcp: ​             root       1416 F.... apache2
 +                     ​www-data ​  1539 F.... apache2
 +                     ​www-data ​  1540 F.... apache2
 +                     ​www-data ​  1541 F.... apache2
 +                     ​www-data ​  1542 F.... apache2
 +                     ​www-data ​  1543 F.... apache2
 +                     ​www-data ​  2856 F.... apache2
 +                     ​www-data ​  2909 F.... apache2
 +                     ​www-data ​  2925 F.... apache2
 +                     ​www-data ​  2926 F.... apache2
 +</​code>​
 +
 +
 +=== Porthasználat példa 2 ===
 +
 +<code bash>
 +fuser -v -n tcp 12345
 +</​code>​
 +
 +<​code>​
 +                     ​FELHASZNÁLÓ ​ PID HOZZÁFÉRÉS PARANCS
 +12345/​tcp: ​          ​andras ​    3097 F.... server
 +</​code>​
 +
 +
 +=== 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:
 +<code bash>
 +fuser -vmk /mnt/valami
 +</​code>​
 +
 +
 +
 +=== Futtatható program ===
 +
 +<code bash>
 +./fuser
 +</​code>​
 +
 +
 +<code bash>
 +fuser -v server ​
 +</​code>​
 +
 +Eredmény:
 +<​code>​
 +                     ​FELHASZNÁLÓ ​ PID HOZZÁFÉRÉS PARANCS
 +server: ​             andras ​    3097 ...e. server
 +</​code>​
 +
 +
 +=== Socket ===
 +
 +<code bash>
 +fuser -v /​var/​run/​mysqld/​mysqld.sock ​
 +</​code>​
 +
 +Eredmény:
 +<​code>​
 +                     ​FELHASZNÁLÓ ​ PID HOZZÁFÉRÉS PARANCS
 +/​var/​run/​mysqld/​mysqld.sock:​
 +                     ​mysql ​     1905 F.... mysqld
 +</​code>​
 +
 +
 +=== Program folyamatának kilővése ===
 +
 +<code bash>
 +fuser -v -k server
 +</​code>​
 +
 +<​code>​
 +                     ​FELHASZNÁLÓ ​ PID HOZZÁFÉRÉS PARANCS
 +server: ​             andras ​    3097 ...e. server
 +</​code>​
 +
 +
 +Ha program terminálhoz van kötve, akkor a következőt láthatjuk:
 +
 +<​code>​
 +./server
 +Kilőve
 +</​code>​
 +
 +
 +
 +=== Folyamat kilővése interaktív módon ===
 +
 +
 +<code bash>
 +fuser -v -i -k server
 +</​code>​
 +
 +
 +
 +<​code>​
 +                     ​FELHASZNÁLÓ ​ PID HOZZÁFÉRÉS PARANCS
 +server: ​             andras ​    3199 ...e. server
 +Kilövi a(z) 3199 folyamatot? (i/N) 
 +</​code>​
 +
 +
 +<code bash>
 +fuser -v -i -k ./
 +</​code>​
 +
 +Eredmény:
 +<​code>​
 +./:                            FELHASZNÁLÓ ​   PID    HOZZÁFÉRÉS ​ PARANCS
 +                               ​joska ​         1231   ​..c.. ​      bash
 +                               ​joska ​         1327   ​..c.. ​      nano
 +                               ​joska ​         1343   ​..c.. ​      ​mcedit
 +                               ​joska ​         1345   ​..c.. ​      yes
 +Kilövi a(z)  1282 folyamatot? (i/N) n
 +Kilövi a(z)  1327 folyamatot? (i/N) i
 +Kilövi a(z)  1343 folyamatot? (i/N) i
 +Kilövi a(z)  1345 folyamatot? (i/N) i
 +[1]   ​Kilőve ​                 nano
 +[2]   ​Kilőve ​                 mcedit
 +[3]   ​Kilőve ​                 yes
 +</​code>​
 +
 +
 +==== 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 ====
 +
 +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
 +==== pmap ====
 +
 +Folyamatok memóriatérképének riportja. ​
 +
 +  $ pmap 5350
 +
 +Egy futtatás lehetséges kimenete:
 +<​code>​
 +$ pmap 915
 +915:   ​./​test
 +0000559510372000 ​     4K r-x-- test
 +0000559510572000 ​     4K r---- test
 +0000559510573000 ​     4K rw--- test
 +00005595116cd000 ​   132K rw---   [ anon ]
 +00007efdffcb3000 ​  1620K r-x-- libc-2.24.so
 +00007efdffe48000 ​  2048K ----- libc-2.24.so
 +00007efe00048000 ​    16K r---- libc-2.24.so
 +00007efe0004c000 ​     8K rw--- libc-2.24.so
 +00007efe0004e000 ​    16K rw---   [ anon ]
 +00007efe00053000 ​   140K r-x-- ld-2.24.so
 +00007efe00276000 ​     4K r---- ld-2.24.so
 +00007efe00277000 ​     4K rw--- ld-2.24.so
 +00007efe00278000 ​    12K rw---   [ anon ]
 +00007efe0027b000 ​    12K rw---   [ anon ]
 +00007fff3003e000 ​   132K rw---   [ stack ]
 +00007fff30143000 ​     8K r----   [ anon ]
 +00007fff30145000 ​     8K r-x--   [ anon ]
 +ffffffffff600000 ​     4K r-x--   [ anon ]
 + ​total ​            4176K
 +</​code>​
 +
 +==== pidof ====
 +
 +Folyamatokat PID számát kereshetjük név alapján.
 +Pl.: 
 +  pidof nano
 +
 +
 +==== 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:​
 +<code bash>
 +cat > dolgozok.txt
 +</​code>​
 +
 +Állomány tartalma:
 +<code bash>
 +cat dolgozok.txt
 +</​code>​
 +
 +
 +
 +Állományok összemásolása:​
 +<code bash>
 +cat fajl1 fajl2 fajl3 > egyfajl.txt
 +</​code>​
 +
 +
 +Állományok másolása:
 +<code bash>
 +cat < eredeti > masolat
 +</​code>​
 +
 +
 +A fájl végéhez fűzünk:
 +<code bash>
 +cat >> dolgozok.txt
 +Szabó Gábor 830000
 +[Ctrl]+[D]
 +</​code>​
 +
 +
 +A fájl végéhez fűzők:
 +<code bash>
 +cat >> dolgozok.txt <<​VEGE
 +Nagy József 800000
 +Kis Béla 570000
 +Jég Lajos 750000
 +VEGE
 +</​code>​
 +
 +=== cat összefoglalva ===
 +
 +== Állományok létrehozása ==
 +  cat > filenev.txt
 +  tartalom
 +  ...
 +  <​Ctrl>​+<​D>​
 +
 +== Állomány tartalmának megtekintése ==
 +  cat < filenev
 +vagy
 +  cat filenev
 +
 +== Állományok másolása ==
 +  cat < filenev > filenev2
 +
 +== Állományok összemásolása ==
 +  cat file1 file2 file3 > file4
 +
 +==== 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:​
 +<code txt tanulok.txt>​
 +001 Alex Brown 85 5
 +002 Dan Igor 40 3
 +003 Barton Flex 56 3
 +004 Rock Brain 78 4
 +
 +</​code>​
 +
 +Szeretnénk a nevek oszlopait eltüntetni.
 +
 +Megoldás:
 +<code bash>
 +cat tanulok | colrm 9 24
 +</​code>​
 +
 +Eredmény:
 +<code txt cel.txt>
 +001 85 5
 +002 40 3
 +003 56 3 ​
 +004 78 4
 +</​code>​
 +
 +
 +Nagyobb példafájl:​
 +<code txt tanulok.txt>​
 +001 Alex Brown 85 5
 +002 Dan Igor 40 3
 +003 Barton Flex 56 3
 +004 Rock Brain 78 4
 +005 Kis István 72 4
 +006 Nagy Béla 70 4
 +007 Fehér Tamás 28 1
 +008 Kékes Imre 45 4
 +009 Per Béla 78 4
 +010 Zöld Elek 78 4
 +011 Piros Gábor 23 1
 +012 Fék Lajos 28 4
 +013 Elmúlt Tibor 78 4
 +014 Leendő Tamás 28 4
 +015 Pék Gergő 78 4
 +016 Rob Sándor 18 1
 +017 Kékedi Imre 70 4
 +018 Nagy Lajos 85 4
 +</​code>​
 +
 +
 +
 +Egyéb használat
 +
 +<​code>​
 +ifconfig eth0 | colrm 1 10
 +</​code>​
 +
 +<​code>​
 +cat /​var/​log/​syslog | colrm 1 16 | colrm 30
 +</​code>​
 +
 +<​code>​
 +cat /​var/​log/​auth.log.1 | colrm 70
 +</​code>​
 +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:
 +<code txt tanulok2.txt>​
 +001 Alex Brown        85    5
 +002 Dan Igor          40    3
 +003 Barton Flex       ​56 ​   3
 +004 Rock Brain        78    4
 +
 +</​code>​
 +
 +
 +Megoldás:
 +<code bash>
 +cat tanulok2.txt | cut -c4-22
 +</​code>​
 +
 +Az eredmény:
 +<​code>​
 + Alex Brown        ​
 + Dan Igor          ​
 + ​Barton Flex       
 + Rock Brain 
 +</​code>​
 +
 +
 +=== Tabulátorral tagolt sorok ===
 +
 +<code txt tanulok.txt>​
 +001 Alex Brown 85 5
 +002 Dan Igor 40 3
 +003 Barton Flex 56 3
 +004 Rock Brain 78 4
 +</​code>​
 +
 +
 +Megoldás:
 +<code bash>
 +cut -f2 <  tanulok.txt
 +</​code>​
 +
 +A futtatás eredménye:
 +<code bash>
 +cut -f2 < tanulok.txt ​
 +Alex Brown
 +Dan Igor
 +Barton Flex
 +Rock Brain
 +</​code>​
 +
 +=== Kettősponttal tagolt ===
 +<code txt tanulok3.txt>​
 +001:Alex Brown:85:5
 +002:Dan Igor:40:3
 +003:Barton Flex:56:3
 +004:Rock Brain:78:4
 +</​code>​
 +
 +Megoldás:
 +<code bash>
 +cut -f2 -d : tanulok3.txt
 +</​code>​
 +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:
 +<code bash>
 +cut -f2 -d: tanulok3.txt ​
 +Alex Brown
 +Dan Igor
 +Barton Flex
 +Rock Brain
 +</​code>​
 +
 +
 +=== Egyszerre több oszlop megjelenítése ===
 +
 +<code bash>
 +cut -f 2,3,7 -d : tanulok3.txt
 +</​code>​
 +
 +
 +Eredmény: ​
 +<code bash>
 +cut -f 2,3,4 -d: tanulok3.txt ​
 +Alex Brown:85:5
 +Dan Igor:40:3
 +Barton Flex:56:3
 +Rock Brain:78:4
 +</​code>​
 +
 +=== Több szóköz szeparátorként ===
 +
 +A tr paranccsal minden szóköz csak egyszer fog szerepelni:
 +  cat tanulok3 | tr -s ' ' | cut -f 1 -d' '
 +
 +
 +Legyen egy összetett feladat: Le kell állítani a zombi folyamatokat. ​
 +A ps paranccsal kiíratjuk az össze folyamatot. A grep paranccsal
 +szűrök csak a zombi állapotban lévő folyamatokra. ​
 +A tr paranccsal az egyes oszlopok közötti szóközöket 1 darabra csökkentem.
 +A soreleji szóközöket törlöm az awk paranccsal.
 +A cut paranccsal az első oszlopot megjelenítem,​ mivel ezek a szülőfolyamatok.
 +Végül a kill paranccsal törlöm a zombikat. Szükség van egy xargs parancsra is, mert a
 +kill parancs így kapja meg paraméterként a ppid értékeket. ​
 +
 +
 +<​code>​
 +ps -o ppid,​pid,​stat | \
 +  grep -w Z | \
 +  tr -s ' ' | \
 +  awk '​{$1=$1};​1'​ | \
 +  cut -f1 -d' ' | \
 +  xargs kill -9
 +</​code>​
 +
 +
 +
 +
 +
 +
 +==== 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: ​
 +<code txt nyilt.txt>​
 +Holnap este érkezem.
 +</​code>​
 +
 +Szeretnénk titkosítani az állományt. ​
 +
 +Titkosítás:​
 +<code bash>
 +mcrypt nyilt.txt
 +</​code>​
 +
 +
 +A futtatás eredménye:
 +<code bash>
 +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.
 +</​code>​
 +
 +A parancs bekért egy jelszót kétszer, majd létrehozza a következő állományt:​
 +  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:​
 +
 +<code bash>
 +mdecrypt nyilt.txt.nc
 +</​code>​
 +
 +
 +A futtatás eredménye:
 +<code bash>
 +mdecrypt nyilt.txt.nc ​
 +Enter passphrase: ​
 +File nyilt.txt.nc was decrypted.
 +</​code>​
 +
 +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.
 +
 +
 +<code bash>
 +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.
 +</​code>​
 +
 +
 +Persze ebben a formában is használahtó:​
 +
 +<code bash>
 +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.
 +</​code>​
 +
 +Visszafele ugyanígy:
 +<code bash>
 +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.
 +</​code>​
 +==== grep ====
 +Adott mintát tartalmazó sorok megjelenítése
 +
 +
 +Szintaxisa:
 +  grep  [ kapcsolók ]  minta    [ fájl ... ]
 +
 +
 +
 +
 +Adott az alábbi belépési napló:
 +
 +<code txt belepesinaplo.txt>​
 +2005.10.25 18:30 alex 196.145.43.3
 +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
 +2005.10.29 18:00 alex 196.145.43.3
 +</​code>​
 +
 +
 +A futtatás eredménye:
 +<code bash>
 +grep alex belepesinaplo.txt
 +
 +2005.10.25 18:30 alex 196.145.43.3
 +2005.10.29 18:00 alex 196.145.43.3
 +</​code>​
 +
 +
 +
 +A grep -v azokat jeleníti meg, amelyek nem tartalmazzák a sorokat.
 +
 +
 +<code bash>
 +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
 +</​code>​
 +
 +
 +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 |
 +
 +<code txt naplo.log>​
 +2005.12.25 18:30 alex 196.145.43.3 1960 bytes
 +2005.12.26 18:30 joe 216.45.3.2 1512 bytes
 +2005.12.26 18:44 richard 196.145.43.3 2005 bytes
 +2005.12.28 22:31 joe 196.145.43.3 2006 bytes
 +2005.12.29 18:00 alex 196.145.43.3 2050 bytes
 +2006.01.02 08:25 joe 195.166.29.5 2008 bytes
 +2006.01.02 12:20 alex 195.165.1.1 2005 bytes
 +</​code>​
 +
 +
 +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
 +
 +
 +Fájlnevek megjelenítése tartalom alapján: Például keressük az aktuális könyvtárban,​
 +az összes fájl között, azokat a fájlokat, amelyek tartalmazzák a VGA szót, ​
 +megjeleníteni azonban csak a fájlneveket szeretnénk: ​
 +
 +  grep -l VGA *
 +
 +
 +
 +
 +=== A karakterosztályok használata ===
 +
 +
 +<code txt naplo.log>​
 +2005.12.25 18:30 alex 196.145.43.3 1960 bytes
 +2005.12.26 18:30 joe 216.45.3.2 1512 bytes
 +2005.12.26 18:44 richard 196.145.43.3 2005 bytes
 +2005.12.28 22:31 joe 196.145.43.3 2006 bytes
 +2005.12.29 18:00 alex 196.145.43.3 2050 bytes
 +2006.01.02 08:25 joe 195.166.29.5 2008 bytes
 +2006.01.02 12:20 alex 195.165.1.1 2005 bytes
 +2006.01.03 07:02 mari 195.165.2.45 2007 bytes
 +</​code>​
 +
 +A fenti állományban azokat a sorokat keressük, ahol a letöltés 2005, 2006, 2007 vagy 2008 van. 
 +
 +<​code>​
 +grep "​200[5678] bytes" naplo.log
 +</​code>​
 +
 +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]:
 +
 +<​code>​
 +grep "​200[5-8] bytes" naplo.log
 +</​code>​
 +
 +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 ===
 +
 +<code bash>
 +grep -v "​^$"​ filename
 +</​code>​
 +
 +<code bash>
 +grep . filename
 +</​code>​
 +
 +<code bash>
 +grep -v '​^[[:​space:​]]*$'​ filename
 +</​code>​
 +
 +=== Hashmárk jeles sorok kihagyása ===
 +
 +<code bash>
 +grep -v '​\#'​ filename
 +</​code>​
 +
 +
 +
 +=== Fájlok keresése tartalom alapján ===
 +
 +
 +  grep -H -r “Rewrite” /​etc/​apache2/​
 +
 +  man -L en grep
 +
 +
 +
 +
 +=== grep gyakorlat ===
 +
 +Adott az alábbi naplóállomány részlet (/​var/​log/​syslog):​
 +
 +  Feb 21 18:32:12 server postfix: Connection, ​
 +  Feb 21 18:32:12 server postfix: LOGIN, user=test@server.hu, ​
 +  Feb 21 18:32:46 server postix: LOGOUT, user=test@server.hu
 +  Feb 21 18:32:12 server pop3d: Connection, ​
 +  Feb 21 18:32:12 server pop3d: LOGIN, user=test@server.hu, ​
 +  Feb 21 18:32:46 server pop3d: LOGOUT, user=test@server.hu
 +
 +Csak a pop3d-t tartalmazhó sorokat szeretnék megjeleníteni.
 +
 +  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
 +  * szuletesnap
 +  * telefonszam
 +
 +
 +<code txt sorszam>
 +001
 +002
 +003
 +</​code>​
 +
 +
 +<code txt nev>
 +Alex
 +Brown
 +Joe
 +</​code>​
 +
 +
 +<code txt szuletesnap>​
 +1985.07.11
 +1987.01.12
 +1999.12.22
 +</​code>​
 +
 +
 +<code txt telefonszam>​
 +(1) 335-3345
 +(37) 332-328
 +(48) 183-981
 +</​code>​
 +
 +
 +Szeretnénk egyetlen fájlban egymás mellé összemásolni.
 +
 +
 +Megoldás:
 +  paste sorszam nev szuletesnap telefon ​ > info.txt
 +
 +
 +Eredmény:
 +<code txt info.txt>​
 +001 Alex 1987.07.11 (1)335-3345
 +002 Brown 1987.01.12 (37) 332-328
 +003 Joe 1999.12.22 (48) 143-981
 +</​code>​
 +
 +
 +
 +
 +=== Tagolás szóközökkel ===
 +
 +
 +Megoldása
 +<code bash>
 +paste -d ' ' sorszam nev szuletesnap telefon ​ > info
 +</​code>​
 +
 +Eredmény:
 +<code txt 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
 +</​code>​
 +
 +Tagoláshoz persze bármit megadhatunk pl.:
 +<​code>​
 +  -d ':'​
 +</​code>​
 +
 +=== Táblázat oszlopainak cseréje ===
 +
 +Adott egy dolgozok nevű állomány, amiben oszlopokban szeretnénk megcserélni.
 +
 +<code txt dolgozok>​
 +Név Fizetés Beosztás
 +Alex 130000 festő
 +Brown 150000 asztalos
 +Joe 170000 villanyszerelő
 +</​code>​
 +
 +
 +Megoldás:
 +<code bash>
 +cut -f1 dolgozok ​ >  nev
 +cut -f2 dolgozok >  fizetes
 +cut -f3 dolgozok >  beosztas
 +
 +paste nev beosztas fizetes >  dolgozok2
 +
 +more dolgozok2
 +
 +rm nev beosztas fizetes
 +</​code>​
 +
 +
 +
 +==== 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:​
 +  cat filenev.txt | sort
 +
 +Ha a program bemenete egy állomány:
 +  sort < filenev.txt
 +
 +
 +Ha szeretnénk,​ hogy a magyar nyelvnek megfelelően rendezzen, vagyis
 +az "​a"​ betűk előbb szerepeljenek mint például az "​á"​ betűk, akkor
 +használjuk a <​nowiki>​-d</​nowiki>​ kapcsolót:
 +  cat fajlnev.txt | sort -d
 +
 +
 +
 +
 +
 +
 +=== Fordított rendezés ===
 +
 +
 +
 +<code bash>
 +sort -r nevek.txt
 +sort --reverse nevek.txt
 +</​code>​
 +
 +
 +
 +
 +
 +=== 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:
 +<code txt gyumolcs.txt>​
 +korte
 +alma
 +szilva
 +barack
 +</​code>​
 +
 +Eredmény:
 +<code bash>
 +sort gyumolcs.txt
 +alma
 +barack
 +korte
 +szilva
 +</​code>​
 +
 +
 +=== Rendezés adott mező szerint ===
 +
 +<code txt gy.txt>
 +1 körte
 +2 alma
 +3 szilva
 +</​code>​
 +
 +
 +Második oszlop szerint szeretnénk rendezni:
 +
 +<code bash>
 +sort -k +2 < gy.txt
 +</​code>​
 +
 +-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ő:​
 +
 +<code txt adat.txt>​
 +12345
 +abcde
 +AxAxA
 +</​code>​
 +
 +
 +Futtatás:
 +<code bash>
 +rev adat.txt
 +54321
 +edcba
 +AxAxA
 +</​code>​
 +
 +
 +
 +
 +
 +==== 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:
 +<code txt gy.txt>
 +barcak
 +szilve
 +eper
 +körte
 +alme
 +</​code>​
 +
 +A harmadik szó helyes, a többit helytelen. ​
 +
 +Végrehajtás:​
 +<code bash>
 +spell gy.txt
 +</​code>​
 +
 +A parancs az eper szó kivételével kiír minden sort.
 +
 +
 +=== ispell használata ===
 +
 +A hunspell csomag használata esetén rávehetjük annak használatára is:
 +
 +<​code>​
 +spell -i /​usr/​bin/​ispell gy.txt
 +</​code>​
 +
 +
 +=== hunspell használata ===
 +
 +A hunspell csomag használata esetén rávehetjük annak használatára is:
 +
 +<​code>​
 +spell -i /​usr/​bin/​hunspell gy.txt
 +</​code>​
 +
 +
 +==== ispell ====
 +
 +Ez egy interaktív helyesírás ellenőrző program. ​
 +
 +Indítás:
 +<code bash>
 +ispell gy.txt
 +</​code>​
 +
 +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.
 +
 +
 +<code bash>
 + ​barcak ​             File: gy.txt
 +
 +
 +barcak
 +
 + 0: barack
 + 1: barnak
 + 2: bar�ak
 +
 +
 +
 +
 +
 +
 +
 +[SP] <​number>​ R)epl A)ccept I)nsert L)ookup U)ncap Q)uit e(X)it or ? for help
 +</​code>​
 +
 +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. Felülete hasonlít az ispell programhoz.
 +
 +Használatához telepíteni kell a **aspell** csomagot, a magyar helyesírás ellenőrzéshez
 +pedig a **aspell-hu** csomagot. ​
 +
 +
 +Adott a következő állomány:
 +<code txt gy.txt>
 +Szeretem a gyümölcsöket. Kedvenceim az alme, körti, szilve és a barakc.
 +</​code>​
 +
 +
 +<code bash>
 +aspell check gy.txt
 +</​code>​
 +
 +
 +
 +<​code>​
 +barck
 +szilva
 +körite
 +alme
 +
 +
 +
 +
 +
 +                                                                                ​
 +1) barack ​                              4) barik
 +2) Barcs                                5) barok
 +3) Barok                                6) barék
 +
 +
 +i) Ignore ​                              I) Ignore all
 +r) Replace ​                             R) Replace all
 +a) Add                                  l) Add Lower
 +b) Abort                                x) Exit
 +                                                                                ​
 +
 +</​code>​
 +
 +
 +==== hunspell ====
 +
 +
 +Adott a következő állomány:
 +<code txt gy.txt>
 +Szeretem a gyümölcsöket. Kedvenceim az alme, körti, szilve és a barakc.
 +</​code>​
 +
 +
 +Ellenőrzés:​
 +<​code>​
 +hunspell gy.txt
 +</​code>​
 +
 +
 +Felülete:
 +
 +<​code>​
 +        barck           File: gy.txt
 +
 +
 +
 +
 +barck
 +
 + 0: barack
 + 1: barok
 + 2: barik
 + 3: barék
 + 4: barcsik
 + 5: Barcs
 + 6: barcsi
 + 7: barchesz
 +
 +
 +
 +
 +
 +
 +
 +[SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it or ? for help
 +
 +</​code>​
 +
 +
 +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
 +
 +
 +=== É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! ===
 +
 +
 +<code txt adat>
 +alma
 +körte
 +alma
 +barack
 +szilva
 +körte
 +</​code>​
 +
 +<code bash>
 +uniq adat
 +alma
 +körte
 +alma
 +barack
 +szilva
 +körte
 +</​code>​
 +
 +
 +=== Így helyes! ===
 +
 +<code txt adat>
 +alma
 +körte
 +alma
 +barack
 +szilva
 +körte
 +</​code>​
 +
 +<code bash>
 +sort adat | uniq
 +alma
 +barack
 +körte
 +szilva
 +</​code>​
 +
 +
 +
 +
 +
 +==== wc ====
 +
 +Sorok megszámolása
 +
 +Sorok, szavak és karakterek számolása
 +
 +
 +Szintaxis:
 +  wc [kapcsoló] ... [fájl] ...
 +
 +
 +
 +Adott egy állomány:
 +<code txt adat>
 +alma
 +körte
 +barack
 +szilva
 +</​code>​
 +
 +Végrehajtás:​
 +<code bash>
 +wc adat
 + 4 4 25
 +</​code>​
 +
 +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
 +
 +A számok a sor elé kerülnek
 +
 +
 +Példa a használatra:​
 +<code bash>
 +nl -n rz -w3 -s:
 +</​code>​
 +
 +  * (-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.
 +
 +
 +
 +<code txt eredeti.txt>​
 +alma      40 db
 +körte 53 db
 +barack 25 db
 +szilva 27 db
 +</​code>​
 +
 +<code txt uj.txt>
 +szilva 27 db
 +barack 25 db
 +körte 53 db
 +alma 40 db
 +</​code>​
 +
 +
 +
 +
 +==== expand ====
 +tabulátorok szóközökre cserélése
 +
 +
 +<code txt tanulok_tab.txt>​
 +001 Alex Brown 85 5
 +002 Dan Igor 40 3
 +003 Barton Flex 56 3
 +004 Rock Brain 78 4
 +</​code>​
 +
 +Végrehajtás:​
 +
 +<code bash>
 +expand tanulok_tab.txt > tanulok_szokoz.txt
 +</​code>​
 +
 +
 +==== unexpand ====
 +
 +
 +Szóközök tabulátorra cserélése.
 +
 +
 +Adott a következő állomány szóközökkel tagolva:
 +<code txt tanulok_szokoz.txt>​
 +001     Alex Brown      85      5
 +002     Dan Igor        40      3
 +003     ​Barton Flex     ​56 ​     3
 +004     Rock Brain      78      4
 +</​code>​
 +
 +
 +Végrehajtás:​
 +<code bash>
 +unexpand -a tanulok_szokoz.txt > tanulok_tab.txt
 +</​code>​
 +
 +
 +  * (-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.
 +
 +<code txt nev>
 +1 János
 +2 Ferenc
 +3 István
 +4 Kati
 +</​code>​
 +
 +
 +<code txt szul>
 +1 1981
 +4 1934
 +2 1945
 +3 1967
 +</​code>​
 +
 +Végrehajtás:​
 +<code bash>
 +join nev szul
 +1 János 1981
 +2 Ferenc 1934
 +3 István 1945
 +4 Kati 1967
 +</​code>​
 +
 +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. ​
 +
 +<code txt 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.
 +</​code>​
 +
 +(Ezt az állományt letöltheted így is:)
 +<code bash>
 +curl http://​szit.hu/​wiki/​download/​level.txt > level.txt
 +</​code>​
 +
 +Ekkor tördelhetjük az az állományt a fenti mint alapján:
 +
 +
 +
 +<code bash>
 +fold -w 70 level.txt
 +</​code>​
 +
 +
 +==== expr ====
 +
 +
 +Kifejezés kiértékelése
 + 
 +<code bash>
 +expr 1 + 2
 +3
 +</​code>​
 +
 +<code bash>
 +expr 1 ”<” 2
 +1
 +</​code>​
 +
 +<code bash>
 +expr 1 ”>” 2
 +0
 +</​code>​
 +
 +<code bash>
 +expr length "alma a"
 +6
 +</​code>​
 +
 +<code bash>
 +expr 3 "​*"​ 2
 +6
 +</​code>​
 +
 +<code bash>
 +expr 1 = 2
 +0
 +</​code>​
 +
 +
 +==== 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:
 +<code txt szul.txt>​
 +Éva János
 +Erika János
 +Péter Éva
 +Zoltán Erika
 +</​code>​
 +
 +
 +Alkalmazás
 +<code bash>
 +tsort < szul.txt
 +Péter
 +Zoltán
 +Éva
 +Erika
 +János
 +</​code>​
 +
 +
 +==== 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.
 +
 +
 +<code txt gy1.txt>
 +alma
 +körte
 +barack
 +szilva
 +</​code>​
 +
 +
 +
 +<code txt gy2.txt>
 +alma
 +körte
 +szilva
 +</​code>​
 +
 +
 +
 +<​code>​
 +diff gy1.txt gy2.txt ​
 +3d2
 +< barack
 +</​code>​
 +
 +
 +
 +
 +Két könyvtár összehasonlítása:​
 +<​code>​
 +diff elso masodik ​
 +Csak elso -ben: egy.txt
 +Csak masodik -ben: ketto.txt
 +</​code>​
 +
 +A program kiírja, ha egy fájl csak az egyik könyvtárban van.
 +
 +
 +Csak a különbséget mutató fájlok mutatása:
 +  diff -qr elsoKonyvtar masodikKonyvtar
 +
 +==== 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:
 +
 +<code txt gy1.txt>
 +alma
 +barack
 +körte
 +szilva
 +
 +</​code>​
 +
 +
 +
 +Lemásoljuk az állományt:​
 +<code bash>
 +cp gy1.txt gy2.txt
 +</​code>​
 +
 +A gy2.txt állományban változásokat viszünk véghez. ​
 +
 +Az állomány ezek után így néz ki:
 +<code txt gy2.txt>
 +alma
 +banán
 +barack
 +citrom
 +körte
 +szilva
 +
 +</​code>​
 +
 +
 +A folt elkészítése:​
 +<​code>​
 +diff -cBN gy1.txt gy2.txt > gy2.patch
 +</​code>​
 +
 +
 +Végrehajtás során:
 +<​code>​
 +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
 +</​code>​
 +
 +
 +
 +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:​
 +<​code>​
 +patch < gy2.patch
 +</​code>​
 +
 +
 +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 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
 +
 +A tail a -f kapcsolóval folyamatosan a képernyőre írja az  állomány változásait.
 +
 +Beállítható hány sor jelenjen meg. 100 sor megjelenítése:​
 +  tail -100 /​var/​log/​syslog
 +
 +==== tailf ====
 +
 +A tailf megegyezik a tail -f hatásával.
 +Képernyőre írja az utolsó 10 sort, majd az állomány változása esetén kiírja
 +a megváltozott sorokat.
 +  tailf /​var/​log/​syslog
 +
 +==== head ====
 +Egy állomány elejét írja ki. Alapértelmezetten az első 10 sort jeleníti meg. 
 +
 +  head /​var/​log/​syslog
 +
 +Beállítható hány sor jelenjen meg:
 +  head -100 /​var/​log/​syslog | less
 +
 +==== dos2unix ====
 +
 +A fájlvége jeleket cserélhetjük az egyes operációs rendszerek számára.
 +A fájl végét valamelyik rendszerben 1 bájt jelzi, valamelyikben kettő. ​
 +Két bájt van használatban:​
 +  * CR - ^M
 +  * LF - ^J
 +
 +A fájlvége jelek az egyes rendszereken:​
 +  * Windows: CR LF
 +  * Linux, Mac OS X: LF
 +  * Apple: CR 
 +
 +Telepítés:​
 +  apt install dos2unix
 +
 +
 +Telepítés a következő parancsokat kapjuk:
 +  * dos2unix
 +  * unix2dos
 +  * mac2unix
 +  * unix2mac
 +
 +
 +
 +A unix2dos szintaxisa:
 +
 +  unix2dos [options] [-c convmode] [-o file ...] [-n infile outfile ...]
 +
 +Kapcsolók:
 +
 +  [-fhkLlqV] ​ [--force] ​ [--help] ​ [--keepdate] ​ [--license] ​ [--newline]
 +  [--quiet] [--version]
 +
 +
 +
 +
 +Legyen egy vmi.txt nevű fájl, amely Unix rendszeren (Linux vagy Mac OS X) készült,
 +így a sortörés LF bájt lett. Windowsos sortörést szeretnénk:​
 +  * unix2dos vmi.txt
 +
 +Ha fel van telepítve a Midnight Commander, a szerkesztőjével nyissuk meg az elkészült fájlt:
 +  mcedit vmi.txt
 +
 +Az eredmény látható. Mivel az mcedit nem ismeri CR LF közül az CR bájtot, ^M karaktereket
 +jelenít meg helyette.
 +
 +A -n kapcsolóval beállítható a kimeneti fájl is:
 +  unix2dos -n vmi.txt uj.txt
 +
 +
 +
 +
 +Bináris és nem szabályos fájlokat, mint a linkeket automatikusan átlép
 +a program, ha csak nem használjuk a <​nowiki>​--force</​nowiki>​ kapcsolót.
 +
 +
 +A -c kapcsoló: <​nowiki>​-c --convmode</​nowiki>​ konverziósmód
 +
 +Módok a következők lehetnek:
 +  * ascii
 +  * mac
 +  * 7bit
 +  * iso   
 +
 +
 +
 +További 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
 +
 +
 +
 +Több információért:​
 +  man dos2unix
 +
 +==== 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:​
 +<code bash>
 +cat fajl.txt | tee kimenet.txt
 +</​code>​
 +
 +Fájlba és másik programnak:
 +<code bash>
 +cat fajl.txt | tee kimenet.txt | sort
 +</​code>​
 +
 +Esetleg:
 +<code bash>
 +cat fajl.txt | tee kimenet.txt | sort | rendezettkimenet.txt
 +</​code>​
 +
 +
 +==== dd ====
 +
 +A dd parancs fájlok másolására használható.
 +
 +Legy például egy gy.txt állomány:
 +
 +<​code>​
 +cat > gy.txt
 +szilva
 +körte
 +alma
 +barack
 +</​code>​
 +
 +Készítsünk róla másolatot:
 +  dd if=gy.txt of=masolat.txt
 +
 +Nagybetűssé alakítás:
 +  dd if=gy.txt of=masolat conv=ucase
 +Sajnos ez utóbbi csak az angol ábécé betűivel működik.
 +
 +Kisbetűssé:​
 +  dd if=gy.txt of=masolat conv=lcase
 +
 +Az adatok kiírása fizikailag később történhet,​ mivel az operációs rendszer ​
 +átmeneti tárolójába kerülnek. Ha szeretnénk az adatok fizikai kiírását azonnal,
 +akkor adjuk meg a fdatasync jelölőt:
 +  dd if=gy.txt of=masolat conv=fdatasync
 +Ha fájlokhoz tartozó metaadatok azonnali kiírását is szeretnénk,​ akkor:
 +  dd if=gy.txt of=masolat conv=fsync
 +
 +További részletek:
 +  dd --help
 +
 +===== 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:​
 +  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:
 +<code bash>
 +time ls /usr/bin
 +</​code>​
 +
 +Eredményhalmaz:​
 +<​code>​
 +real 0m1.232s
 +user 0m0.028s
 +sys 0m0.048s
 +</​code>​
 +
 +
 +Vagy
 +<code bash>
 +time sleep 60
 +
 +real 1m0.009s
 +user 0m0.000s
 +sys 0m0.004s
 +</​code>​
 +
 +==== times ====
 +
 +Statisztika a programfutásról
 +<code bash>
 +times ls -l /
 +</​code>​
 +
 +Eredmény:
 +<​code>​
 +0m3.948s 0m1.392s
 +0m24.246s 0m3.240s
 +</​code>​
 +
 +
 +==== 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éprő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
 +  * 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 ===
 +
 +<code bash>
 +mkfifo pipeneve
 +
 +echo "​Információ"​ > pipeneve &
 +
 +cat pipeneve
 +</​code>​
 +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
 +
 +<​code>​
 +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
 +</​code>​
 +
 +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:​
 +  ulimit -s
 +
 +Vagy felhasználóként mennyi folyamatot és szálat indíthatok.
 +
 +Lásd bővebben: [[oktatas:​linux:​rendszergazdai_parancsok#​ulimit]]
 +
 +
 +==== lsof ====
 +
 +A nyitott fájlokat mutatja
 +
 +<​code>​
 +COMMAND ​   PID       ​USER ​  ​FD ​     TYPE     ​DEVICE SIZE/​OFF ​      NODE NAME
 +init         ​1 ​      ​root ​ cwd   ​unknown ​                               /proc/1/cwd (readlink: Permission denied)
 +init         ​1 ​      ​root ​ rtd   ​unknown ​                               /proc/1/
 +</​code>​
 +
 +==== 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:
 +<code bash>
 +date
 +</​code>​
 +
 +Eredmény:
 +<code bash>
 +2012. jan. 15., vasárnap, 11.07.34 CET
 +</​code>​
 +
 +Ha csak az aktuális évszámot szeretném:
 +<code bash>
 +date +%Y
 +</​code>​
 +
 +
 +Az év, hó és nap, kötőjelekkel tagolva:
 +<code bash>
 +date +%Y-%m-%d
 +</​code>​
 +
 +Az év, hó és nap, tagolás nélkü:
 +<code bash>
 +date +%Y%m%d
 +</​code>​
 +
 +Az idő lekérdezése,​ kettősponttal tagolva:
 +<code bash>
 +date +%H:%M
 +</​code>​
 +
 +
 +
 +
 +
 +A kötőjeles forma megint:
 +<​code>​
 +date +%F
 +</​code>​
 +
 +A kettőspontos forma újra:
 +<​code>​
 +date +%R
 +</​code>​
 +
 +
 +Vegyesen szóközzel tagolva:
 +<​code>​
 +date "+%F %R"
 +</​code>​
 +
 +
 +
 +
 +
 +
 +A következő paranccsal beállíthatom az időt (Ehhez rendszergazdai jogok kellenek):
 +<code bash>
 +date 01151114
 +</​code>​
 +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:
 +<code bash>
 +date --set 1998-11-02 ​
 +date --set 21:08:0
 +</​code>​
 +
 +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 ====
 +
 +A Linux operációs rendszerben meghatározhatók a folyatok prioritása. ​
 +Egy nagyobb prioritású folyamat több processzoridőt kap. Nagyobb
 +terhelés esetén ez lényeges lehet. ​
 +
 +Linux alatt fordított prioritás van. Minél kisebb számot adunk meg a
 +prioritás annál nagyobb. A prioritás a következő intervallumban állítható:​
 +
 +<​code>​
 +-20 ..19
 +</​code>​
 +
 +
 +A folyamat akkor kapja a legtöbb processzoridőt,​ ha -20 a prioritása. ​
 +
 +A ps kimenetében is megnézhetjük egy folyamat prioritását,​ ha 
 +használjuk a -l kapcsolót. Az oszlopok közül a nyolcadikban látjuk
 +a prioritásokat,​ "​NI"​ fejléccel.
 +
 +
 +
 +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. ​
 +
 +<code bash>
 +logger<​Enter>​
 +Ami a naplóba megy
 +</​code>​
 +
 +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 szintaktikája:​
 +  alias [-p] [név=['​parancs'​]]
 +
 +A szintaktikából kiderül, hogy önmagában is kiadható az utasítás, de a név után a
 +parancs sem kötelező elem.
 +
 +Az alias parancs önmagában kiírja az aliaszokat:
 +<code bash>
 +alias
 +</​code>​
 +
 +
 +Ha például szeretnénk a -l kapcsolót folyamatosan megadni, akkor a következő parancsot adjuk ki:
 +<code bash>
 +alias ls="ls -l"
 +</​code>​
 +
 +Másik példa:
 +<cdoe bash>
 +alias p="​pwd"​
 +</​code>​
 +
 +Harmadik példa:
 +<code bash>
 +alias dir='​ls -la'
 +</​code>​
 +
 +Negyedik példa:
 +<code bash>
 +lias df="df -h"
 +</​code>​
 +
 +Ötödik példa:
 +<code bash>
 +alias rm="rm -i"
 +alias cp="cp -i"
 +</​code>​
 +
 +
 +
 +
 +Az összes definiált alias megjelenítése:​
 +<code bash>
 +alias -p
 +</​code>​
 +
 +A -p kapcsoló valójában olyan, mint amikor kapcsolók nélkül adjuk ki az alias parancsot.
 +
 +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.
 +
 +Ha ideiglenesen szeretnénk kikapcsolni az aliast tegyünk az adott parancs elé egy "​\"​ jel karakteret:
 +  \ls
 +
 +A parancsokat egyszerűsíthetjük is:
 +<code bash>
 +alias l='ls -al'
 +</​code>​
 +
 +A parancs részben megadható több parancs is:
 +<code bash>
 +alias pl='​ls;​ pwd'
 +</​code>​
 +
 +Más aliasokra is hivatkozhatunk:​
 +<code bash>
 +alias pl='l; p'
 +</​code>​
 +
 +
 +Egyszerre több alias is létrehozható:​
 +<code bash>
 +alias l="ls -l"; p="​pwd"; ​
 +</​code>​
 +
 +
 +Csővezetékkel és grep párossal megoldható,​ hogy csak az alkönyvtárakat listázzuk:
 +<code bash>
 +alias dir="​ls -al | grep ^d"
 +</​code>​
 +
 +Tegyük fel, hogy van egy ilyen aliasunk:
 +<code bash>
 +alias l="ls -a"
 +</​code>​
 +
 +Az l ezek után használható paraméterrel is:
 +  l /bin
 +
 +De kapcsolók is megadhatók:​
 +  l -l /bin
 +
 +Olyankor is hasznos lehet, az alias, ha sokszor akarunk ​
 +szerkeszteni egy állományt,​ ami alkönyvtárakban van nagyobb mélységben:​
 +<code bash>
 +alias e="​nano /​etc/​network/​interfaces"​
 +</​code>​
 +
 +
 +Ha Windowsos parancsokat szeretnénk:​
 +<code bash>
 +alias md="​mkdir"​
 +alias dir="​ls"​
 +alias del="​rm -i"
 +alias copy="​cp"​
 +alias rd="​rmdir" ​
 +alias rename="​mv" ​
 +</​code>​
 +
 +Az aliasnak van egy párja az unalias. Ezzel a paranccsal törölhetők az
 +aliasok. Szintaktikája:​
 +  unalias [-a] név [név ...]
 +
 +Példák:
 +  unalias ls
 +  unalias l
 +
 +
 +==== 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:
 +<code bash>
 +find -name main.c
 +</​code>​
 +
 +Lehetséges eredmény:
 +  ./c/main.c
 +
 +
 +=== Keresés helye ===
 +
 +<code bash>
 +find /usr -name abook
 +</​code>​
 +
 +
 +=== A megtalált fájl becsomagolása ===
 +
 +<code bash>
 +find -name main.c | xargs tar -cf valami.tar
 +</​code>​
 +
 +=== 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:
 +
 +<code bash>
 +find . -atime +3
 +</​code>​
 +
 +Esetleg, ha a gyökérből értelmezve akarom futtatni:
 +<code bash>
 +find . -atime +3 -exec ls \;
 +</​code>​
 +
 +Az utolsó három napban módosított fájl:
 +<code bash>
 +find . -mtime -3
 +</​code>​
 +
 +Az utolsó 3 napban módosított txt fájlok:
 +<code bash>
 +find . -name '​*.txt'​ -mtime -3
 +</​code>​
 +
 +A 10000 kbytenál nagyobb fájlok:
 +<code bash>
 +find . -size +10000k
 +</​code>​
 +
 +=== Fájl keresése tartalom alapján ===
 +
 +  find /​utvonal/​konyvtar -type f -exec grep -l "Amit keresek"​ {} +
 +
 +
 +==== Szabad hely ====
 +=== Háttértár ===
 +
 +  df
 +A df parancs paraméter nélkül, megmutatja hány darab 1 kilóbájtos blokk van az adott lemezen. ​
 +Ebből mennyi foglalt és mennyi szabad. ​
 +
 +  df -h
 +A df lehetséges kimenete:
 +
 +<​code>​
 +Fájlrendszer ​   1K-blokk ​    ​Fogl. ​  ​Szabad Fo.% Csatol. pont
 +/​dev/​sda1 ​      ​95989516 ​ 20279928 70810468 ​ 23% /
 +udev               ​10240 ​        ​0 ​   10240   0% /dev
 +tmpfs            1196760 ​     9572  1187188 ​  1% /run
 +tmpfs            2991900 ​    ​31884 ​ 2960016 ​  2% /dev/shm
 +tmpfs               ​5120 ​        ​4 ​    ​5116 ​  1% /run/lock
 +tmpfs            2991900 ​        ​0 ​ 2991900 ​  0% /​sys/​fs/​cgroup
 +/​dev/​sda7 ​     576615976 487657136 59645356 ​ 90% /home
 +tmpfs             ​598380 ​        ​4 ​  ​598376 ​  1% /​run/​user/​118
 +tmpfs             ​598380 ​       20   ​598360 ​  1% /​run/​user/​1000
 +</​code>​
 +
 +Az udev partíció egy virtuális partíció, az eszközök számára. ​
 +Az udev minden eszközt a /dev könyvtárban képez le eszközcsomóponttá,​ egy
 +fájl formájában.
 +A tmpfs partíciók virtuális partíciók a fizikai memóriában,​
 +ami gyorsítást szolgálja. ​
 +
 +
 +Humánus kimenet, a tmpfs-ek kizárása, fájlrendszerek típusa:
 +  df -hT -x tmpfs -x devtmpfs
 +
 +
 +=== Memória ===
 +
 +  free
 +
 +Lehetséges kimenet:
 +<​code>​
 +             ​total ​      ​used ​      ​free ​    ​shared ​   buffers ​    ​cached
 +Mem:       ​5983800 ​   4464320 ​   1519480 ​     97496    1050080 ​   1560168
 +-/+ buffers/​cache: ​   1854072 ​   4129728
 +Swap:      2929660 ​         0    2929660
 +</​code>​
 +
 +==== Információk a rendszerről ====
 +
 +A terjesztéssel kapcsolatos információk megjelenítése:​
 +
 +  lsb_release -a
 +
 +Lehetséges kimenet:
 +<​code>​
 +No LSB modules are available.
 +Distributor ID: Debian
 +Description:​ Debian GNU/Linux 6.0.5 (squeeze)
 +Release:​ 6.0.5
 +Codename:​ squeeze
 +</​code>​
 +
 +
 +<code bash cpuinfo.sh>​
 +#/bin/bash
 +
 +MHZ=`cat /​sys/​devices/​system/​cpu/​cpu0/​cpufreq/​scaling_cur_freq`
 +
 +echo CPU Sebesség: $(($MHZ/​1000)) MHz
 +</​code>​
 +
 +
 +
 +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.
 +  setterm -background white -foreground blue -store
 +
 +Virtuális terminálon nem működik.
 +
 +
 +  man setterm
 +==== A terminál felosztása ====
 +
 +A tmux programmal egy terminál felosztható több részre is.
 +A tmux elérhető a következő helyen:
 +  * https://​tmux.github.io/​
 +
 +Debian alapú rendszeren telepítés:​
 +  apt-get install tmux
 +
 +A használható billentyűkombinációkról kézikönyv informál minket:
 +  man tmux
 +
 +
 +==== 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:
 +  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
 +
 +<​code>​
 +ibase=10
 +obase=2
 +5
 +101
 +</​code>​
 +
 +10 -> 16
 +<​code>​
 +ibase=10
 +obase=16
 +12
 +C
 +</​code>​
 +
 +Bemeneti számrendszer kiíratása:​
 +
 +<​code>​
 +print ibase,"​\n"​
 +</​code>​
 +
 +2 -> 10
 +<​code>​
 +ibase=2
 +ibase=10
 +100
 +4
 +</​code>​
 +
 +=== Programírás ===
 +
 +<code bc>
 +#​!/​usr/​bin/​bc
 +
 +print "Első szám: "
 +a = read()
 +print "​Második szám: "
 +b = read()
 +c = a + b
 +print "​Összeg:​ ", c, "​\n"​
 +quit
 +
 +</​code>​
 +
 +<​code>​
 +#​!/​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
 +</​code>​
 +
 +
 +=== A stdin használata ===
 +
 +A bc képes 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
 +
 +
 +Váltás kettes számrendszerbe (10 -> 2):
 +<​code>​
 +janos@iskolazo:​~$ echo "​obase=2;​ 5" | bc
 +101
 +</​code>​
 +
 +Váltás kettes számrendszerből tízes számrendszerbe (2 -> 10):
 +<​code>​
 +janos@iskolazo:​~$ echo "​ibase=2;​ 101; obase=10;"​ | bc
 +5
 +</​code>​
 +
 +=== Matematikai könyvtárak ===
 +
 +A -l kapcsolóval betöltődik néhány függvény:
 +  * s(x) -- x szinusza; x-t radiánban várja
 +  * c(x) -- x koszinusza; x-t radiánban várja
 +  * a(x) -- x arkusz tangense; radiánnal tér vissza
 +  * l(x) -- természetes alapú logaritmus
 +  * e(x) -- e^x értéke
 +  * j(n,x) -- n-nedik Bessel függvénye
 +
 +A PI értéke nincs tárolva, de könnyen megkapjuk:
 +  pi=4*a(1)
 +  3.14159265358979323844
 +
 +A fokot ezek után így számolhatjuk radiánba, majd annak vehetjük szinuszát:
 +  fok=1
 +  pi=4*a(1)
 +  rad=fok*pi/​180
 +  print s(rad)
 +
 +
 +Alapértelmezett bemenetről szögfüggvények:​
 +<​code>​
 +janos@iskolazo:​~$ echo "​pi=4*a(1);​ fok=1; rad=fok*pi/​180 ;s(rad )" | bc -l
 +.01745240643728351281
 +</​code>​
 +
 +
 +
 +==== 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:
 +<​code>​
 +ANSI_X3.4-1968//​
 +ANSI_X3.4-1986//​
 +ANSI_X3.4//
 +ANSI_X3.110-1983//​
 +ANSI_X3.110//​
 +MS-ANSI//
 +</​code>​
 +
 +Használatra példa:
 +  iconv -f ISO8859-2 -t UTF8 -o kimenet.txt bemenet.txt
 +
 +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
 +
 +
 +  file /bin/ls
 +
 +==== 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:​
 +  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 [[http://​www.lightandmatter.com/​when/​when.html|weboldaláról]],​
 +[[https://​github.com/​bcrowell/​when|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:
 +<​code>​
 +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.
 +</​code>​
 +
 +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ő.
 +
 +<​code>​
 +y
 +You can edit your calendar file using your favorite editor. Please enter the command you
 +want to use to run your editor, or hit return to accept this default:
 +  emacs -nw
 +</​code>​
 +
 +Én beírtam az "​mcedit"​ parancsot, mivel ezt a szövegszerkesztőt szeretem.
 +<​code>​
 +mcedit
 +You can now add items to your calendar file. Do ``when --help''​ for more information.
 +Szo 2015 szept 26   4:50
 +</​code>​
 +
 +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.
 +
 +<​code>​
 +$ when
 +Szo 2015 szept 26   4:52
 +
 +today      2015 szept 26 Tesztesemény
 +</​code>​
 +
 +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.
 +
 +==== truncate ====
 +Csökkenti vagy növeli egy fájl méretét a megadott méretre.
 +
 +**//​Figyelem:​ a csökkentés vagy növelés után egyes parancsok
 +nem a fájl valós méretet mutatják. Ha más eszközzel írjuk a fájlt,
 +a helyzet rendeződik.//​** ​
 +
 +A fájl méretét a -s, illetve a <​nowiki>​--size=MÉRET</​nowiki>​
 +kapcsolóval adjuk meg.
 +  trunate -s 0 egy.txt
 +Ha nulla értéket adunk meg, akkor a fájl tartalmát töröljük.
 +
 +Ha megadott méret nagyobb mint a fájl aktuális mérete, akkor
 +az üres részek 0 bájttal töltődnek fel.
 +A kísérlethez hozzunk létre egy fájl:
 +  echo vmi1 > egy.txt
 +
 +Nézzük meg méretét:
 +<​code>​
 +$ ls -l
 +összesen 4
 +-rw-r--r-- 1 janos janos 5 szept 19 19:20 egy.txt
 +</​code>​
 +
 +Állítsuk be új fájlméretet:​
 +  truncate -s 3 egy.txt
 +
 +Nézzük meg újra a fájl méretét:
 +<​code>​
 +$ ls -l
 +összesen 4
 +-rw-r--r-- 1 janos janos 3 szept 19 19:20 egy.txt
 +</​code>​
 +
 +
 +Ha a megadott méret
 +kisebb mint az eredeti fájlméret,​ akkor a fájl tartalmát ​
 +egyszerűen levágja.
 +
 +  truncate -s 15 egy.txt
 +
 +===== SMB megosztás elérése =====
 +
 +Egy állomány feltöltése:​
 +
 +<code bash>
 +smbclient --user kati -c "put vmi.txt"​ //​192.168.1.4/​homes
 +</​code>​
 +
 +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 <​nowiki>​--user</​nowiki>​ kapcsoló:
 +
 +<code bash>
 +smbclient -c "put vmi.txt"​ //​192.168.1.4/​homes
 +</​code>​
 +
 +
 +
 +
 +Elérés interaktív módon:
 +<code bash>
 +smbclient //​192.168.1.4/​homes
 +</​code>​
 +
 +
 +Vagy van amikor a szerveren a megosztás csak "​home":​
 +<code bash>
 +smbclient //​172.16.0.1/​home
 +</​code>​
 +
 +Esetleg így:
 +<code bash>
 +smbclient --user joska  //​server/​home
 +</​code>​
 +
 +
 +
 +
 +^  Általános kapcsolók ​ ^^^
 +^  kapcsoló ​ ^^  Leírás ​ ^
 +| -U | <​nowiki>​--user=felhasználónév</​nowiki>​ | Felhasználónév megadása |
 +| -L | <​nowiki>​--list</​nowiki>​ | A távoli gép szolgáltatásait mutatja |
 +| -W | <​nowiki>​--workgroup=tartománynév</​nowiki>​ | SMB csoport megadása |
 +| -D | <​nowiki>​--directory kezdőkönyvtár</​nowiki>​ | Kezdő könyvtár megadása |
 +| -c | <​nowiki>​--command parancsszöveg</​nowiki>​ | Parancs végrehajtása a távoli szerveren. \\ Kapcsolat nélkül szoktuk használni |
 +
 +Általánosan használt parancsok
 +
 +^  Parancs ​ ^  Leírás ​ ^
 +| help [parancs] vagy ? [parancs] | Az összes parancs megjelenítése,​ \\ vagy egy adott parancs elírása |
 +| history | Parancstörténet megjelenítése |
 +| cd [könyvtár] | az aktuális könyvtár cseréje; argumentum nélkül az aktuális könyvtárat adja |
 +| lcd <​könyvtár>​ | a helyi könyvtár cseréje |
 +| put <helyi név> [távoli név] | fájl feltöltése |
 +| get <távoli név> [helyi név] | fájl letöltése |
 +| ls [maszk] | az aktuális könyvtár tartalma |
 +| mget <​maszk>​ | minden maszkra illeszkedő fájl letöltése |
 +| mput <​maszk>​ | minden maszkra illeszkedő fájl feltöltése |
 +| recurse | a rekurzív fel és letöltés engedélyezése az mget/mput parancsok esetén |
 +| prompt | 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> | helyi parancs futtatása és a kimenet elkapása |
 +| listconnect |  Az aktuális kapcsolatról ad információt |
 +| more <​fájlnév>​ | Távoli fájl lekérése és tartalmának megmutatása \\ a PAGER környezetei változóban beállított lapozóval |
 +| rename <régi fájlnév>​ <új fájlnév>​ | Fájlok átnevezése az aktuális \\ könyvtárban,​ a távoli gépen |
 +| rm <​maszk>​ | Az összes maszkkal egyező fájl törlése a távoli szerveren |
 +| rmdir <​könyvtárnév>​ | Adott könyvtár törlése |
 +| showconnect | Aktuális kapcsolat megjelenítése |
 +| lowercase | 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.
 +
 +
 +===== Függelék =====
 +==== A yes parancs ====
 +
 +A yes parancs mint láttuk, folyamatosan a "​yes"​ szót írja a képernyőre. ​
 +A folyamatkezelésnél fejezetben a folyamatok bemutatására használtam.
 +A yes parancs használható arra is, hogy olyan parancsok és scriptek ​
 +számára, amely bemenetként ezt a szót várja, átadjuk számára csővezetéken ​
 +keresztül:
 +  yes | script.sh
 +
 +
 +
 +===== Utószó =====
 +
 +Ezt a könyvet, jegyzetet (most erre az egy lapra gondolok: 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, ne csak a parancssort tartalmazza a leírásom.
 +Én azonban csak a parancssorról akartam írni, mert arról is lehet több könyvnyi ​
 +anyagot írni. Na meg legyen hasonló a "​Win"​ leíráshoz.
 +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 [[:​oktatas|oktatás]] oldalon megtalálható az 
 +e-mail címem, szívesen veszek visszajelzéseket.
 +
 +===== Források =====
 +==== Külső linkek ====
 +
 +  * http://​www.gnu.org/​software/​bash/​manual/​html_node/​ (2018)
 +  * http://​hu.opensuse.org/​Dokument%C3%A1ci%C3%B3/​SL9.3/​Rendszer/​A_Linux_f%C3%A1jlrendszerei (2018)
 +  * http://​www.thegeekstuff.com/​2012/​02/​linux-fuser-command/​ (2018)
 +  * http://​thesmithfam.org/​blog/​2006/​05/​23/​bash-socket-programming-with-devtcp-2/​ (2018)
 +  * http://​linux.about.com/​od/​commands/​a/​blcmdl1_findx.htm (2018)
 +  * https://​linuxbox.hu/​find (2018)
 +  * http://​www.comptechdoc.org/​os/​linux/​programming/​linux_pgsignals.html (2018; Jelzések)
 +  * http://​www.nano-editor.org (2018; Nano)
 +  * http://​www.linfo.org/​alias.html (2018)
 +==== Helpek ====
 +  * grep --help
 +  * man grep
oktatas/linux/parancssor.txt · Utolsó módosítás: 2023/08/25 22:14 szerkesztette: admin