Unix-Linux alapok II. gyakorlatvezető: Lutár Patrícia

Hasonló dokumentumok
BASH SCRIPT SHELL JEGYZETEK

Operációs rendszerek 1.

Linux alapok. Parancsok általános alakja parancs kapcsolók paraméterek

Számítógép Architektúrák. 4. Gyakorlat

Unix-Linux alapok I. gyakorlatvezető: Lutár Patrícia

AWK programozás, minták, vezérlési szerkezetek

AWK programozás Bevezetés

II. Mérés SZÉCHENYI ISTVÁN EGYETEM GYŐR TÁVKÖZLÉSI TANSZÉK

Példa: Aktuális könyvtár tartalmának fájlba mentése, melynek neve az aktuális dátum és idő: ls l > `date+%f_%h-%m`.txt

Operációs rendszerek. 10. gyakorlat. AWK - bevezetés UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Operációs Rendszerek II. labor. 2. alkalom

S z á m í t ó g é p e s a l a p i s m e r e t e k

BEKÉRT ADAT KÉPERNYŐRE ÍRÁSA KÖRNYEZETI VÁLTOZÓK FÁJL REDEZETT KIÍRÁSA KÖNYVTÁRBAN BEJEGYZÉSEK SZÁMA FÁJLBAN SZÁM NÖVELÉSE. #!

Operációs rendszerek. 2. gyakorlat. Munka állományokkal UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

8. Laboratóriumi gyakorlat: Bevezetés a reguláris kifejezések használatába

Szkriptnyelvek. 1. UNIX shell

8. Laboratóriumi gyakorlat: Bevezetés a reguláris kifejezések használatába

Linux parancsok összefoglaló.

chmod umask chown, chgrp

Operációs rendszerek. 11. gyakorlat. AWK - szintaxis, vezérlési szerkezetek UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Programozás alapjai óra. Morvai Flórián, 2010 Dr. Dévényi Károly előadásvázlata alapján

AWK programozás, minták, vezérlési szerkezetek

LINUX PMB LINUXOS PARANCSOK ÉS HASZNÁLATUK - GRUB

7. Laboratóriumi gyakorlat, 1. rész : Vezérlési szerkezetek II.

Operációs rendszerek. 4. gyakorlat. BASH bevezetés, script írása, futtatása UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Munka állományokkal. mv: áthelyezés (átnevezés) rm: törlés. rmdir: üres könyvtár törlése. -r, -R: rekurzív (könyvtár) -r, -R: rekurzív (könyvtár)

A legfontosabb DOS parancsok

OPERÁCIÓS RENDSZEREK II GYAKORLAT

2. Készítsen awk szkriptet, amely kiírja az aktuális könyvtár összes alkönyvtárának nevét, amely februári keltezésű (bármely év).

Operációs rendszerek I. IIII. gyakorlat

Operációs rendszerek 2 1. óra: Linux alapok Ismétlés. Windisch Gergely félév

Bevezetés az informatikába, második gyakorlat. Bevezetés Környezetváltozók és néhány egyszerű utasítás Jogosultságok Fájlkezelés

Operációs rendszerek gyak.

Operációs rendszerek 2 3. alkalom - Reguláris kifejezések, grep, sed. Windisch Gergely windisch.gergely@nik.uni-obuda.hu

1. Alapok. #!/bin/bash

file./script.sh > Bourne-Again shell script text executable << tartalmat néz >>

Operációs Rendszerek példatár. Utolsó frissítés: február 10.

7. Laboratóriumi gyakorlat: Vezérlési szerkezetek II.

8. Laboratóriumi gyakorlat: Bevezetés a reguláris kifejezések használatába

Reguláris vagy szabályos kifejezések

Linux kezelés alapjai

Programozás alapjai gyakorlat

Operációs rendszerek 1.

4. Laborgyakorlat. A fájlokról ezeket az adatokat, a fájlrendszer tárolja. Számunkra az 1, 3, 4. oszlopok lesznek az érdekesek.

Operációs Rendszerek II. labor alkalom

