Linux

Nem lehet csak úgy kilépni a vi-ból! Egyet jegyezzünk meg nagyon: Esc : q ! Enter. Ez a varázsige! (A legnépszerűbb kérdés a StackOverflow-n: https://stackoverflow.com/questions/11828270/how-do-i-exit-the-vim-editor.)

exitvim.jpg

Áttekintés

A Linux felhasználóbarátság, a felhasználói szoftverek és hardvertámogatás szempontjából mindig is messze a Windows mögött lemaradva kullogott, fényévnyi távolságra attól, és egyelőre semmi jel nem mutat arra, hogy ez a jövőben meg fog változni legalább annyira, hogy egy átlag felhasználónak megérje legalább elgondolkodnia azon, hogy lecserélje a Windows-t Linuxra. Gondoljunk bele: amíg Windows-on néhány kattintással Photoshopot használunk vagy játszunk a FIFA legújabb változatával, addig Linuxon azzal küzdünk, hogy hogyan lépjünk ki egy, az 1970'-es években írt konzolos szövegszerkesztőből, a vi-ból. A személyi számítógépeken futó operációs rendszerek piacán a Windows részesedése stabilan 90% fölött mozog, a Linux pedig a maga 2-3%-os részesedésével tartósan a harmadik helyen áll (megelőzi a Mac a maga 6-7%-ával). (A statisztikát azért érdemes a következővel árnyalni: a felhasználók többsége ma már okostelefont és tabletet használ személyi számítógép helyett, és ott a piac megoszlik a Linux alapú Android, valamint a Mac alapú IOS között; a Windows ott labdába sem rúg.)

Ám stabilitásban bőven ráver a Windows-ra, így az üzemeltetésnél megkerülhetetlen. A TOP500 szuperszámítógépek piacán 2017-re elérte a 100%-ot. A gyakorlatban a fejlesztések többnyire Windows, az üzemeltetés viszont Linux operációs rendszeren történik. Emiatt az átlagos fejlesztőknek érdemes megismerkedni a Linux alapjaival. Ez az oldal azt tűzte ki célul, hogy bemutassa azokat a legfontosabb Linuxos elveket, parancsokat, tippeket és trükköket, amelyek a nem rendszer adminisztrátor fejlesztőknek szüksége lehet - de nem többet. A leírás feltételezi, hogy az olvasó felhasználói szinten ismeri a Windows operációs rendszert.

Felépítés

A Linux felépítése a következő:

  • Mag (kernel): a legszűkebb értelembe vett Linux.
  • Héj (shell): ez egy parancssor, ahol utasításokat tudunk kiadni.
  • Programok: ezeket tudjuk végrehajtani, pl. parancssorból indítva.

Disztribúciók

A Linux tehát csak a legbelső lényegi része az operációs rendszernek, ami önmagában használhatatlan. Az esetek döntő többségében valamilyen disztribúciót használunk, ami komponensek egymással együttműködő rendszere. A legnépszerűbb disztribúciók:

  • Ubuntu (https://ubuntu.com/): otthoni célokra kiváló. Egyszerű a telepítése, és alapból nagyon sok hasznos programot tartalmaz. Óriási előnye, hogy akár telepítés nélkül is ki tudjuk próbálni. Az alapértelmezett telepítés egész jól használható.
  • Debian (https://www.debian.org/): ez egy nehéz műfaj, melyek elsősorban üzemeltetésnél használunk. Minden apróságot beállítani eléggé macerás; házi célokra rosszak a tapasztalataim vele, igaz, ez jó régen volt.
  • Linux Mint (https://linuxmint.com/): ez amiatt került ide, mert már évek óta piacvezető, de idáig fel se tűnt… Még nem próbáltam ki.
  • RedHat (https://www.redhat.com/en/technologies/linux-platforms/enterprise-linux): ez volt az első Linux disztribúció, amit használtam, ma már eléggé háttérbe szorult.
  • openSUSE (https://www.opensuse.org/): a SuSE is kezdetben népszerűbb volt mint ma, de még létezik.
  • CentOS (https://www.centos.org/): ez is elsősorban az üzemeltetésnél népszerű.

Hogyan használjuk?

A lent leírtakat többféleképpen is használhatjuk, de egyik módszert se mondanám egyszerűnek vagy könnyűnek. Néhány példa:

  • Egy Linux disztribúció telepítése:
    • Windows helyett, azaz ez lesz az egyetlen operációs rendszer a gépünkön. (Nem ajánlott.)
    • Windows mellé, másodlagos operációs rendszerként. (Ajánlott, ha létre tudunk hozni partíciót.)
    • VirtualBox-ban telepítjük a Linux disztribúciót. (Ez is ajánlott, bár ha Dockert használunk, akkor nem működik.)
  • Saját Linux esetén a következő lehetőségeink vannak:
    • Eleve nem telepítjük fel a grafikus felületet. Ez esetben alapból konzolt kapunk.
    • Ha feltelepítjük a grafikus felületet, akkor az általában automatikusan elindul. Ez esetben az egyik lehetőség átváltani konzolra a Ctrl + Alt + F1 (vagy F2, F3, F4, F5 ill. F6) billentyűkkel (az F7 visszavált a grafikus felületre).
    • A másik lehetőség: elindítani az xterm programot az X felületen.
  • Ha nem szeretnénk komplett Linuxot telepíteni (tehát tényleg csak ki szeretnénk próbálni, de nem szeretnénk üzemszerűen használni), akkor a következ lehetőségek adottak:
    • Bejelentkezhetünk egy távoli Linuxos szerverre (lehetőleg ne produktív gépre, hanem olyanra, amit teszt céllal használunk), és ott is kipróbálhatjuk.
    • A git program feltelepítésével a git bash is feltelepül. Az alap parancsok kipróbálására az is megteszi, bár igen korlátozottak a lehetőségek, különösen az új programok telepítése.
    • A GNU Win32 programgyűjtemény (http://gnuwin32.sourceforge.net/) a leggyakoribb Linuxos programok Windows-ra portolt változatát tartalmazza; egyes parancsokat tehát normál DOS-os promptból is ki tudunk próbálni.
    • Dockerben futtatjuk a parancsokat. (Ez kizárja a VirtualBoxot.) A következőképpen tudjuk indítani: docker run -it ubuntu. Ezzel két probléma is van: egyrészt kilépéskor minden beállítás elveszik (ill. fordítva megfogalmazva: minden indítás teljesen tiszta lappal történik), másrészt alapból igen vérszegény; még a "minden Unix rendszeren létező vi" sincs alapból rajta. Így először érdemes lefuttatni az apt-get update parancsokat, majd apt-get install parancsokkal feltelepíteni a használandó programokat. (Erről még lesz szó bővebben.)

Fájlrendszer

A Linux fájlrendszerben nincsenek olyan értelembe vett meghajtók, mint a Windows-ban, ott valamelyest eltér a filozófiája. Mielőtt rátérünk a tipikus könyvtárfelépítésre, tisztázunk pár alapfogalmat.

  • A Linux fájlrendszer leggyakoribb típusa az ext. Az írás pillanatában az ext4 a legfrissebb.
  • Emlékeztetőül: a DOS/Windows világban hajdanában a FAT16 volt, később jött a FAT32, manapság az NTFS legelterjedtebb.
  • Más fájlrendszerek (pl. az említett Windows-osok, egyéb más operációs rendszer fájlrendszerei, vagy akár a CD/DVD fájlrendszere) Linux alól elérhetőek; legalább olvasni tudja őket, van, amit írni is.
  • Ahhoz, hogy elérjük a felsorolt fájlrendszereket, fel kell csatolni, amit a mount művelettel lehet. Ennek párja az umount, amivel lecsatolni tudjuk a fájlrendszert.
  • A felcsatolt fájlrendszerek a /etc/fstab fájlban találhatóak. Ezt így hívjuk mount table (csatolási tábla).
  • Az egyes fizikai lemezekre így hivatkozhatunk: /dev/hda, /dev/hdb stb. Ha partícionálva vannak, akkor az egyes partíciókra a következőképpen: /dev/hda1, /dev/hda2 stb.
  • Létezik egy speciális fájlrendszer típus: a swap. Ez a memória kiterjesztése; ha a futás során valami nem fér bele a memóriába, akkor az ide íródik ki. Emlékeztetőül: ugyanez Windows alatt a c:\swapfile.sys. Amíg Windowsban a normál fájlrendszerben egy fizikailag létező fájlról van szó, addig Linuxban egy külön partícióról. Ennek hátránya, hogy már a lemez formázásakor el kell dönteni annak pontos méretét, előnye viszont az, hogy nem keveredik a többi fájllal.
  • Az operációs rendszer elindításához rendszerbetöltőre (boot loader) van szükség. Az ún. Master Boot Record-ba (MBR) kerülő kis program felelős a kernel betöltéséért. A legismertebb rendszerbetöltők a LILO (Linux Loader), ill. újabban a GNU GRUB.
  • A rendszerbetöltők segítségével több operációs rendszert is be tudunk állítani. Meg tudunk adni egy alapértelmezettet, ami valamennyi idő után automatikusan elindul, de megadhatunk egy listát is, amelyből a felhasználó ki tud választani egyet.
  • Ha Windows és Linux operációs rendszert is szeretnénk telepíteni a gépünkre, akkor érdemes először a Windows-t feltelepíteni, és utána a Linuxot, mert agy a Linuxban könnyebben létre tudjuk hozni a boot táblát. Ha fordítva tesszük, akkor a Windows felülírja a telepítéskor az MBR-t, és utána elég nehézkes elérni a feltelepített Linuxot.

A Linuxon minden a / (gyökér) könyvtárból indul. Disztribúcióról disztribúcióra kisebb-nagyobb eltérések lehetnek. A legtöbb esetben az alábbiak vannak:

  • /bin/, /usr/bin/, /usr/bin/X11, /usr/local/bin/, /sbin/, /usr/sbin/: rendszerprogramok.
  • /lib/, /usr/lib/: rendszerkönyvtárak.
  • /home/[username]/, /root/: a az egyes felhasználóknak, ill. magának a rendszer adminisztrátornak (azaz a root felhasználónak) a személyes könyvtára.
  • /dev/: eszközök (device). Az ez alatti fájlok nem fizikai fájlok, hanem hivatkozások az egyes eszközökre. Példák:
    • /dev/hda, /dev/hdb: hivatkozás a fizikai lemezekre.
    • /dev/cdrom: hivatkozás a CD meghajtóra.
    • /dev/null: ez a nagy semmi.
  • /etc/: konfigurációs fájlok. Példák:
    • /etc/X11/: a grafikus felület konfigurációs fájljai találhatóak itt.
    • /etc/fstab: a felcsatolt fájlrendszereket tartalmazza.
    • /etc/lilo.conf, /etc/grub.conf: függően attól, hogy melyik rendszerbetöltőt használjuk, vagy az egyik vagy a másik létezik.
    • /etc/crontab: az ütemezett feladatokat tartalmazza.
    • /etc/group: a felhasználói csoportokat tartalmazza.
    • /etc/password: a felhasználók jelszavait tartalmazza (titkosított formában).
    • /etc/inittab, /etc/rc.d/init.d: automatikusan indítandó programok.
  • /mnt/, /media//: a felcsatolt fájlrendszerek itt érhetőek el. Az előbbi általában a tartós, az utóbbi pedig az ideiglenes.
  • /opt/: a külső programok általában ide települnek, pl. Java.
  • /boot/: a rendszer indulásához szükséges fájlokat tartalmazza.
  • /proc/: a rendszer futásával kapcsolatos fájlok találhatóak itt. A fájlok méretei többnyire 0 hosszúak, de cat paranccsal kilistázva hasznos információkat kapunk. Példák:
    • cat /proc/version: a kernel verziót írja ki.
    • cat /proc/cpuinfo: a processzor alapadatait tudjuk meg ezzel.
    • cat /proc/meminfo: a memória adatait tudjuk meg segítségével.
  • /var/: változó dolgok vannak itt, pl. napló fájlok.

Felhasználók és csoportok

A Linux a kezdetektől fogva nagy hangsúlyt fektetett a jogosultság kezelésre. Mindegyik könyvtár és fájl egyértelműen meghatározott felhasználóhoz tartozik. A felhasználókat csoportokba szervezi (egy felhasználó több csoportnak lehet a tagja), és háromszor háromféle jogosultságot különböztet meg.

  • Egyrészt definiálja, hogy melyik csoportra vonatkozik, ami lehet:
    • mindenki számára,
    • a csoport tagjai számára,
    • csak az adott felhasználó számára.
  • A jogosultság maga lehet:
    • olvasás,
    • írás,
    • végrehajtás.

Erre jön még tizedikként (igazából elsőként) egy jelző karakter, ami lehet:

  • d: könyvtár (directory),
  • l: szimbolikus hivatkozás (link).

Létezik még egy plusz jogosultság: a rendszer adminisztrátori. Ő a root felhasználó. Ezzel a jogosultsággal más felhasználó is végre tud hajtani parancsokat, ha a parancs elé teszi a sudo parancsot, pl. sudo ls /root. Ehhez viszont megfelelő sudo jogosultságokkal kell rendelkeznie az adott felhasználónak. Ezzel tud a rendszergazda másoknak is rendszergazdai jogokat adni anélkül, hogy felfedné a rendszergazdai jelszót.

Héj

A héjjal (shell) kapcsolatos legfontosabb tudnivalók:

  • A parancs vagy program indítása a nevének beírásával és az Enter megnyomásával történik. Csak a futtatható jogosultsággal rendelkező fájlokat lehet elindítani.
  • A többi operációs rendszerhez hasonlóan a Linuxon is léteznek környezeti változók. A tartalmát a shellból általában a $ jellel érjük el. Néhány példa:
    • PATH: ha megpróbálunk elindítani egy programot, akkor az itt felsorolt könyvtárakban keresi azt. A Windows-zal ellentétben itt az elválasztó karakter a :.
    • HOME: a bejelentkezett felhasználó saját könyvtára.
    • EDITOR: az alapértelmezett szövegszerkesztő.
    • SHELL: a shell program elérési útvonala.
    • HOSTNAME: az adott számítógép neve.
    • HISTFILE: a history fájl elérési útvonala.
    • TERM: a terminál típusa.
    • BASH_VERSION: ha a shell bash, akkor annak a verziója.
  • Az aktuális könyvtár általában nem része ennek a környezeti változónak, így ha az adott könyvtárból szeretnénk indítani, akkor a ./ prefixet kell elébe tenni. Ez a kezdőknél sok problémát okoz.
  • Ha a programot háttérben szeretnénk futtatni és a konzolt azonnal vissza szeretnénk kapni, akkor az & jelet kell a végre írni, pl. sleep(5) &.
  • A programok standard kimenete a konzol. Ezt át tudjuk irányítani máshova, pl. fájlba a > karakterrel, pl. echo Szia > file.txt.
  • Ha átirányítjuk a /dev/null-ra, akkor sehol sem jelenik meg, elveszik. Hasznos lehet, ha végre szeretnénk hajtani egy olyan műveletet, ami túl sok mindent ír a konzolra, ami számunkra értéktelen.
  • Ha fájlba irányítunk, akkor újból létrehozza a fájlt, ha már létezett. Az aktuálishoz hozzá tudjuk fűzni a » átirányítással, pl. echo Szia » file.txt. Ha a fájl nem létezett, akkor létrehozza.
  • A standard hiba is alapértelmezésben a konzol. Azt így tudjuk átirányítani: 2>. A szám jelentése:
    • 0: stdin
    • 1: stdout
    • 2: stderr
  • A standard hibát a standard outputra a következőképpen lehet átirányítani: 2>&1 (így, szóköz nélkül). Ha mindezt egy fájlba szeretnénk átirányítani, akkor a stdout átirányításának meg kell előznie a másikat, így: parancs > file.txt 2>&1.
  • A ~ karakterrel a home könyvtárat lehet elérni, pl. a echo Szia > ~/file.txt parancs a home könyvtárban hozza létre a file.txt fájlt.
  • Ha a parancsot két visszafele mutató egyszeres idézőjelbe tesszük, akkor az előtte álló parancsnak paraméterül adja át az eredményt, pl. echo `ld` (ami jelen esetben persze ekvivalens azzal, hogy ls).
  • A | "cső" (pipe, ejtsd pájp) jellel lehet a megoldani azt, hogy az egyik program (tipikusan szöveges) outputja a következő program inputja legyen, pl. cat longfile.txt | grep word | more.
  • A * ún. joker karakter, amivel mintaillesztést tudunk végrehajtani héj szinten. Pl. az ls -l file* a file kezdetű fájlokat és könyvtárakat listázza ki részletesen. Itt nem az ls oldja fel a * karaktert, hanem maga a héj, az ls (mint külön program) már eleve megkapja az eredményt. Fontos, hogy ez nem reguláris kifejezés, hanem annál egyszerűbb.
    • ls -l file*: a file után bármi lehet, akár semmi is. (Ha reguláris kifejezés lenne, akkor tetszőleges számú e karaktert jelentene.)
    • ls -l file?.txt: tetszőleges, de egyetlen karakterre illeszkedik, pl. file5.txt.
  • Általában a felfele nyíllal lehet előhívni az alőző parancsokat; a lefele ill. lefele nyilakkal lehet lépkedni. De ez shell függő; a bash tudja, de pl. a ksh nem.
  • Általában a tab karaktert (ami a Caps Lock fölött van) egymás után kétszer megnyomva ki lehet egészíteni a lehetséges értékekkel. Ez lehet akár program, akár adott fájl (az adott könyvtárban, vagy ha elkezdtünk beírni egy elérési útvonalat, akkor ott). De ez is shell függő.
  • A !! paranccsal tudjuk az előző parancsot végrehajtani ismét.

Két példa:

  • bash: valószínűleg ez a legnépszerűbb. A fent említettek mindegyikét támogatja. Bejelentkezéskor a következő scriptek futnak le. Login módban: /etc/profile, ~/.bash_profile, ~/.bash_login, ~/.profile. Nem login módban: /etc/bash.bashrc és ~/.bashrc. A magyar WIkipédia szócikke igen jól összeszedi a legfontosabbakat: https://hu.wikipedia.org/wiki/Bash.
  • dash: hasonló a bash-hoz, viszont sokkal kisebb annál.
  • ksh: kevésbé népszerű, mivel nem annyira felhasználóbarát, de mivel sok script íródott ezen, örökölt technológiaként még érdemes megismernünk.

Shellben nemcsak interaktív módban lehet parancsokat kiadni, hanem scriptet is létre lehet hozni. Ez valójában nem más, mint egymás után írt parancsok. Ezáltal aa shell nagyon jól használható scriptek készítésére, azaz automatizálásra. A lent felsorolt (és azon felüli) programokat hívják, a fenti elveket (és még sok mást) tartalmazzák, és a programozási nyelvek többségére jellemző struktúrákat (változók műveletek, feltételkezelés, ciklus, függvények stb.) is tartalmaz. Erről további részleteket a Script nyelvek oldalon olvashatunk.

Programok és parancsok

Fájlkezelés

A fájlkezeléssel kapcsolatos legfontosabb parancsok az alábbiak:

  • ls: könyvtárak tartalmának kilistázása.
    • ls: csak a fájl- ill. könyvtárneveket írja ki, egy sorban. Általában a dir paranccsal ekvivalens.
    • ls -l: kiír néhány részletet táblázatos formában: hozzáférések, tulajdonos, utolsó módosítás időpontja, név, ill. itt már egyértelműbb, hogy fájlról vagy könyvtárról van-e szó.
    • ls -al: a rejtett (.-tal kezdődő) fájlokat és könyvtárakat is kiírja részletesen. Annyira elterjedt, hogy a legtöbb helyen ezzel ekvivalens: ll.
  • cd: könyvtár váltás (change direvtory), pl.
    • cd dirname: belép az adott könyvtárban található dirname könyvtárba
    • cd dirname/subdirname: belép az adott könyvtárban található dirname alatti subdirname könyvtárba
    • cd /usr/bin: belép az abszolút /usr/bin könyvtárba
    • cd ..: eggyel feljebb lép a könyvtárszerkezetben.
    • cd .: az adott könyvtárban marad.
    • cd: a home könyvtárba lép.
    • cd -: az előző könyvtárba lép.
  • mkdir: új könyvtárat hoz létre.
    • mkdir dirname: létrehozza az aktuális könyvtárban a dirname nevű könyvtárat.
  • rm: fájlt töröl.
    • rm filename: letörlni a filename nevű fájlt.
    • rm *: minden fájlt kitöröl az adott könyvtárból.
    • rm -r dirname: rekurzívan kitörni a dirname könyvtárat.
    • rm -rf dirname: rekurzívan kitörni a dirname könyvtárat úgy, hogy nem is kérdez vissza az írásvédett fájlok törlésekor (-f: force).
    • sudo rm -rf /*: rekurzívan mindent kitöröl rendszergazdai jogokkal, így a rendszer visszafordíthatatlanul használhatatlan lesz.
  • rmdir: kitöröl egy üres könyvtárat.
    • rmdir dirname: kitörli a dirname könyvtárat, ha az üres.
  • cp: fájlt másol.
    • cp file.txt mycopy.txt: másolatot készít a file.txt fájlról mycopy.txt néven.
    • cp *.txt dirname: az összes txt kiterjesztésű fájlt az adott könyvtárból bemásolja a dirname könyvtárba.
    • cp -r dirname1 dirname2: a dirname1 könyvtár teljes tartalmát a dirname2-be másolja. Ha a dirname2 már létezik, akkor annak a tartalma lesz (azaz minden logikailag eggyel mélyebbre kerül), egyébként létrejön, és ez esetben egy szinten lesz a forrás és a cél.
  • mv: átnevezés. Hasonlóan működik mint a cp, azzal a különbséggel, hogy itt az eredeti néven megszűnik a fájl ill. a könyvtár. Ha lemezen belül történik a másolás, akkor ez általában nagyon gyors, mert csak a nevet kell átírni, ha viszont lemezek között, akkor lassú, mert át kell másolni és utána az eredeti helyrl le kell törölni.
    • mv dirname1 dirname2: átnevezi a dirname1 könyvtárat erre: dirname2.
  • ln: kapcsolatot (link) készít két fájl ill. könyvtár között.
    • ln existing.txt new.txt: létrehoz egy bejegyzést new.txt néven, ami tartalmában megegyezik az existing.txt-vel. Ha az egyiket megváltoztatjuk, akkor a másik is megváltozik. Helyet csak egyszer foglal. Bármelyiket letörölhetjük, a másik megmarad. Ez a módszer csak fájlokra működik, könyvtárakra nem.
    • ln -s existing.txt new.txt: szimbolikus linket hoz létre. Ez annyiban tér el az előzőtől, hogy ha az eredeti letöröljük, akkor a másolat esetén hibás lesz a referencia. Ez a módszer viszont működik könyvtárak esetén is. Ha ls -l paranccsal kilistázzuk a könyvtár tartalmát, akkor itt -> jelenik meg.
  • touch: egy üres fájlt hoz létre.
    • touch file.txt: létrehozza a teljesen üres (0 bájt méretű) file.txt nevű fájlt.
  • pwd: a print working directory rövidítése, kiírja a pillanatnyi könyvtárat. Paramétere nincs.
    • pwd: végrehajtja a műveletet.
  • df: statisztikákat jelenít meg az egyes meghajtókról.
    • df: kiírja azt, hogy melyik meghajtó mekkora, az ott levő fájlok mennyi helyet foglalnak, ill. mindezt százalékos formában.
    • df -h: a kapcsoló a human readable rövidítése; míg az előző bájtban jeleníti meg, addig ez kilobájtban, megabájtban vagy akár gigabájtban.
  • du: a disk usage rövidítése, ami kiírja, hogy melyik könyvtár mennyi helyet foglal.
    • du: kiírja az aktuális könyvtár és rekurzívan az összes alkönyvtára által elfoglalt helyet bájtan. Tehát mnden egyes könyvtárra statisztikát készít, majd az összegzi is azokat.
    • du -s: csak az adott könyvtárra összegzi a méretet, nem írja ki a rekurzív részleteket.
    • du —max-depth 1 -h: egy mélységben összegzi csak az eredményeket, valamint nem bájtban, hanem nagyobb egységben írja ki.
    • sudo du -sh ./* 2> /dev/null | sort -h: az összes könyvtár tartalmának összegzése, sorba rendezése, emberileg olvasható formában történő megjelenítése, a nem olvasható könyvtárak miatti hibák elnyomásával, mindezt rendszeradminisztrátori jogokkal, hogy minden benne legyen.
    • ncdu: ez egy külön telepíthető program, amely pont úgy működik, ahogy azt elvárjuk: először az első mélységet összegzi, majd lejjebb tudunk lépkedni, és azokat is összegzi.
  • find: fájlokat lehet segítségével keresni
    • find: kiírja rekurzívan az összes könyvtárat és fájlt
    • find . -name file.txt: megkeresi az aktuális könyvtárban (.) a file.txt nevű fájlt.
    • find /root -iname file.txt: megkeresi a /root könyvtárban (.) a file.txt nevű fájlt úgy, hogy nem veszi figyelembe a kisbetűt és nagybetűt.
    • find / -type d -name directory: megkeresi az összes directory nevű könyvtárat. (-type f jelenti a fájlt.)
    • find -perm 0644: megkeresi azokat a fájlokat és könyvtárakat, amelyeknek a hozzáférési szintje 644.
    • find -user root: azokat a fájlokat és könyvtárakat keresi meg, amelyek a root felhasználóhoz tartoznak.
    • find -group root: azokat a fájlokat és könyvtárakat keresi meg, amelyek a root csoporthoz tartoznak.
  • locate: szintén fájlokat keres, de két szempontból más mint a find: egyrészt ezt egy adatbázisból keresi ahelyett, hogy ténylegesen végigmenne a fájlrendszeren (emiatt nagyon gyors, de lehet, hogy nem aktuális), másrészt reguláris kifejezéseket is meg lehet neki adni.
    • updatedb: aktualizálja az adatbázist, ami alapján keres. (Célszerű sudo-val kiadni, közvetlenül a locate parancsok kiadása előtt.)
    • locate file*: megkeres minden olyan bejegyzést, ami úgy kezdődik, hogy file.
  • mount: fájlrendszert lehet vele felcsatolni.
    • mount: kiírja a feljcsatolt fájlrendszereket.
    • mount -t ntfs /dev/sdb1 /mnt/windows: felcsatolja az NTFS formátumú Windows fájlrendszert a /mnt/windows könyvtár alá.
    • mount -t vboxsf share /media/windows-share: VirtualBox-ban felcsatolja a share nevű megosztott könyvtárat.
    • mount -a: minden könyvtárat felcsatol, ami a /etc/fstab konfigurációs fájlban található.
    • mount /dev/sdb1: felcsatolja a dev/sdb1-t, ha benne van a /etc/fstab-ban. A többi paramétert onnan veszi.
    • mount /mnt/windows: hasonló az előzőhöz, de itt nem az eszköz elérését, hanem a célkönyvtárat adjuk meg..
  • umount: segítségével le tudjuk csatolni a fájlrendszert. Kezdetben pl. nem lehetett kinyitni a CD meghajtót addig, amíg ezzel a paranccsal explicit le nem csatoltuk. (A Linux mindig is messze a Windows mögött kullogott…)
    • umount /mnt/windows lecsatolja a /mnt/windows könyvtárra csatolt fájlrendszert.
  • mc: a Midnight Commander rövidítése, ami az egykori Norton Commander mintájára készült fájlkezelő eszköz. A Norton Commander mai Windows-os változata a Free Commander, annak továbbfejlesztett változata a Windows Commander, a Linuxon pedig kezdettől fogva a Midnight Commander. Hasonlóan működik mint a felsoroltak, és a látszat ellenére a tudása is megközelíti azokét. Néhány fontosabb parancs:
    • F3: szöveges fájl tartalmának megnézése.
    • F4: adott fájl szerkesztése. A beépített szerkesztője az mcedit, amit önállóan is használhatunk. Ez utóbbinak a legfontosabb parancsai:
      • F2: mentés
      • F3: másolás (amire ezt írja: mark)
      • F5: beillesztés (a megnevezése megtévesztően copy)
      • F10: kilépés
    • Shift - F4: új szöveg fájl létrehozása és szerkesztése.
    • F5: másolás az egyik ablakból a másikba
    • F6: átnevezés egyik ablakból a másikba
    • F7: könyvtár létrehozása
    • F8: fájl vagy könyvtár törlése
    • F9: a felső menü megjelenítése; pl. Command → Find file fájlt keres név és/vagy tartalom alapján.
    • F10: kilépés
    • Ctrl - O: ezzel tudunk úgy visszaváltani parancssorra, hogy közben fut a háttérben az mc. Újból Ctrl - O, és ismét megjelenik az mc.

Programok telepítése

A programok telepítésével, kezelésével kapcsolatos legfontosabb programok ezek:

  • apt-get: a Debian és Ubuntu disztribúció programtelepítő rendszere. Rekurzívan telepíti a függőségeket is. Általában rendszergazdai jogok kellene hozzá (pl. sudo apt-get …).
    • apt-get update: aktualizálja az adatbázist. Ezt első lépésként mindenképpen végre kell hajtani, ill. időnként ezzel aktualizálni.
    • apt-get install mc: telepíti az mc programot.
  • dpkg: a Debian csomagkezelő rendszere.
  • rpm: a Redhat Package Manager rövidítése; a Redhat Linux disztribúció csomagkezelője.
  • yum: az rpm-re épülő csomagkezelő rendszer.
  • man: a manual (kézikönyv) rövidítése. Segítségével az egyes programok részletes dokumentációját érhetjük el.
    • man find: a find parancs részletes használatát jeleníti meg.
    • man bash: a bash héjról jelenik meg a dokumentáció.
  • which: megmondja, hogy az adott program hol található.
    • which mc: megmutatja, hogy melyik könyvtárban található az mc program futtathatója (/usr/bin/mc).
  • whereis: megmutatja, hogy hol találhatóak egy adott programmal kapcsolatos dolgok. Tehát nemcsak a futtatható, hanem más is.
    • whereis mc: ennek az eredménye ez: mc: /usr/bin/mc /usr/lib/mc /etc/mc /usr/share/mc. Pl. a /etc/mc könyvtárban vannak a beállítások.
  • whatis: egy rövid összefoglalót ad arról, hogy mi is az a program.
    • whatis mc: ennek az eredménye ez: Visual shell for Unix-like systems.

Folyamatok kezelése

Ha egy programot elindítunk, akkor folyamatról (process) beszélünk. Egy programot általában többször is el tudunk indítani. A folyamatoknak van ún. PID-jük (process ID, azaz folyamat azonosító). Ez egy 16 bites egész szám, tehát az értéke a 0-65535 tartományba esik.

  • ps: megjelenti a futó programokat, és kiírja azok PID-jeit is.
    • ps: elég ezt megjegyeznünk, így, paraméter nélkül.
  • top: további statisztikákat jelent meg a futó programokról, pl. pillanatnyi memória- és CPU használat.
    • top: ezt is többnyire paraméter nélkül futtatjuk. Folyamatosan frissíti magát.
  • kill: folyamat leállítása. Ennek segítségével mindenféle jelzéseket (signal) küldhetünk a folyamatoknak (a jelzéseket részletesebben ld. lent).
    • kill 1234: az 1234 PID-ű folyamatnak küldünk ezzel egy leállás üzenetet. A folyamat lehetőséget kap a tisztításra.
    • kill -9 1234: az 1234 PID-ű folyamat azonnali kilövése. Ez egy drasztikusabb megoldás, a folyamat azonnal leáll, tisztítás nélkül.
    • kill -9 -1: az összes folyamat, amit az adott terminálból indítottunk, azonnal leáll, tisztítás nélkül.
  • service: a szolgáltatásokat (angolul: service; ezek valójában háttérben futó, többnyire automatikusan induló folyamatok) menedzselésére szolgáló parancs.
    • service —status-all: az összes szolgáltatás státuszának megjelenítése.
    • service hwclock.sh status: a hwclock.sh státuszát jeleníti meg. Egyéb lehetséges parancsok: stop, start, restart stb.
  • nohup: ha kilépünk a terminálból, akkor alapértelmezésben azok a folyamatok, amelyeket onnan indítottunk, leállnak. Ha azt szeretnénk, hogy fussanak a háttérben, akkor az & karaktert a végére kell írni (pl. ./myprogram.sh &), majd a nohup (no hangup, ne álljon le) paranccsal lehet megmondani, hogy kilépés után is fusson.
    • nohup 1234: az 1234 PID-ű program nem fog leállni azt követően sem, hogy kiléptünk a terminálból.
  • jobs: a háttérben (tehát a & karakterrel) indított programok státuszát írja ki.
    • jobs: ezt is paraméter nélkül szoktuk használni. Érdemes előtte indítani valamit, pl. sleep 10 &.
  • history: kiírja azokat a parancsokat, amelyeket kiadtunk korábban. (Igen, megjegyzi őket.)
    • history: így, paraméter nélkül ezt is.
  • free: statisztikát ír ki a szabad memóriaterületről.
    • free: kiírja bájtban, hogy mennyi helyet foglal a memória és a swap terület, és mennyi belőle a szabad
    • free -h: nagyobb egységekben összegzi az adatokat.
  • source: normál esetben, ha elindítunk egy programot szokásos módon konzolról, akkor az nem változtatja meg a környezetet. Pl. ha a programban meg is változik a könyvtár, a végén, ha véget ér, akkor az eredeti könyvtárba kerülünk. Ez amiatt van, mert új shell környezetben fut az így indított program. Ezt a viselkedést írja felül a source parancs: ez az adott shellben fut le, és minden változtatás megmarad.
    • source myscript: legyen a myscript tartalma ez: cd ... Ha source nélkül futtatjuk, akkor az adott könyvtárban maradunk, source-szal viszont eggyel visszalép.

A folyamatok különböző jelzéseket (signal) kaphatnak az operációs rendszertől, vagy akár parancssorból a felhasználók is (ld. kill parancs), amelyek tipikusan megállással kapcsolatosak. Néhány példa:

  • SIGHUP (1, hangup signal): akkor kapja a folyamat, ha a terminál, amiben fut, bezáródik. (Vonatkozó parancs a nohup.)
  • SIGINT (2, interrupt signal): a CTRL + C hatására kapja a folyamat.
  • SIGQUIT (3, quit signal): A CTRL + D hatására lép fel.
  • SIGFPE (8, floating point error signal): hibás aritmetikai művelet hatására jön létre, pl. nullával való osztás. Ez tehát magából a programból jön.
  • SIGKILL (9, kill signal): a folyamat kívülről kapja, és ez esetben azonnal le kell állnia, azaz nincs lehetőség tisztításra.
  • SIGALRM (14, alarm clock signal): időzítő jelzés.
  • SIGTERM (15, software termination signal): szoftver megállási jelzés; ez az alapértelmezett jelzés.

Felhasználók kezelése

Ha kilistázzuk egy könyvtár tartalmát a részleteket is megjelenítve (-l), akkor kb. ilyeneket látunk: -rwxr-xr—. Ennek magyarázata:

  • Az első - azt jelenti, hogy fájlról van szó (ez lehetne még d vagy l).
  • A következő rwx az adott felhasználóra vonatkozik, és jelen esetben van olvasási, írási és végrehajtási jogosultság is.
  • A következő r-x arra a csoportra vonatkozik, ahova a fájl tartozik, és őnekik csak olvasási és végrehajtási jogosultságaik vannak.
  • Végül az utolsó r— mindenki másra vonatkozik, és azt jelenti, hogy a csoporton kívüli felhasználók csak olvasni tudják, írni és végrehajtani nem.

A betűkön kívül számértékekkel is szoktuk ezt jelölni:

  • 4: olvasás,
  • 2: írás,
  • 1: végrehajtás. A könyvtárak esetén a végrehajtási jogosultság azt jelenti, hogy be lehet lépni az adott könyvtárba.

Pl. Ezekből képezünk hármas csoporton belüli összegeket, pl. a fenti jogosultság számértéke 754.

Egy felhasználó kétféleképpen léphet be a rendszerbe:

  • jelszóval,
  • privát kulccsal.

Ez utóbbiról szó van a Fejlesztőeszközök oldalon.

A felhasználó- és jogosultságkezeléssel kapcsolatos legfontosabb parancsok:

  • useradd: felhasználót tudunk segítségével létrehozni. Fontos, hogy ez tényleg csak a felhasználót hozza létre, semmi mást, így igen ritkán használjuk.
    • useradd csaba: létrehozza a csaba nevű felhasználót.
  • adduser: ezt is felhasználó létrehozására használjuk, itt viszont mindent beállít, amit kell: létrehozza a home könyvtárat, beéri a jelszót és beállítja az alapadatokat.
    • useradd csaba: létrehozza a csaba nevű felhasználót úgy, hogy minden egyéb információt bekér. Létrehoz egy csaba nevű csoportot is, és ez a felhasználó automatikusan ennek a csoportnak lesz a tagja.
  • deluser: felhasználó törlése.
    • deluser csaba: törli a csaba nevű felhasználót.
  • passwd: ezzel lehet jelszót változtatni.
    • passwd: a bejelentkezett felhasználó tudja ezzel a paranccsal megváltoztatni a jelszavát.
    • passwd csaba: a csaba felhasználó jelszavát tudja ezzel megváltoztatni a rendszergazda.
  • groupadd: ezzel új csoportot tudunk létrehozni.
    • groupadd editorial: a szerkesztők csoportját (az editorial szó jelentése szerkesztő) tudjuk ezzel létrehozni.
  • groups: kiírja egy adott felhasznál csoportjait.
    • groups: a bejelentkezett felhasználó csoportjait jeleníti meg.
    • groups csaba: a csaba nevű felhasználó csoportjait jeleníti meg.
  • usermod: ezzel lehet módosítani egy felhasználó csoportját.
    • usermod -aG sudo csaba: a csaba nevű felhasználónak ezzel a paranccsal tudjuk rendszergazdai jogosultságokat adni.
  • chmod: adott fájl jogosultságait lehet ezzel beállítani.
    • chmod 640 file.txt: a felhasználó saját magának írási és olvasási a csoport tagjainak csak olvasási jogosultságot ad, a többieknek pedig semmilyen hozzáférésük sincs hozzá. Egy felhasználó saját magától is el tud venni jogosultságokat, pl. a fenti esetben az adott felhasználónak sem lesz végrehajtási jogosultsága.
  • chown: a change ownership rövidítése; segítségével a tulajdonost lehet megváltoztatni.
    • chown csaba file.txt: ennek eredményképpen a file.txt a csaba tulajdonába kerül. Az eredeti csoport megmarad.
    • chown csaba:editorial file.txt: a csoport is megváltozik editorial-ra.
    • chown :editorial file.txt: csak a csoport változik.
  • su: a switch user (felhasználó váltás) rövidítése, tehát más felhasználóra tudunk átváltani. Ehhez rendszer adminisztrátori jogokkal kell rendelkeznünk.
    • su csaba: csaba felhasználóra váltunk, azaz ki tudjuk próbálni, hogy bizonyos parancsokat ez a felhasználó hogyan tud végrehajtani.
  • sudo: segítségével rendszergazdai jogokkal tudunk parancsot végrehajtani. Ez kéri a jelszót, és valamennyi ideig megjegyzi.
    • sudo ls /root: a /root könyvtárat listázza ki rendszergazdai jogokkal.
    • sudo su -: átlép rendszergazdai felhasználóra. Ezt követően minden ezzel hajtódik végre. A - azt jelenti, hogy a belépéskor szokásos scriptek (pl. .bashrc) is lefutnak, tehát pont azt a környezetet kapjuk, mint ha rendesen root felhazsnálóként léptünk volna be.
  • whoami: kiírja a bejelentkezett felhasználó nevét.
  • finger: adott felhasználóról jelenít meg adatokat, pl. hogy mikor lépett be utoljára.
    • finger csaba: a csaba felhasználó bejelentkezési és egyéb adatait jeleníti meg.
  • w: megjeleníti a pillanatnyilag bejelentkezett felhasználók listáját.

Szövegek kezelése

A szövegek kiírásával, átalakításával, szerkesztésével, keresésével igen sok alkalmazás foglalkozik. Talán túl sok is, ugyanis ningy egyetlen olyan program, amire azt mondanánk, hogy no ez a nagybetűs AZ, így viszont egész sokat kell megismerni.

  • clear: letörli a képernyőt
  • echo: kiírja azt, amit paraméterül kapott.
    • echo Hello!: kiírja, hogy Hello!. (Ennek akkor van értelme, ha pl. scriptben hajtjuk végre.)
    • echo $PATH: kiírja a PATH környezeti változó értékét.
  • cat: kiírja a konzolra a fájlt tartalmát. A neve az angol conCATenate (összefűtés) szóból származik, és amiatt lett ez, mert ha több fájt adunk meg paraméterül, akkor egymás után írja ki, mintegy összefűzi.
    • cat file.txt: kiírja a file.txt tartalmát.
  • more: a cat hátránya az, hogy akármilyen hosszú is a szöveg, azt egyből végiglistázza. Ez különösen nagy probléma volt azokban az időkben, amikor a terminálon nem lehetett visszagörgetni. A more parancs egyszerre annyit ír ki, amennyi ráfér egy oldalra, és nevét valószínűleg onnan kapta, hogy egy lap kilistázása után megkérdezi, hogy "more?", azaz kérünk-e többet. (More = több.)
    • more file.txt: kiírja a fájl tartalmát laponként.
    • cat file.txt | more: az előzővel nagyjából ekvivalens, mégis, szinte mindig ezt a formát használjuk.
  • less: a more továbbfejlesztése. (Ez egyébként egy szójáték: a less ugyanis kevesebbet jelent, míg a more többet.) Ebben előre-hátra tudunk lépkedni, tudunk benne keresni (a / jellel, pl. /alma) stb.
    • less file.txt: megjeleníti a file.txt tartalmát.
  • grep: mintaillesztés hajt végre a fájlon. Ez az egyik leggyakrabban használt parancs a Unix világában.
    • grep alma file.txt: kiírja azokat a sorokat, amelyekben előfordul az a string, hogy alma.
    • cat file.txt | grep alma: a fentivel lényegében ekvivalens, mégis, szinte kizárólag ez utóbbi szintaxis a használatos.
    • grep -v alma file.txt: kiírja azokat a sorokat, amelyekben nem fordul elő az alma string.
    • grep ^d.*d$ file.txt: bonyolult mintaillesztések is végrehajthatóak.
  • uniq: összevonja a közvetlenül egymás után ismétlődő sorokat.
    • uniq file.txt: kilistázza a file.txt fájl tartalmát a fenti módon.
    • cat file.txt | unique: a fentivel ekvivalens.
  • diff: összehasonlítja két szövegfájl tartalmát sorról sorra.
    • diff file1.txt file2.txt: összehasonlítja a file1.txt-t a file2.txt-vel.
  • wc: kiírja a sorok, a szavak és a bájtok számát.
    • wc file.txt: a file.txt fájlon elkészíti a fenti statisztikát.
    • cat file.txt | wc: az előzővel megegyezik.
  • sort: sorba rendez.
    • sort file.txt: lexikografikusan sorba rendezi a file.txt tartalmát sorok szerint.
    • cat file.txt | sort: az előzővel ekvivalens.
  • head: kiírja a fájl első sorait.
    • head file.txt: kiírja a file.txt első 10 sorát.
    • head -n 5 file.txt: kiírja a file.txt első 5 sorát.
  • tail: kiírja a fájl utolsó sorait.
    • tail file.txt: kiírja a file.txt utolsó 10 sorát.
    • tail -n 5 file.txt: kiírja a file.txt utolsó 5 sorát.
    • tail -f file.txt: kiírja a file.txt végét, majd ha megváltozott, akkor azt is. Pl. naplófájlt figyelésénél hasznos.
  • awk: szöveges mintaillesztésre használt programozási nyelv. Elnevezését a három alkotója keresztnevének kezdőbetűiből kapta. Az alábbi példák a https://www.geeksforgeeks.org/awk-command-unixlinux-examples/ oldal alapján készültek.
    • awk 'print' file.txt: kiírja a file.txt mindegyik sorát.
    • awk '/alma/ {print}' file.txt: kiírja a file.txt azon sorait, melyben előfordul az, hogy alma.
    • awk '{print $1,$4}' file.txt: kiírja a file.txt mindegyik sorának első és negyedik szavát.
    • awk -F , '{print $1,$4}' teszt.txt: kiírja a file.txt mindegyik sorának első és negyedik szavát úgy, hogy a szó szeparátor a vessző.
    • awk '{print NR,$0}' teszt.txt: kiírja a file.txt mindegyik sorát, és előtte a sor sorszámát.
    • awk 'NR==3, NR==6 {print NR,$0}' teszt.txt: az előzőhöz hasonló, de csak a harmadiktól a hatodik sorig írja ki.
  • sed: kezdetben volt az ed szerkesztő (mai szemmel nézve túl sokat nem tud: az a parancs hatására lehet sorokat hozzáfűzni, az egy szem . egy üres sorban jelzi a végét, w hatására pedig fájlba írni), ami ma már természetesen nincs használatban. A sed ennek a tovább gondolása, és a stream editor (magyarul kb. folyam szerkesztő) rövidítése. Ez mintegy folyamként, sorról sorra veszi a már létező fájlt, és azon hajt végre módosításokat. Ma leginkább a keresés és csere funkcióját szokás használni különböző scriptekben. A lenti példákan a szabak helyén tetszőleges reguláris kifejezések állhatnak.
    • sed 's/alma/barack/' file.txt: a file.txt-ben minden sorban az alma első előfordulását kicseréli erre: barack.
    • sed 's/alma/barack/3' file.txt: ugyanaz mint az előző, csak a harmadik előfordulást cseréli.
    • sed 's/alma/barack/g' file.txt: mindegyik előfordulást kicseréli.
    • sed 's/alma/barack/3g' file.txt: soron belül a harmadiktól az összeset cseréli.
    • sed '3 s/alma/barack/' file.txt: csak a harmadik sorban cseréli.
    • sed '3,6 s/alma/barack/' file.txt: a harmadiktól a hatodikig cseréli.
    • sed '3,$ s/alma/barack/' file.txt: a harmadiktól a fájl végéig cseréli.
    • sed '/alma/d' file.txt: kitörlni azokat a sorokat, amelyben előfordul az, hogy alma.
    • sed '3d' file.txt: kitörli a harmadik sort.
    • sed '3,6d' file.txt: kitörli a harmadiktól a hatodik sort.
    • sed 's/\([a-z]*\) \([a-z]*\)/\2 \1/' file.txt: ebben a példában mindegyik sor két csupa kisbetűs szót tartalmaz, és felcseréli a kettőt.
  • vi: a '70-es évek ikonikus szövegszerkesztője, ami még ma is él és virul. Azt szokták mondani, hogy a vi minden Unix rendszeren megtalálható, ami a tapasztalatom szerint nem igaz, mindenesetre elég gyakori ahhoz, hogy érdemes legyen vele megismerkedni. A mai felhasználó számára talán kissé szokatlan az alapfilozófiája. Két üzemmódja van: parancs és szerkesztő. A problémát leginkább az okozza, hogy (szerintem egy katasztrofálisan rossz döntés következtében) alapból parancs módba kerül, így indulás után az ember "meg van lőve". Ennél egy fokkal jobb a vim, ahol már egyből szerkesztő módba kerültünk, és valamelyest könnyebb is használni. (Bár szerintem a vim pont olyan, mint a Besenyő Pista bácsi kőolajfinomítója: lehet a kőolajat finomítani, de attól az még nagyon rossz ízű marad. Legyen akkor inkább krumpli: azt nem kell finomítani, elég csak megsütni, és máris finom lesz.) A szerkesztő mód egyértelmű, ott szokásos módon beírunk valamit, és azt látjuk, amit beírtunk. Szerkesztő módból parancs módba az Esc lenyomásával léphetünk. A parancs mód parancsai már sokkal izgalmasabbak, melyek közül a legfontosabbak az alábbiak:
    • i, a, I, A, o, O: belépés szerkesztő módba (insert ill. append) az adott pozíció előtt, az adott pozíció után, az adott sor előtt, az adott sor végén, új sor beszúrásával az adott sor felett ill. alatt.
    • x, X: a kurzor alatti ill. a tőle balra levő karakter törlése.
    • dw, dd: szó ill. sor törlése.
    • h, j, k, l: kurzor mozgatása balra, fel, le és fel. De láss csodát: újabban a nyilakkal is lehet mozgatni a kurzort.
    • w, b: előre ill. hátra ugrás egy szóval.
    • , $: sor elejére ill. végére ugrás.
    • /: adott szó keresése, pl. /barack. Ha ismét végrehajtjuk üresen, akkor a következő előfordulást keresi meg.
    • G: adott sorra ugrik, pl. a 3G a harmadik sorra.
    • :w, :q, :wq, :q!: a módosítások kiírása, kilépés, a módosítások kiírása és kilépés, kilépés a módosítások mentése nélkül.
    • Vágólap: öööö…, vi-ban ne akarjunk vágólapot használni.
    • Mivel az Esc-nek nincs hatása parancssori módban, emiatt az Esc : q ! Enter kombinációval bármilyen állapotból ki tudunk lépni.
  • nano: a pine levelező kliens szerkesztője volt a pico, melynek továbbfejlesztett változata a nano. Néhány lehetőség:
    • Ctrl + X: kilépés
    • Ctrl + O: mentés
    • Ctrl + W: keresés
    • Alt + A, majd nyilak, végül Alt + 6: másolás
    • Ctrl + U: beillesztés
  • mcedit: az mc önállóan is használható szerkesztője, amiről fent már volt szó.
  • emacs: az egy olyan szövegszerkesztő, ami életstílus is egyben. A felsorolásban benne marad, mert fontos, de az ismertetésétől eltekintek, mert momentán nincs felesleges két szabad hetem, hogy én magam is megismerjem.

Környezet

  • set: a héj (shell) beállításokat lehet vele megváltoztatni.
    • set: kiírja az összes környezeti változót.
    • set -x: az ezt követő parancsokat és argumentumait kiírja. Hibakereséshez használható. A kiírás kikapcsolása: set +x.
  • Beállítás: a környezeti változó neve (általában csupa nagybetűvel, aláhúzásokkal a szavak között), majd egyenlőségjel, és az érték, pl. ABC=123.
  • export: a környezeti változó értéke normál esetben csak az adott folyamat látja; ha újat indítunk, akkor az csak az exportáltakat. Exportálni az export paranccsal lehet.
    • export ABC: exportálja az ABC környezeti változót. Próbáljuk ki a következőt: echo 'echo $ABC' > script, majd chmod script és végül ./script. Majd exportáljuk a megadott paranccsal az ABC környezeti változót, és utána is futtassuk le a ./script parancsot.
    • export DEF=456: beállítja, majd azonnal exportálja a környezeti változót.
  • unset: törli a környezeti változót.
    • unset ABC: törli az ABC környezeti változót.
  • env és printenv: kiírja az exportált környezeti változókat.
  • alias: a parancsoknak tudunk ezzel egyéb elnevezést adni. Nagyon jól használható rövidítésre.
    • alias ll="ls -al": az ls -al parancsot tudjuk elérni ezután az ll paranccsal.
  • uname: információt ír ki a szerverről.
    • uname: kiírja a szerver nevét.
    • uname -a: további információt ír ki, pl. kernel verzió.
  • date: kiírja a dátumot. Ezzel be is lehet állítani, módosítani a formázást, más időzónát választani stb.
  • uptime: kiírja azt, hogy mióta fut folyamatosan a szerver.
  • shutdown: a számítógép leállítása.

Tömörítés

A Unix/Linux világ más irányból közelítette a tömörítést, mint amit Windows-on alapvetően ismerünk. A legfontosabb, tömörítéssel kapcsolatos parancsok az alábbiak:

  • tar: a fájlokból és könyvtárakból egyetlen fájlt készít. Alapból nem tömörít, de kapcsolóval megadható.
    • tar cvf mydir.tar mydir: a mydir könyvtár tartalmát rekurzívan becsomagolja a mydir.tar (nem tömörített fájlba.) A betűk jelentése: c: create (létrehoz), v: verbose (szószátyár), f: filename (a fájl neve).
    • tar xvf mydir.tar: kicsomagolja a mydir.tar fájlt. Az új betű jelentése: x: extract (kicsomagol).
    • tar czvf mydir.tar.gz mydir: a becsomagolás után tömörít is. A fájlnév konvenció .tar.gz vagy .tgz. Az új betű jelentése: z: zip.
    • tar xzvf mydir.tar.gz: kitömöríti és ki is csomagolja a fájlt.
  • gzip, gunzip: betömöríti a fájlt.
    • gzip mydir.tar: betömöríti a mydir.tar fájlt, lesz belőle mydir.tar.gz. A mydir.tar eltűnik.
    • gunzip mydir.tar.gz: kicsomagolja a mydir.tar.gz fájlt, lesz belőle mydir.tar. A mydir.tar.gz törlődik.
  • zip, unzip: a Windows-on is ismert, azzal kompatibilis zip tömörítő.
    • zip myfile.zip myfile.txt: a myfile.txt fájlt betömöríti a myfile.zip fájlba.
    • zip -r mydir.zip mydir: a mydir könyvtárat rekurzívan betömöríti a mydir.zip fájlba.
    • unzip mydir.zip: kitömöríti a {{mydir.zip fájlt. Az eredeti is megmarad.
    • unzip mydir.zip -x "mydir/myfile": a mydir.zip fájl kitömörítése úgy, hogy az eredményből kihagyja a mydir/myfile fájlt. (Itt joker karaktereket is megadhatunk, és hasznos lehet akkor, ha a tömörített fájl számunkra értéktelen sok kicsi fájlt tartalmaz.)
  • bzip2, bunzip2: ez egy más formátumú tömörítő.
    • bzip2 mydir.tar: betömöríti a mydir.tar fájlt, lesz belőle mydir.tar.bz2. A mydir.tar törlődik.
    • gunzip2 mydir.tar.gz: kicsomagolja a mydir.tar.bz2 fájlt, lesz belőle mydir.tar. A mydir.tar.bz2 törlődik.

Hálózat

Amikor annak idején ismerkedtünk a Linux-szal, valahogy megállapítást nyert az, miszerint a Linux egy hálózati operációs rendszer. Ennek a kifejezésnek persze sok értele nincs, de tény, hogy a hálózati jellegű parancsok korábban megjelentek itt, mint az akkori Windows-ban. Néhány fontosabb program:

  • ping: segítségével egy szerver elérhetőségét lehet lekérdezni. Paraméterként IP címet és nevet is átadhatunk; ez utóbbi esetben feloldja, és kiírja az IP címet.
    • ping faragocsaba.hu: a faragocsaba.hu elérhetőségét vizsgáljuk. Valamint megkapjuk a faragocsaba.hu IP címét is.
  • ifconfig: a DOS-os ipconfig Linuxos megfelelője; többek között kiírja az adott számítógép IP címeit.
    • ifconfig: általában paraméter nélkül hívjuk.
  • nslookup: kiírja az erőforrás IP címét.
    • nslookup faragocsaba.hu: kiírja a faragocsaba.hu oldal IP címét.
  • curl: általában úgy ejtjük, hogy "körl", de ha úgy ejtenénk, hogy "szí juerel", akkor az pontosan olyan lenne, mint a see URL, amit valójában csinál: egy URL tartalmát lehet megnézni vele. Felfoghatnánk akár egy nagyon kezdetlenes böngészőként is, de alapvetően nem ilyen célra használjuk, hanem kihasználjuk azt a tulajdonságát, hogy alacsony szinten tudjuk vezérelni a HTTP műveleteket. Parancssorból különösen nehézkes pl. POST parancsot kiadni, de a curl ezt is tudja.
    • curl faragocsaba.hu: letölti a faragocsaba.hu oldal tartalmát, gyakorlatilag kiírja a HTML forrást.
  • wget: segítségével oldalakat tudunk tükrözni.
  • lynx: karakteres böngésző.
  • pine: szöveges e-mail kliens.
  • nc: a netcat rövidítése. A hálózat programok tesztelését segíti elő; adatot lehet vele generálni, ill. fogadni.
    • nc -l 1234: figyeli (-l = listen, hallgat) az 1234 portot. Ha beírunk valamit, azt elküldi. Kipróbálhatjuk a curl localhost:1234 paranccsal együtt, vagy az alábbival.
    • nc 127.0.0.1 1234: üzenetet küld a lokális gépen az 1234 portra. Amit ezt követően beírunk, azt elküldi. A másik konzolon megjelenik a beírt szöveg. Ha ott írunk be valamit, akkor ezen jelenik meg.
  • telnet: elődleges felhasználása: távoli gépekre tudunk ennek segítségével bejelentkezni. Ez nem biztonságos csatornát használ, pl. a jelszó is titkosítatlanul megy keresztül a köztes szervereken is, így helyét átvette az ssh, viszont hasznos eszköz annak tesztelésére, hogy bizonyos webes szolgáltatást elérjük-e, pl. tűzfal mögül.
    • telnet localhost: a saját gépre jelentkezünk be. Ehhez kell, hogy legyen telnet szerver a gépünkön, pl. így: apt-get install xinetd telnetd. A státuszt így tudjuk lekérdezni: /etc/init.d/xinetd status. Ahhoz, hogy működjön, nálam újra kellett indítani először: /etc/init.d/xinetd restart. Célszerű az adduser paranccsal felhasználót létrehozni, és azzal próbálkozni bejelentkezni.
    • telnet faragocsaba.hu 80: a telnet alapból a 23-as portot használja, de más portokat is megadhatunk. Ebben a példában azt ellenőrizzük, hogy a faragocsaba.hu szerver 80-as portja elérhető-e, magyarán működik-e a http.
  • ssh: hasonló mint a telnet, de ez titkosított csatornán működik, így a köztes figyelő nem tudja a tartalmat visszafejteni.
  • ftp: fájlokat tudunk segítségével fel- ill. letölteni. Ez titkosítatlan csatornán történik.
  • sftp: hasonló az ftp-hez, de titkosított csatornán történik az adatforgalom.
  • exit: az adott munkamenetből ennek segítségével tudunk kilépni. Egyéb lehetőségek, ha ez nem működne: quit, logout.
  • traceroute: ezt írja ki, hogy milyen útvonalon ér el egy másik szervert.
    • traceroute faragocsaba.hu 80: a faragocsaba.hu oldal elérésnek köztes szervereit jeleníti meg.
  • netstat: kiírja, hogy melyik program mely portokat használja.

Programozás

  • gcc: C fordító.
  • g++: C++ fordító.
  • javac: Java fordító. Telepítése: apt-get install default-jdk.
  • java: Java futtató. Telepítése: apt-get install default-jre.
  • mysql: ez a MySQL adatbázis kliens programja. Gyakran előfordul, hogy valamit gyorsan meg kell nézni, és leginkább ez van kéznél.
    • mysql -h [server] -P [port] -u [username] -p[password] -D [database]: adott szerver (pl. localhost) adott portjára (tipikusan 3306) jelentkezik be adott felhasználónévvel és jelszóval. A -p és a jelszó között nincs szóköz. Ha nem adjuk meg a jelszót, akkor be kell gépelnünk belépéskor. Sikeres belépést követően kiadhatjuk a szokásos SQL parancsokat, pl. show tables;, select * from …; stb.
    • mysql -p: ez a minimum, amit meg kell adni; ez esetben a localhost szerverre csatlakozok a 3306-os porton, root azonosítóval, és kéri a jelszót. Majd a show databases; és use database …; parancsokkal lehet elkezdeni a munkát.

Grafikus programok

A grafikus felület neve a Linuxon X, ami a graphics → graphix szóból származik. Az első verziója az 1980'-as évek közepén jelent meg, majd elég gyorsan eljutott az X11 verzióhoz (1987), ami 2012 óta már semennyit sem változott.

Az X felületnek több változata létezik, amit munkaasztal környezetnek (desktop environment) nevezünk. Ezek közül néhány ismertebb:

  • KDE: ez valójában munkaasztal környezet és programok gyűjteménye együttvéve. Eredetileg a SUSE disztribúció grafikus felülete volt, ma az openSUSE és a Kubuntu felülete.
  • GNOME: ez a legelterjedtebb munkaasztal környezet, és olyan disztribúciók használják, mint pl. a Debian, az Ubuntu vagy a Fedora.
  • LXDE: itt cél volt az, hogy "pehelysúlyú" (lightweight) legyen. Alacsony erőforrás igénye, gyorsasága és energiatakarékossága révén a hitelkártya méretű számítógépek (pl. Orange PI PC) operációs rendszerének gyakori grafikus felülete.

Néhány grafikus program Linuxon:

  • xterm: ez a konzol grafikus felületen.
  • xeyes: két szemet jelenít meg, ami a kurzorra néz. Igazából semmi haszna nincs, arra viszont jó, hogy ellenőrizzük, működik-e a grafikus felület.
  • xclock: analóg órát jelenít meg.
  • xcalc: számológép.
  • xedit: kb. Notepad tudású szövegszerkesztő.
  • gedit: a GNOME környezet Notepad tudású szövegszerkesztője.
  • xchm: Windows súgó fájlok olvasása.
  • xboard: sakkprogram.
  • xmahjongg: Mahjongg játék.
  • xgalaga: űrhajós lövöldözős játék.
  • micropolis: a Sim City Linux klónja.
  • sunclock: térképesen megmutatja, hogy épp hol van világos.
  • xearth, ill. Ubuntun xplanet: megmutatja, hogy a földgömbön hol van nappal. (Nálam nem működött, de emlékszem, hogy korábban igen.)
  • wine: Windows emulátor; segítségével Windows-os programokat tudunk Linux környezetben futtatni.
  • firefox: a népszerű böngésző Linuxos változata.
  • gimp: képfeldolgozó program; olyan ingyenes Photoshop Linuxon.
  • inkscape: vektorgrafikus ábrákat rajzoló program.
  • vlc: média lejátszó program.
  • thunderbird: e-mail kliens.
  • libreoffice: irodai programok: szövegszerkesztő, táblázatkezelő, prezentáló program stb. (Azért ne várjunk tőle annyit, mint egy MS Office-tól.)
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License