Munka állományokkal. mv: áthelyezés (átnevezés) rmdir: üres könyvtár törlése rm: törlés. -r, -R: rekurzív (könyvtár) -r, -R: rekurzív (könyvtár)

OPERÁCIÓS RENDSZEREK 1. PROCESSZKEZELÉS

Operációs rendszerek. 9. gyakorlat. Reguláris kifejezések - alapok, BASH UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

I. Felzárkoztató Mérés SZÉCHENYI ISTVÁN EGYETEM GYŐR TÁVKÖZLÉSI TANSZÉK

Parancsok. 1. fejezet Könyvtár- és fájlkezelés

Operációs rendszerek. 9. gyakorlat. BASH recap, reguláris kifejezések UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Rendszerprogramozás Linux környezetben

Reguláris vagy szabályos kifejezések

Operációs rendszerek. 3. gyakorlat. Jogosultságkezelés, linkelés, csővezeték UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Reguláris kifejezések 1.

Első belépés az Office 365 rendszerbe

length (s): Az s karaklerlánc hossza, substr(s,m,n): Az s mezőben levő karakterláncnak az m-edik karakterétől kezdődő, n darab karaktert vágja ki.

Java-s Nyomtatványkitöltő Program Súgó

A C programozási nyelv I. Bevezetés

Szűrők Reguláris kifejezések, AWK

Operációs rendszerek gyak.

Az állományok kezelésére használt fontosabb parancsok

S z á m í t ó g é p e s a l a p i s m e r e t e k

Szűrők, reguláris kifejezések AWK programozás: minták, vezérlési szerkezetek, tömbök, beépített függvények, reguláris kifejezések

Access alapok. Megnevezés Művelet Minta. Új adatbázis létrehozása. Új / Üres adatbázis.. Tábla létrehozása tervező nézetben.

A függvény kód szekvenciáját kapcsos zárójelek közt definiáljuk, a { } -ek közti részt a Bash héj kód blokknak (code block) nevezi.

Tájékoztató. Használható segédeszköz: -

A C programozási nyelv I. Bevezetés

UNIX folyamatok kommunikációja

Operációs Rendszerek. Windows Parancssor

Occam 1. Készítette: Szabó Éva

HORVÁTH ZSÓFIA 1. Beadandó feladat (HOZSAAI.ELTE) ápr 7. 8-as csoport

További vezérlő valamint számításokat megkönnyítő szerkezetek

Regionális forduló november 19.

LEI kód igénylési folyamat leírása

Flex tutorial. Dévai Gergely

SQL*Plus. Felhasználók: SYS: rendszergazda SCOTT: demonstrációs adatbázis, táblái: EMP (dolgozó), DEPT (osztály) "közönséges" felhasználók

Bevezetés a UNIX rendszerekbe

Operációs rendszerek. 4. gyakorlat: Szignálok küldése, kezelése

Programozási alapismeretek beadandó feladat: ProgAlap beadandó feladatok téma 99. feladat 1

Számítógépes alapismeretek

Operációs Rendszerek Gyakorlat

8. Mezőutasítások. Schulcz Róbert 8. Mezőutasítások. v

Saját Subversion tároló üzemeltetése i. Saját Subversion tároló üzemeltetése

A számok kiíratásának formátuma

Bevezetés a programozásba I.

A sed folyamszerkesztő

3. modul - Szövegszerkesztés

Algoritmizálás és adatmodellezés tanítása beadandó feladat: Algtan1 tanári beadandó /99 1

A sed folyamszerkesztő

ELSŐ LÉPÉSEK A SZÁMÍTÓGÉPEK RODALMÁBA AMIT A SZÁMÍTÓGÉPEKRŐL TUDNI ÉRDEMES

Operációs rendszerek 1.

Felhasználói leírás a DimNAV Server segédprogramhoz ( )

Hálózatok építése és üzemeltetése

Regionális forduló november 19.

BASH script programozás II. Vezérlési szerkezetek

PCLinuxOS Magazine május

Mesh generálás. IványiPéter

Folyamatok követése. Tartalom. 1. Folyamatok

Az alábbiakban néhány Linux parancsra látunk példákat, feladatokat.

Átírás:

Unix-Linux alapok II. gyakorlatvezető: Lutár Patrícia Ez a dokumentum az órán bemutatott alapparancsoknak egy vázlatos áttekintése. A parancsokhoz tartozó kapcsolók/opciók (flagek) felsorolása nem teljes. Az elérhető összes információ a manuálban található, amiben egy adott parancsnévhez tartozó ismertetőt a man *paracsnév+ paranccsal lehet lekérdezni. 1. GREP parancs Karaktersor (szó vagy minta) keresése egy fájlban A grep a paraméterként megadott fájlokra vagy a standard input-ra illeszt szabályos kifejezéseket. grep mit filenév (ha a mit szóközt tartz akkor ' vagy közé) Példa1: Keresd meg a /etc/motd.karacsony fileban a Karacsony karaktersort tartzó sorokat! (grep Karacsony /etc/motd.karacsony) A grep alapértelmezésben érzékeny a kis- és a nagybetűk közötti különbségre, idegen szóval case-sensitive. Ezt az alapértelmezett működést azonban felül lehet bírálni a -i kapcsolóval: grep -i karacsony /etc/motd.karacsony Példa2: grep -r feladatsor ~/infokez2/ (rekurzívan adott mappán belül a fileokban keres) grep -lr feladatsor ~/infokez2/ (ugyanaz mint az előző, ám csak kilistázza a fileneveket) Példa3: -v kapcsoló : Mintára nem illeszkedő sorok listázása -w kapcsoló: Teljes szavas illeszkedés -n kapcsoló: A file-on belüli sor száma, amire az illeszkedés jó volt. Reguláris kifejezések használata a GREP-ben: Az elemi építőkövek olyan szabályos kifejezések, melyek egyetlen karakterhez illeszkednek. A legtöbb karakter (pl. a betűk és a számok) szabályos kifejezések, melyek önmagukhoz illeszkednek. A speciális jelentéssel rendelkező metakarakterek (pl. a., *, [ karakterek) elé backslash-t kell írni, hogy speciális jelentésük helyett a karakterhez való illeszkedést vizsgálhassuk. (Pl. a mintában levő \[ fog illeszkedik a szövegbeli nyitó szögletes zárójellel.) A [ és ] jelek közé írt karakterlista illeszkedik a listában szereplő bármely karakterhez. Amennyiben a lista a ^ jellel kezdődik, az illeszkedés a listában nem szereplő karakterekkel áll fenn. Például a [0123456789] szabályos kifejezés bármely számjegyhez illeszkedik.

ASCII karakterek tartománya az első és utolsó karakterek megadásával adható meg, ha ezeket `-' jel választja el. (Pl. [a-f] ugyanaz, mint[abcdef].) Végül a karakterek néhány speciális osztálya előre definiált névvel rendelkezik. (Ezen nevek jelentése angolul magától értetődő, itt kifejtjük őket.) [:alnum:] betű vagy szám [:alpha:] betű [:cntrl:] vezérlőkarakter [:digit:] számjegy [:graph:] grafikus karakter [:lower:] kisbetű [:print:] nyomtatható karakter [:punct:] elválasztó, központozó jel (.,;?!) [:space:] szóköz [:upper:] nagybetű [:xdigit:] hexadecimális szám Például [[:alnum:]] jelentése: [0-9A-Za-z], azzal a kitétellel, hogy az utóbbi forma az ASCII kódolástól függ, míg az előbbi nem, így átvihető. A legtöbb metakarakter elveszti speciális jelentését egy listán belül. Egy ] jelet a minta első elemeként szerepeltetve csatolhatunk a listához. Hasonlóan a ^ jel az első kivételével bármely helyre kerülve a `^' jelet fogja jelenteni. Végül a `-' jelet a lista utolsó elemeként kell írni, ha nem metakarakterként akarjuk értelmezni. A pont (. ) minden karakterhez illeszkedik. A \w szimbólum az [[:alnum:]] szinonímája, míg \W ugyanaz, mint [^[:alnum:]]. A ^ és a $ jelek metakarakterek, melyek rendre a sorkezdő és sorzáró üres stringekhez (karaktersorozatokhoz) illeszkednek. Hasonlóan a \< és \> szimbólumok a szavak elejénél illetve végénél található üres stringhez illeszkednek. A \b a szóhatáron levő üres stringhez illeszkedik, míg \B a nem szóhatáron levő üres stringhez illeszkedik.

Az egy karakterhez illeszkedő szabályos kifejezéseket a következő ismétlési operátorok egyike követheti:? Az előző tag opcionális, és legfeljebb egyszer illeszkedik. * Az előző tag nulla vagy több alkalommal illeszkedik. + Az előző tag egy vagy több alkalommal illeszkedik. {n} Az előző tag pontosan n alkalommal illeszkedik. {n,} Az előző tag n vagy több alkalommal illeszkedik. {,m} Az előző tag legfeljebb m alkalommal illeszkedik. {n,m} Az előző tag legalább n de legfeljebb m alkalommal illeszkedik. Két szabályos kifejezés összefűzhető; a kapott szabályos kifejezés minden olyan stringhez illeszkedik, amely a két szabályos kifejezéshez illeszkedő két részstringből állítható össze a sorrend megtartása mellett. 2. PS parancs A legtöbb Unix-támogató operációs rendszerben a ps program kilistázza az aktuálisan futó folyamatokat. Egy másik Unix parancs a top, amely valós időben írja ki a futó folyamatokat. Példa4: ps -aux (minden futó processz/folyamat információjának kiírása BSD szintaxis szerint) Példa5: ps -ef (minden futó processz/folyamat információjának kiírása a standard szintaxis szerint. Használjátok ezt, mert azt is kiírja, hogy melyik ProcessID-jú (PID) folyamatnak, mely az úgynevezett szülő folyamata (Parent ProcessID PPID), amiből meghívtad azt a processzt.) Ha csak annyit futtatsz, hogy ps, akkor az aktuális shell-ed futó processzeit mutatja, de a fentiekkel az összes shell-ed processzeit látod. Mi is az a ProcessID (PID)? Minden folyamatnak van egy egyedi azonosítója, ami addig él, amíg az a folyamat nem terminál (azaz szabályosan be nem fejezi a működését), vagy amíg nem kap egy olyan utasítást, hogy fejezze be a működését ott, ahol van (azaz ne szabályosan álljon meg, hanem megszakítással). Ez az azonosítószám teljesen egyedi, más processz nem kaphatja meg addig, amíg egy processznek ki van osztva. 3. Programok indítása előtérben: <parancsnév+paraméterek> Ez a szokásos, ahogyan egy parancsot meghívsz/elindítasz/futtatsz. Pl. man ps, ami a ps parancsról szóló leírást tartzza, és mutatja meg nekünk. De nem csak így lehet parancsot/scriptet futtatni. Lásd következő pont. --> háttérben: <parancsnév+paraméterek> & Ennek az a lényege, hogy a parancsod végére odaraksz egy & (alt gr + c) jelet. Ez azt csinálja, hogy a meghívott parancsod nem veszi el a prompt-odat, hanem ehelyett a háttérben kezd el futni.

Példa6: goth@pandora:~$ man ps & [1] 28261 goth@pandora:~$ Tehát a man ps -t háttérben futtatom, majd visszakapom a promptomat. Az első [] között levő szám az úgynevezett JobID. Ez is egy azonosítója a processzemnek, ám ez csak az adott shellemen belül egyedi, nem rendszerszinten. A második szám pedig a fentebb említett PID, ami már rendszerszinten egyedi. Tehát ha ezután egy másik shell-en keresztül bejelentkezek, akkor a PID-del tudok rá hivatkozni, noha nem abból a shell-ből indítottam el a parancsot! 4. Processzek kezelése, szignálok jobs: belső feladatazonosítók, állapotok lekérése jobs -l : a folyamatok azonosítóját is kiírja kill: folyamatok leállítása SIGTERM szignál küldése egy processznek háromféle módon: Ezzel kényszerítem a processzemet szabályos leállásra, azaz termináljon. (A példában a processzem PID-je 1234, JobID-ja meg 3.) kill 1234 kill -TERM 1234 kill -15 1234 kill -TERM %3 kill -15 %3 kill %3 (Ezek a parancsok felül mind ugyanazt csinálják.) SIGKILL szignál küldése egy processznek kétféle módon: Ezzel kényszerítem a processzemet megszakításra. kill -KILL 1234 kill -9 1234 kill -KILL %3 kill -9 %3 (Ezek a parancsok felül mind ugyanazt csinálják.) Azt, hogy egy processz az előtérben vagy a háttérben fusson, nem csak az indításnál tudom megtenni, hanem a futás közben is tudom ezt módosítani, ha lehetőségem van rá. Ha visszakapom a promptomat futás közben, akkor a következő két parancsot tudom használni bg [JobID] háttérbe küldés fg [JobID] előtérbe hozás Feladat: Lépjünk be két terminál kapcsolattal, egyik ablakban indítsunk el egy szövegszerkesztőt, majd ezt lőjjük ki a másik ablakból! (Csak nehogy a saját shell-ünket :-))

5. Processzek befagyasztása, folytatása ^c (CTRL+C): véglegesen leállítja az aktuális programot (INT(2) szignál) Futó folyamat befagyasztása: CTRL + Z Példa7: sleep 100 CTRL + Z ps -af 6. PIPE-olás/Szűrés (pipe = csővezeték) A (alt gr + w) a pipe-olás karaktere, az elõtte lévő parancs standard kimenetét átirányítja a következő parancs standard bemenetére. Erről már volt szó a Windows-os Command Prompt esetében is. :-) Feladat1: Megoldás: Adjuk meg azokat a fileokat a home-unkban, amire van futtatási jogosultságunk! ls -l ~ grep '^-..x' Megoldáshoz vezető út: Jogosultságok? Az ls parancs megfelelő kapcsolójával... A Home-om, micsoda? ~ -ként tudsz rá hivatkozni, ha nem éppen a home-od az aktuális munkakönyvtárad... (ls -l ~) Oké, és most hogyan szűrjem ki azokat a file-okat, amikre van futtatási jogom? Mivel tanultad, hogy a jogosultságoknál a - jelöli azt, hogy egy file-ról van szó, első sorban erre kell szűrnöd, mert a mappák és a linkek nem érdekelnek... Azután pedig az első rwx csoport kell neked, mert a Te jogaidról van szó, és ebből is az x jogot kell vizsgálni (execute, futtatás). Mit kell csinálnom, hogyan szűrjem ezeket ki? grep paranccsal, és egy jó kis reguláris kifejezést adj neki mintaként. Mi legyen a mintám? a sor elejére illeszkedjen (^) az, hogy file legyen (-) majd két bármilyen karakter legyen, amit úgy tudsz megadni, hogy a reguláris kifejezéseknél a. helyettesít egy tetszőleges karaktert, tehát két pontot írsz (..), ami két teszőleges karaktert helyettesít, és kell ezután az, hogy futtatási jog legyen (x). Tehát a mintád: '^-..x' 7. TEE parancs A tee parancs a standard bemenetén kapott adatokat a standard kimenentre és valamennyi argumentumként kapott fájlba másolja. Ez akkor hasznos, ha az adatokat nemcsak a csővezetéken szeretnénk továbbítani, hanem szükségünk van egy másolatra is. Opciók -a, --append (A standard bemenet tartalmát a célfájlok végéhez fûzi, és nem írja felül azokat.) -i, --ignore-interrupts (Figyelmen kívül hagyja a megszakításra vonatkozó jelzéseket.)

Példa8: ls -l tee file.txt less Ez azt csinálja, hogy annak a munkakönyvtárnak a tartalmát, amiben vagyunk kilistázza úgy, hogy a file.txt -be belemásolja azt, amit eredményez az ls -l utasítás, de a less parancsnak továbbítja még ezt az eredményt. A szemléltető ábra a Wikipédiáról van. 8. WC parancs Ez a parancs vagy a standard input-ról vagy a megadott bemeneti fájlokból olvas, és különböző statisztikai információkat ír a kimenetre. Több bemeneti fájl esetén összesített és fájlonkénti statisztikát is kapsz a standard output-on. Opciók -l csak a sorok száma: wc -l <filename> -c csak a byte-ok száma: wc -c <filename> -m csak a karakterek száma: wc -m <filename> -L a leghosszabb sor hossza: wc -L <filename> -w csak a szavak száma: wc -w <filename> 9. UNIQ parancs Használat: uniq <fájlnév> Összevonja az egymást követő azonos sorokat. Opciók -c : minden sor elé kiírja, hogy valójában ott hány sor állt a bemenetben Példa9: goth@pandora:~/peldak$ cat peldatext.txt goth@pandora:~/peldak$ uniq peldatext.txt

goth@pandora:~/peldak$ uniq -c peldatext.txt 3 2 1 goth@pandora:~/peldak$ cat peldatext.txt uniq -c 3 2 1 10. SORT parancs Használat: sort <fájlnév> Rendezi a megadott file sorait, alapértelmezésben ABC szerinti növekvő sorrendben. Opciók -r : csökkenő sorrend -n : a sorok elején található számok alapján Példa10: goth@pandora:~/peldak$ sort -r peldatext.txt goth@pandora:~/peldak$ cat peldatext.txt uniq -c sort -nr 3 2 1 11. CUT parancs A cut egy Unix parancs, melyet arra használunk, hogy egy megadott állományból kiszedjünk bizonyos részeket, pl. bizonyos számú karaktereket, szavakat. Ha azt szeretnénk, hogy mindegyik sorából kiírasuk a 4-től 10-ig levő karaktereit használjuk a következő utasítást: cut -c 4-10 file Ha az 5. szótól kezdődően akarjuk kiíratni minden sor tartalmát, felhasználva azt, hogy a szóelválasztó karakter a ":", akkor a következő kell használjuk: cut -d : -f 5- file

Példa11: (Az előzők bemutatása) goth@pandora:~/peldak$ cat cut_pelda.txt foo:bar:baz:qux:quux one:two:three:four:five:six:seven alpha:beta:gamma:delta:epsilon:zeta:eta:teta:iota:kappa:lambda:mu goth@pandora:~/peldak$ cut -c 4-10 cut_pelda.txt :bar:ba :two:th ha:beta goth@pandora:~/peldak$ cut -d : -f 5- cut_pelda.txt quux five:six:seven epsilon:zeta:eta:teta:iota:kappa:lambda:mu Feladat2: Kilistázni, ki hányszor lépett be a pandora szerverre? Megoldás: who cut -f1 -d " " sort uniq -c Megoldáshoz vezető út: Kik vannak bejelentkezve? who... Nekem csak a felhasználónevek kellenek! Vágjuk ki az első oszlopot... Hogyan vágjam ki? cut paranccsal, ahol az elválasztó karakter a szóköz (látod, a who eredményében), és ebből az első oszlop kell, azaz minden sorra az első mező, ahol a mezől elválasztása a szóközzel történik! goth@pandora:~/peldak$ who cut -d " " -f 1 goth marian wow kunmarto nlcs holes_a goth nlcs sp1r1t Hogyan számolom ebből össze, hogy ki hányszor? A uniq-nak van megfelelő kapcsolója, és az egymás alatt levő azonos sorokat tudja összegezni.. Ez így nem jó, mert a goth és a nlcs felhasználók így többször benne lesznek, és nem összegzi be a uniq... Először rendezd be őket egy sort-tal, úgy már működik!

goth@pandora:~/peldak$ who cut -d " " -f 1 sort goth goth holes_a kunmarto marian nlcs nlcs sp1r1t wow goth@pandora:~/peldak$ who cut -d " " -f 1 sort uniq -c 2 goth 1 holes_a 1 kunmarto 1 marian 2 nlcs 1 sp1r1t 1 wow Működik :-)