Csatlakozás a pandora.inf.elte.hu-re Linux alapparancsok



Hasonló dokumentumok
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. #!

BASH SCRIPT SHELL JEGYZETEK

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

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

1. Alapok. #!/bin/bash

Szkriptnyelvek. 1. UNIX shell

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

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

chmod umask chown, chgrp

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

Linux parancsok összefoglaló.

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

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

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

Operációs rendszerek 1.

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

A héj vezérlő szerkezetei I.

Operációs rendszerek I. IIII. gyakorlat

Operációs rendszerek gyak.

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

LINUX PMB LINUXOS PARANCSOK ÉS HASZNÁLATUK - GRUB

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

Gyors tippek linuxra

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)

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

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

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

Számítógépes alapismeretek

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.

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

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

Operációs Rendszerek II. labor alkalom

OPERÁCIÓS RENDSZEREK II GYAKORLAT

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

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

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

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

Programozás alapjai gyakorlat

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

Rendszerprogramozás Linux környezetben

O er e á r ci c ós ó s R en e d n sz s er e e r k e I. G akorlá l s

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

Linux kezelés alapjai

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)

Munka állományokkal, könyvtárakkal I.

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

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

A legfontosabb DOS parancsok

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

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. 10. gyakorlat. AWK - bevezetés UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

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

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

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

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

Operációs Rendszerek. Windows Parancssor

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

Operációs rendszerek MINB240/PMTRTNB230H

Linux alapok gyakorlat

Operációs rendszerek 1.

AWK programozás Bevezetés

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

Bevezetés jogosultságkezelés, csővezeték, átirányítások. BASH script programozás

Webprogramozás szakkör

Hálózati adminisztráció Linux (Ubuntu 8.04) 7. gyakorlat

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

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.

Programozás I. gyakorlat

Java gyakorlat feladatai e s megolda sai ( )

A shell vezérlő szerkezetei I.

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

6. BASH programozás I.

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

A perzisztens adatkezelő rendszer tesztelése és demonstrálása a GRID környezetben

Unix/Linux alapok 2. Operációs rendszerek I. készítette: Kozlovszky Miklós, Bringye Zsolt Póserné Oláh Valéria, Windisch Gergely

Operációs Rendszerek Gyakorlat Triviális segédfeladatok június PERL Tömbök és hashek Feladat: május 26-i beugró

PHP. Telepítése: Indítás/újraindítás/leállítás: Beállítások: A PHP nyelv

Powershell 1. gyakorlat

Konzolalkalmazások gyors tesztelése

Youtube videó letöltés és konvertálás Linuxon

PYTHON. Avagy hosszú az út a BioPythonig

Programozás alapjai gyakorlat. 4. gyakorlat Konstansok, tömbök, stringek

Page 2. File vizsgálatok (test argumentumai) Logikai értelmű vizsgálatok. Feltételes végrehajtás. test argumentumainak logikai kombinációja

Az Intel gyorsindító készlete a Linux*-hoz v1.2 Gyorstájékoztató. Megrendelési szám: C

A sed folyamszerkesztő

Bevezetés jogosultságkezelés, csővezeték, átirányítások. BASH script programozás

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

Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai):


1_Linux_bevezeto_bash

OPERÁCIÓS RENDSZEREK 1. ÁTIRÁNYÍTÁSOK, SZŰRŐK

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

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

Bash Shell Programozás. 1. oldal

Unix/Linux alapok. Operációs rendszerek I. készítette: Bringye Zsolt, Kozlovszky Miklós, Póserné Oláh Valéria, Windisch Gergely

Bevezetés a programozásba I.

Lekérdezések az SQL SELECT utasítással

Átírás:

Csatlakozás a panra.inf.elte.hu-re Linux alapparancsok man: man ls #ls parancs manuál, help clear: clear #a karakteres képernyő törlése ls: ls #könyvtár tartalom listázása ls l #könyvtár tartalom listázása tulajnságaival ls a #könyvtár tartalom listázása a rejtett fájlokkal együtt ls al #könyvtártartalom listázása a rejtett fájlokkal együtt részletes tulajnságokkal pwd: pwd #aktuális könyvtár cd: cd public #belépés a public könyvtárba cd #kilépés a root könyvtárba cd public/elso #belépés a public Elso nevű almappájába cd../ #visszalépés egy szintet cd../masodik #visszalépés egy szintet és onnan a Masodik mappába lépés mkdir: mkdir Teszt #Teszt nevű könyvtár létrehozása mkdir v Keksz #Keksz nevű könyvtár létrehozása visszajelzéssel rmdir: rmdir Keksz #Keksz nevű könyvtár törlése rmdir v Teszt #Teszt nevű könyvtár törlése visszajelzéssel rmdir --ignore-fail-on-non-empty v Teszt #Teszt nevű könyvtár törlése visszajelzéssel, akkor is törli, ha van benne valami echo: echo Eltések vagyunk mi, fasza gyerekek! #képernyőre (std output) írás cp: cp teszt.txt../keksz #átmásolja a teszt.txt nevű fájlt a Teszt mappából (benne vagyok) a Keksz mappába cp../keksz/teszt.txt ujneven.txt #átmásolja a teszt.txt nevű fájlt Kekszből Tesztbe új néven cp v ujneven.txt../ #átmásolja az ujneven.txt nevű fájlt Tesztből Masodikba visszajelzéssel rm: rm teszt.txt #törlöm a teszt.txt fájlt a Teszt mappából rm v../keks z/teszt.txt #törlöm a teszt.txt fájlt a Keksz mappából visszajelzéssel

mv: mv ujneven.txt Keksz #áthelyezem az ujneven.txt fájlt a Masodik mappából Keksz mappába mv v Keksz/ujneven.txt. #áthelyezem az ujneven.txt fájlt a Kekszből a Masodikba visszajelzéssel ln: ln s v../ujneven.txt #parancsikon féle (soft link) létrehozása a Masodik mappa ujneven.txt fájljához passwd: passwd #INF jelszó mósítás uname: uname #a szerver operációs rendszer lekérdezése uname a #a szerverről minden információ whoami: whoami #kiírja hogy ki vagyok who: who #kiírja hogy kik vannak belépve who a #kiír egyéb információkat is who d #kiírja az x idővallumon belüli meghalt kapcsolatokat who H #kiírja az aktív kapcsolatokat who u #kiírja a belépett felhasználókat date: date #a szerver dátum idejének kiírása date +%Y-%m-%d_%H:%M:%S #a dátum kiírása megatt formában cat: cat >teszt.txt #ha nincs teszt.txt akkor létrehozom, különben felülírom Első #beleírok pár sort Második Harmadik Ctrl + D #kilépek a sorok írásából cat teszt.txt #kiírom a teszt.txt tartalmát cat >> teszt.txt #hozzáfűzök a teszt.txt-hez, ha nincs ilyen néven akkor létrehozza Négy Ötödik sor Hatodik sor, ez az utolsó Ctrl + D #kilépek a hozzáfűzésből head: head n 3 teszt.txt #kiírja a teszt.txt szövegfájl első 3 sorát head c 30 teszt.txt #kiírja a teszt.txt első 30 byte-át tail: tail n 4 teszt.txt #kiírja a teszt.txt utolsó 4 sorát tail c 20 teszt.txt #kiírja a teszt.txt utolsó 20 byte-át more: more teszt.txt #kiírja a fájl tartalmát, soronként lehet lefele lépkedni, felfele nem léphetek q #kiléphetek menetközben q-val, vagy akár végiglépkedhetek ENTER-rel less: less teszt.txt #kiírja a fájl tartalmát, soronként fel-le lehet lépkedni q #kilépni csak q-val tuk tar: tar cvf proba.tar *.txt #létrehozok egy tar fájlt, amibe csak a.txt fájlokat rakom bele a mappából tar cvf ujproba.tar teszt.txt #létrehozok egy tar fájlt, amibe csak a teszt.txt fájlt rakom bele a mappából tar xvf ujproba.tar * #kicsomagolom az ujproba.tar fájlt zip: zip proba.zip *.txt #proba.zip-be tömörítem a.txt fájlokat unzip: unzip proba.zip teszt.txt #teszt.txt fájl kicsomagolása a proba.zip fájlból gzip: gzip v teszt.txt #teszt.txt fájl becsomagolása gunzip: gunzip v teszt.txt.gz #teszt.txt fájlt kicsomagolása

diff: diff teszt.txt masik.txt find: find size 1k find size -10k find perm 644 find name *.txt find name *.txt size 1k perm 644 grep: grep odik teszt.txt grep sor teszt.txt masik.txt grep r dik./teszt grep r l sor * chmod: #összehasonlítja a két fájlt, hol különbözik egymástól #1 kilobyte-nál nagyobb fájlok keresése #10 kilobyte-nál kisebb fájlok keresése #644-es hozzáférési jogú fájlok keresése #.txt fájlok keresése az att mappában, az att szinten #az előző lgok együtt #fájlban keres olyan szavakat, amiben szerepel az odik #egyszerre több fájlban is kereshetek, most a sor szót keresem #a Teszt könyvtárban a dik-es sorokat keresi (fájlokban) #az összes állományban keresi a sor szót, eredménybe csak a fájl nevét adja chmod 777 masik.txt #minden jogosultságot megak a fájlnak (én, csoport, mások r + w + x) chmod o-x-w masik.txt #a más felhasználóktól elveszem a futtatási és írási jogot chmod v g+w teszt.txt #a csoportomban lévő felhasználóknak ak írási jogot, és visszajelzést várok sleep: sleep 10 #10 másodperc alvás, vagyis 10 másodpercig semmit nem lehet csinálni sleep 240 & #4 perc alvás a háttérben, közben lehet lgozni ps: ps #kiírja az általam futatott folyamatokat ps aux #részletesebben írja ki az általam futatott folyamatokat top: top #részletesen táblázat formában írja ki az általam futatott folyamatokat és a globális rendszerállapotot nice: nice -n 5 sleep 20& #5-tel növelem a folyamat prioritási számát (P: -20-tól 19-ig, alap 0; -20 a legnagyobb prioritás) nice -n -2 sleep 20& #2-vel növelem a folyamat prioritását (feljebb); növelni csak root joggal lehet jobs: vi #ez (szövegszerkes ztő) csak azért kell, hogy legyen olyan folyamat, ami éppen lgozik (kilépés Ctrl + Z) jobs #kiírja az éppen lgozó programokat fg: fg %1 #előtérbe hozza az 1-es job azonosítóval (megnézni jobs-sal) rendelkező folyamatot bg: bg %1 #háttérbe küldi az 1-es job azonosítóval (megnézni jobs-sal) rendelkező folyamatot kill: kill -9 11052 #tutira leállítja a 11052 proces azonosítóval (megnézni ps-sel) rendelkező folyamatot áttovábbítás: tail n 7 teszt.txt >> masik.txt #a text.txt utolsó 7 sorát hozzáfűzi a masik.txt fájlhoz változók használata: $a = ELTE #egy változónak értéket ak echo $a #kiírja hogy ELTE szűrők használata: who > nevek #létrehoz egy nevek fájlt, kiterjesztés nélkül sort nevek #sorok szerinti sorrend who sort r u #fordított sorrend, egyedi sorok who wc l #bejelentkezett felhasználó szám cat nevek grep pista #eredményül kapjuk a pista-t tartalmazó sorokat

Átirányítás ~$ man date > temp.txt ~$ head n 10 temp.txt > date.txt man date head n 10 > date.txt ~$ rm temp.txt ~$ cat /proc/cpuinfo grep yes > yes.txt ~$ echo alma barack szilva > gyumolcs.txt #a gyumolcs.txt-ben egy sor lesz, ami "alma barack szilva" Rendezés ~$ who sort #rendezi a belépet felhasználókat abc sorrendbe ~$ ls la sort #rendezi a fájlokat jogosultság szerint (abc sorrendbe), mivel azzal kezdődik a sor Az első script írása ~$ mcedit #ez egy megjegyzés, az előző sor azért kell, hogy a bash értelmezze a scriptemet #Ez az első scriptem echo "Hello World!"; (F2 [elsoscript.sh]) #elmentem elsoscript.sh néven (F10) #kilépek az mcedit szövegszerkesztőből ~$ chmod u+x elsoscript.sh #futtatási jogot ak magamnak, másképp: chmod 744 fajlnev ~$./elsoscript.sh #futtatom a scriptet Egyszerre két parancs futtatása ~$ who q; date #;-vel elválasztva futtathatók két parancsot egy parancsként Üdvözlő üzenet készítése ~$ cd #a home könyvtárba lépek ~$ mcedit #!/bin/bash echo "Üdvözöllek! Az aktuális dátum és idő:"; date +%Y-%m-%d_%H:%M:%S #a dátum kiírása megatt formában (F2 [.profile]) #elmentem elsoscript.sh néven (F10) #kilépek az mcedit szövegszerkesztőből ~$ chmod u+x elsoscript.sh #futtatási jogot ak magamnak, másképp: chmod 744 fajlnev ~$./elsoscript.sh #futtatom a scriptet ~$ alias lla="ls -al" #létrehozás ~$ lla #használata ~$ unalias lla #törlés ~$ alias #aliasok lekérdezése ~$ env #környezeti változók lekérdezése ~$ echo $USER #a USER környezeti változó kiírása Aliasok használata Környezeti változók Futtatható fájlokat keresendő mappák (PATH) ~$ export PATH=$PATH:./ #hozzáam az aktuális mappát ~$ export PATH=$PATH:/afs/inf.elte.hu/user/g/gr/grofftamas/szamalap/ #így már az att mappában lévő scripteket már fájlnevekkel tum futtatni

~$ set #a globális változók kiírása ~$ export alma="körte" #saját változó létrehozása ~$ unset alma #törlés Globális változók ~$ a = fradi; ~$ echo "hajrá $a!" #hajrá fradi! ~$ fa = virág; ~$ echo "alma\$fa"; #alma$fa ~$ echo "alma$fa"; #almavirág Lokális változók \,', " és {} használata ~$ szeretem="utálom" #lokális változó létrehozása ~$ echo A tökfő zeléket $szeretem #kimenet: "A tökfőzeléket utálom" ~$ echo A tökfőzeléket \$szeretem #kimenet: "A tökfőzeléket $szeretem" ~$ echo 'A tökfőzeléket $szeretem' #Az 'között' letilt minden különleges karaktert; kimenet: "A tökfőzeléket $szeretem" ~$ echo "A tökfőzeléket $szeretem" #ez egy ajánlott módszer; kimenet: "A tökfőzeléket utálom" ~$ tipus=mobil #egy lokális változó létrehozása ~$ echo $tipustelefon #egybe akarom kiírni, de ez nem jó megoldás; kimenet: "" ~$ echo ${tipus}telefon #kimenet: " mobiltelefon" ~$ a=mobil #lokális változó ~$ b=telefon #lokális változó ~$ echo ab #kimenet: "ab" ~$ echo $ab #kimenet: "" ~$ echo $a$b #kimenet: " mobiltelefon" ~$ echo ${ab} #kimenet: "" ~$ echo ${a}${b} #kimenet: " mobiltelefon" ~$ echo '\"' #kimenet: "\"" ~$ echo "$a$b" #kimenet: " mobiltelefon" ~$ echo '$a' #kimenet: "$a" A read parancs használata ~$ mcedit hasznalread.sh #!/bin/bash rendezo="tarantino"; #lokális változó létrehozása film="django"; #egy másik lokális változó echo "$rendezo filmje a $film"; #kimenet: "Tarantino filmje a Django" echo "Adj meg egy Tarantino film címet: "; read -s film; #beolvasok egy filmcímet, de titkosítva úgy, mint a jelszót echo "$rendezo filmje a $film?"; #kiírom a beolvasott adatot egy szöveggel ~$ chmod u+x hasznalread.sh #futtatási jogot ak magamnak, másképp: chmod 744 fajlnev ~$./hasznalread.sh #futtatom a scriptet ~$ mcedit udvozlo.sh #!/bin/bash echo "Hello! Adja meg a vezetéknevét: "; read vnev; echo "Adja meg a keresztnevét: "; read nev; echo "A te neved $vnev $nev"; Parancs behelyettesítés

datum=`date +%Y-%m-%d_%H:%M:%S`; #így am meg, hogy ez nem egy sima szöveg, hanem parancs echo "Mai dátum: $datum"; #így itt végrehajtja a parancsot és az eredményt írja a $datum helyére ki_vagy=`whoami`; #megam a parancsot echo "Te valójában $ki_vagy vagy!"; #parancsbehelyettesítés a szövegkörnyezetbe mostdatum="date"; #most sima stringként adtam meg a parancsot eval $mostdatum; #az eval parancs parancsként értelmezi a $mostdatum tartalmát ~$ chmod u+x udvozlo.sh #futtatási jogot ak magamnak, másképp: chmod 744 fajlnev ~$./udvozlo.sh #futtatom a scriptet Read, parancs behelyettesítés és manual ~$ mcedit manparancs.sh #!/bin/bash echo"adj meg egy parancsot: "; #bekérek egy parancsot read parancs; #például: who man $parancs; #futtatom a parancs manualját $parancs; #végrehajtom a parancsot echo "Köszönöm, hogy megadtad a $parancs parancsot!"; #kiírom a parancsot (vagyis a nevét szövegként) ~$ chmod u+x manparancs.sh #futtatási jogot ak magamnak ~$./manparancs.sh #futtatom a scriptet Paraméterek használata 1. ~$ mcedit paramhasznal.sh #!/bin/bash echo -n "Parancs neve:"; #kiírom a parancs (vagyis a script nevét) echo $0; #kimenet: "./paramhasznal.sh" echo -n "Első paraméter:"; #a -n kapcsolóval sortörés nélkül írhatunk ki echo $1; #kimenet: "alma" echo "Második paraméter:$2"; #akár így is írhatom őket; kimenet: "barack" #echo "A tízedik paraméter:${10}"; #10-től már így kell írnom echo -n "Paraméterek s záma:"; echo $#; #kimenet: "3" echo -n "Összes paraméter - stringként:"; echo $*; "kimenet: "alma barack dinnye" echo -n "Összes paraméter - string sorozatként:"; echo $@; #kimenet: "alma barack dinnye" ~$ chmod u+x paramhasznal.sh #futtatási jogot ak magamnak ~$./paramhasznal.sh alma barack dinnye #futtatom a scriptet; a paramétereket megam Bonyolult feladat Feladat: Írj egy olyan scriptet, amely az első paraméterben megatt parancsot végrehajtja és a kimenetét a második paraméterbe továbbítja! ~$ mcedit atiranyit.sh #!/bin/bash $1 > $2; #$1 végrehajtja a parancsot, a > áttovábbítja a $2-nek ~$ chmod u+x atiranyit.sh #futtatási jogot ak magamnak ~$./atiranyit.sh #futtatom a scriptet

cut használata ~$ echo "a b cd" cut -f2 -d "" #2. mezőt kivágom a szóköz elválasztó karakterrel (egy mező egy szó); kimenet: "b" ~$ echo "abcdef" cut -c 2,4 #a 2. és 4. karakter kivágása; kimenet: "bd"; alapértelmezett mezőelválasztó a TAB ~$ echo "ab cd ef" cut -d'' -f2 #2. mezőt kivágom; kimenet: "cd" Feladat: Ábécé sorrendben mentsük ki a felhasználóneveket a felhasznalok.txt fájlba az /etc/passwd fájlból ~$ cat /etc/passwd cut -f1 -d ":" sort >> felhasznalok.txt #az /etc/passwd fájl első mezőjét (ami a :-tal van elválasztva) ábécé sorrendbe rendezem és a felhasznalok.txt-be mentem Feladat: Olvassunk be egy karaktersorozatot (x=nev&y=jelszo) és bontsuk fel, aztán írjuk ki egy.html fájlba ~$ mcedit cuthasznal.sh read alma; #x=gyurika&y=dikkma #beolvasom az adatot login=`echo $alma cut -f1 -d"&" cut -f2 -d"="`; #kivágom a felhasználónevet password=`echo $alma cut f2 -d"&" cut -f2 -d"="`; #kivágom a jelszót echo '<html>'> gyurkaweb.html; #létrehozok egy gyurkaweb.html fájlt echo '<head><title>gyurkaw EB</title></head>'>> gyurkaweb.html; #és ebbe fűzőgetek sorokat echo '<body bgcolor="#a1c1a1">'>> gyurkaweb.html; bekezdes="<p>azonosítója: ${login}, jelszava: ${password}!</p>"; #felhasználom a felhasz.nevet és jels zót echo $bekezdes >> gyurkaweb.html; echo '</body>'>> gyurkaweb.html; echo '</html>'>> gyurkaweb.html; ~$ chmod 744 cuthasznal.sh #futtatási jogot ak magamnak ~$./cuthasznal.sh #futtatom a scriptet ~$ ls -l tee file.txt less #létrehozás tee használata sort használata ~$ cat szamok.txt sort #rendezem a számokat ~$ cat szamok.txt sort r #fordított sorrendbe rendezem a számokat ~$ cat szamok.txt sort u #rendezem a számokat és az egyformákat csak egyszer írom ki ~$ cat szamok.txt sort b u #az elején lévő szóközöket elhagyom és rendezem a s zámokat egyedileg uniq használata ~$ cat szamok.txt sort uniq #szamok.txt-ben lévő számokat rendezem és egyedisítem (mindegyik csak egyszer lesz) wc használata ~$ who wc #a who eredményének sor, szavak száma és bájt értékének kiírása ~$ who wc -l #a who sor számának kiírása (hány sort ad eredményül); a sorvégi entereket számolja ~$ who wc -w #a who eredmény szavak számát adja ~$ who wc -c #a who eredmény karakterek számát adja grep használata ~$ cat vers.txt grep -i szív #"szív" karakterrészt tartalmazó sorok, ahol nem különbözteti meg a kis -NAGY betűket ~$ cat vers.txt grep -c szív #"szív" karakterrészt tartalmazó sorok száma ~$ cat vers.txt grep -n szív #"szív" karakterrészt tartalmazó sorok a sorindexekkel együtt ~$ cat vers.txt grep -v szív #"szív" karakterrészt nem tartalmazó sorok ~$ cat vers.txt grep -w szív #"szív" szót tartalmazó sorok ~$ grep -r 'alma'./versek #a versek könyvtárban (mappában) az alma -s sorokat (fájlokban) keresi ~$ grep -r -l 'alma'./versek #a versek könyvtárban (mappában) az alma -s sorokat tartalmazó fájlok nevét írja ki ~$ cat vers.txt grep -w -v -c szív #"szív" szót nem tartalmazó sorok száma ~$ cat vers.txt grep -w -v -n s zív #"szív" szót nem tartalmazó sorok a sorindexekkel együtt

~$ env grep LA #"LA" karakterrész keresése az env fájlban ~$ env grep ^LA #"LA" karakterrésszel kezdődő szavak keresése ~$ cat vers.txt grep hoz$ #"hoz" karakterrésszel végződő szavak keresése ~$ cat vers.txt grep k.r.k #"k?r?k" karakterrész keresése, ahol a. egy tetszőleges karakter (kerek,kerék,kérek,stb.) ~$ cat vers.txt grep ^a.*fa$ #"a fa" szavak keresése; a * előző minta is métlése 0 vagy többször (pl. almafa) További mintaillesztési parancsok karakterhalmazok megadása: [..] [a-z] (kisbetű) [^a-c] (nem a,b vagy c karakter) [A-Za-z0-9] (alfanumerikus: szám vagy betű) [0-9] (s zámjegy) speciális kapcsolókkal \w (alfanumerikus) \W (nem alfanumerikus) \d (számjegy) \s (szóköz, TAB, sortörés) szavak illesztése \< szókezdet (pl. grep "\<Zol" \> szóvég (pl. grep "tán\>" EGrep féle kapcsolók (pl.: ls egrep "par pelda" #par vagy pelda karakterrészt tartalmazó sorok (fájlok) keresése) + (pl.: ls egrep "\<p+f" #szó elején 1 vagy több p-t, majd f betűt tartalmazó sorok keresése)? (pl.: ls egrep "param\d?" #param és semmi vagy egy szám; az előző minta 0 vagy 1-szer) {n} #az előző karakter pontosan n-szer (pl.: cat almafa egrep "^[a-b]\w{5}" #a vagy b kezdésű és még 5 alfanumerikus) {2,4} #az előző minta 2,3 vagy 4-szer ismételve {1,} #előző minta legalább 1-szer () #egy csoportba foglalás [0-9]{8}(\s[0-9]{8}){1,2} #bankszámla ^[+-]?[0-9]+([,.][0-9]+)?[0-9]$ #előjeles szám tizedes ponttal, vagy vesszővel (pl. -234[.12]) tovább példák \w+[\.-_\w*]*@\w+(\.\w+)+ #e-mail cím (([01][0-9]) (2[0-3])):[0-5][0-9]:[0-5][0-9] #óra:perc:másodperc Összetett szűrő parancsok ~$ getent passwd tee felhasznalok.txt wc -l #passwd fájlban lévő sorokat lementem és a sorok számát kapom ~$ cat felhasznalok.txt cut -f5 -d ":" #a felhasznalok.txt-ből az 5. mezőket vágom ki ~$ cat felhasznalok.txt cut -f1 -d ":" sort head -n 10 #a who eredmény szavak számát adja Sikeres parancs volt-e? ~$ cat >van_ilyen.txt #létrehozok egy van_ilyen.txt fájlt Első Második #beleírok pár sort Harmadik Ctrl + D #kilépek a sorok írásából ~$ cat nincs_ilyen.txt #kiakarok írni egy olyan fájlt, ami nem létezik ~$ echo $? #sikerült-e a művelet?; most az eredmény 1, vagyis nem ~$ cat van_ilyen.txt #kiírom a korábban létrehozott fájlt ~$ echo $? #sikerült-e a művelet?; most az eredmény 0, vagyis igen

test parancs használata ~$ test -e nincs_ilyen.txt; echo $? #létezik-e a fájl? ~$ test -d ujmappa; echo $? #mappa-e? ~$ test -s van_ilyen.txt; echo $? #van benne valami adat? ~$ test -r van_ilyen.txt; echo $? #olvashatom? ~$ test -w van_ilyen.txt; echo $? #írhatom? ~$ test -x van_ilyen.txt; echo $? #futtathatom? Aritmetikai műveletek shellben ~$ x="piros" #létrehozok egy lokális változót ~$ echo "Nyári $x alma!" #szöveg összefűzés művelete; kimenet: "Nyári piros alma!" ~$ y=$x+fa; echo $y #azt akarom, hogy fűzze össze a + jel segítségével, nem lehet; kimenet: "piros+fa" ~$ a=5; b=$a+1; echo $b #a számokkal se működik, mert a shellben minden szöveg; kimenet: "5+1" ~$ a=2; let b=$a+1; echo $b #az összeadás művelete a let parancs segítségével; kimenet: "3" ~$ expr 2 \+ 1 #az összeadás művelete az expr parancs segítségével; kimenet: "3" ~$ let x=3*4; echo $x #a szorzás művelete a let parancs segítségével; kimenet: "12" ~$ expr 3 \* 4 #a szorzás művelete az expr parancs segítségével; kimenet: "12" ~$ let x=3-4; echo $x #a kivonás művelete a let parancs segítségével; kimenet: "-1" ~$ expr 3 \- 4 #a kivonás művelete az expr parancs segítségével; kimenet: "-1" ~$ let x=10/4; echo $x #az osztás művelete (egész képzés) a let parancs segítségével; kimenet: "2" ~$ expr 10 \/ 4 #az osztás művelete (egész képzés) az expr parancs segítségével; kimenet: "2" ~$ let x=10%3; echo $x #a maradékképzés művelete a let parancs segítségével; kimenet: "1" ~$ expr 10 \% 3 #a maradékképzés művelete az expr parancs segítségével; kimenet: "1" Logikai vizsgálatok ~$ expr 3 \< 7 #3 kisebb, mint 7? ~$ expr 3 \<= 7 #3 kisebb, mint 7 vagy egyenlő? ~$ expr 3 \> 7 #3 nagyobb, mint 7? ~$ expr 3 \>= 7 #3 nagyobb, mint 7 vagy egyenlő? ~$ expr 3 \= 7 #3 egyenlő 7-tel? ~$ expr 3 \!= 7 #3 nem egyenlő 7-tel? ~$ [ 5 -eq 7 ]; echo $? #5 egyenlő 7-tel? ~$ [ 5 -ne 7 ]; echo $? #5 nem egyenlő 7-tel? ~$ [ 5 -lt 7 ]; echo $? #5 kevesebb, mint 7? ~$ [ 5 -le 7 ]; echo $? #5 kevesebb, mint 7 vagy egyenlő? ~$ [ 5 -gt 7 ]; echo $? #5 nagyobb, mint 7? ~$ [ 5 -ge 7 ]; echo $? #5 nagyobb, mint 7 vagy egyenlő? ~$ [!5 -eq 7 ]; echo $? #NEM (5 egyenlő 7-tel?); most: 5 nem egyenlő 7-tel? ~$ [ alma =dinnye ]; echo $? #alma az dinnye? (szövegek összehasonlítása) ~$ [ 'alma' = 'dinnye' ]; echo $? #alma az dinnye? (szövegek összehasonlítása) ~$ [ alma!= dinnye ]; echo $? #alma az nem dinnye? (szövegek összehasonlítása) ~$ [ "alma"!= "dinnye" ]; echo $? #alma az nem dinnye? (szövegek összehasonlítása) ~$ [ -n "alma" ]; echo $? #a string hossza nem 0?; van a stringben valami? ~$ [ -z "alma" ]; echo $? #a string hossza 0?; üres a string? ~$ [ 3 -eq 7 -o "fradi"!= "vasas" ] #3 egyenlő 7-tel vagy "fradi" nem egyenlő "vasas"? ~$ [ 3 -eq 7 -a "fradi"!= "vasas" ] #3 egyenlő 7-tel és "fradi" nem egyenlő "vasas"? ~$ mcedit ifhasznal.sh echo "Adjál meg egy számot: "; read szam; if [ $szam -gt 10 ]; then echo "A megatt szám 10-nél nagyobb!"; Elágazások használata1. (if) #bekérek egy számot #beolvasom a számot #elágazás fejrésze a feltétellel (logikai vizsgálattal) együtt #az elágazás igaz ága #az elágazás lábrésze

~$ chmod u+x ifhasznal.sh #futtatási jogot ak magamnak ~$./ifhasznal.sh #futtatom a scriptet Elágazások használata 2. (if ) ~$ mcedit ifhasznal.sh echo "Adjál meg egy számot: "; #bekérek egy számot read szam; #beolvasom a számot if [ $szam -le10 ]; #elágazás fejrésze a feltétellel (logikai vizsgálattal) együtt then echo "A megatt szám 10 vagy annál kisebb!"; #az elágazás igaz ága #az ág fejrésze echo "A megatt szám 10-nél nagyobb!"; #az elágazás hamis ága #az elágazás lábrésze ~$ chmod u+x ifhasznal.sh #futtatási jogot ak magamnak ~$./ifhasznal.sh #futtatom a scriptet Elágazások használata 3. (egymásba ágyazva) ~$ mcedit tobbifhasznal.sh echo "Adjál meg egy számot: "; #bekérek egy számot read x; #beolvasom a számot echo "Adjál meg mégegy számot: "; #bekérek egy számot read y; #beolvasom a számot if [ $x -gt $y ]; #külső elágazás fejrésze then echo "$x nagyobb, mint ${y}!"; #a külső elágazás igaz ága #a külső ág fejrésze if [ $x -eq $y ]; #belső elágazás fejrésze then echo "$x és $y egyenlők!"; #belső elágazás igaz ága #belső elágazás ág fejrésze echo "$x kisebb, mint ${y}!"; #belső elágazás hamis ága #a belső elágazás lábrésze #a külső elágazás lábrésze ~$ chmod u+x tobbifhasznal.sh #futtatási jogot ak magamnak ~$./tobbifhasznal.sh #futtatom a scriptet Elágazások használata 4. (if használata) ~$ mcedit ifhasznal.sh echo "Adjál meg egy számot: "; #bekérek egy számot read x; #beolvasom a számot echo "Adjál meg még egy számot: "; #bekérek egy számot read y; #beolvasom a számot if [ $x -eq $y ]; #az elágazás 1. fejrésze then echo "$x és $y egyenlők!"; #az elágazás 1. ága if [ $x -lt $y ]; #az elágazás 2. fejrésze then echo "$x kisebb, mint ${y}!"; #az elágazás 2. ága #az elágazás fejrésze echo "$x nagyobb, mint ${y}!"; #az elágazás ága (különben ezt csinálja) #az elágazás lábrésze ~$ chmod u+x ifhasznal.sh #futtatási jogot ak magamnak ~$./ifhasznal.sh #futtatom a scriptet

Többirányú elágazások használata (case) ~$ mcedit casehasznal.sh echo "Add meg az alma színét: "; read almaszin; #beolvasom az alma színét case $almaszin in #a többirányú elágazás fejrésze piros) echo "Ez egy piros alma";; #az egyik esett zöld) echo "Ez az alma zöld";; #a másik esett sárga) echo "Ez az alma már majdnem jó";; #egy harmadik esett barna) echo "Ez már nem jó alma";; #negyedik esett *) echo "Ismeretlen alma";; #különben meg ez legyen esac; #a többirányú elágazás lábrésze ~$ chmod u+x casehasznal.sh #futtatási jogot ak magamnak ~$./casehasznal.sh #futtatom a scriptet Iterációs for ciklus használata ~$ mcedit forhasznal1.sh for i in alma körte barack #végigfut az adatlistán és egyesével kiírja őket (külön sorban) echo $i; #itt használom az egyes elemeket ne; echo "A következő felhasználók vannak bejelentkezve:"; for i in `who cut -f1 -d""` #csak felhasználónév; másképp: "for i in $(who cut -f1 -d"")" echo $i; #kiírom egyesével a felhasználóneveket ne; ~$ chmod u+x forhasznal1.sh #futtatási jogot ak magamnak ~$./forhasznal1.sh #futtatom a scriptet Paraméterek használata 2. ~$ mcedit paramhasznal2.sh echo"paraméterek használata"; echo "Adunk összetett paramétert is ('sarga dinnye')"; echo '$* használat'; for i in $* #most kiírok mindent külön echo $i; #alma, barack, sarga, dinnye külön sorban ne echo '"$*" használat for ciklusban'; for i in "$*" echo $i; #eredmény egy sorban; "között" vannak a paraméterek ne echo '"$@" használat'; for i in "$@" #ez akár ennyi is lehetne: "for i" echo $i; #alma, barack, sarga dinnye külön sorban ne

echo "A futó program PID értéke: $$"; echo "A háttérben utoljára végrehajtott program PID-je: $!"; echo "A shell kapcsolói: $-"; ~$ chmod u+x paramhasznal.sh2 #futtatási jogot ak magamnak ~$./paramhasznal.sh2 alma barack 'sarga dinnye' #futtatom a scriptet; a paramétereket megam, van összetett is Számlálós for ciklus használata ~$ mcedit forhasznal2.sh for ((i=1;i<=10;i++)) #for ciklus 1-től 10-ig echo "${i}. futás"; #kiírom 1..10 a számokat ne; ~$ chmod u+x forhasznal2.sh #futtatási jogot ak magamnak ~$./forhasznal2.sh #futtatom a scriptet seq használata ~$ seq 5 #kiírja 1-től 5-ig a számokat külön sorban ~$ seq 3 7 #kiírja 3-tól 7-ig a számokat külön sorban ~$ seq 1 3 10 #kiírja (1-tól 10-ig): 1,4,7,10 (3 a lépésköz) számokat külön sorban Összetett példa (összegző script) ~$ mcedit szumma.sh if [ $# -eq 1 -a "$1" = "-help" ]; #ha a programot -help paraméterrel hívom meg then echo "Ez egy összegző script. A kapott paramétereket összeadja!"; osszeg=0; for i in $* #itt még lehetne egy olyan vizsgálat, hogy mindegyik paraméter szám-e #osszeg=$(expr $osszeg \+ $i); osszeg=`expr $osszeg + $i`; #let osszeg=$osszeg+$i; ne; echo "A megatt paraméterek összege: $osszeg"; ~$ chmod 744 szumma.sh #futtatási jogot ak magamnak ~$./szumma.sh #futtatom a scriptet While ciklus használata 1. ~$ mcedit whilehasznal.sh echo "Adjál meg valamiket! Kilépni VÉGE paranccsal tud!"; sor=""; while [ "$sor"!= " VÉGE" ]; #ha az utolsó utasítás igaz, akkor végrehajtjuk a ciklusmagot echo -n "Adjál meg valamit: "; #ez a ciklusmag read sor; echo "OK"; ne;

~$ chmod u+x whilehasznal.sh #futtatási jogot ak magamnak ~$./whilehasznal.sh #futtatom a scriptet While ciklus használata 2. ~$ mcedit whilehasznal2.sh while #ha az utolsó utasítás igaz, akkor végrehajtjuk a ciklusmagot echo -n "Írd be a neved:"; read nev; #a read nem ad hamis eredményt, csak ha Ctrl+D echo "A Te neved: $nev"; #ez a ciklusmag ne < nevek.txt; #ez arra van, hogy a ciklus a fájlból olvassa a neveket, de a sorvégjeleket is beolvassa, echo ""; #így az utolsó sor üres lesz, ezért kell egy ilyen ~$ chmod u+x whilehasznal2.sh #futtatási jogot ak magamnak ~$./whilehasznal2.sh #futtatom a scriptet While ciklus használata 3. ~$ mcedit whilehasznal3.sh #ha a paraméter fájlnév, akkor kilistázzuk annak tartalmát while [ $#!= 0 ] #van még paraméter? #igen if [ -f $i ] #a paraméter fájlnév? then #igen echo "$1 tartalma:"; #akkor csinálja ezt cat $1; #meg ezt #ha nem fájlnév echo "$1 nem fájl"; #akkor meg emezt #az elágazás vége shift; #paraméterek léptetése balra (az elsőt törli a paramétersorból) echo "Még $# paraméter maradt!"; #a $# értéke a shift hatására mindig változik ne; #a while ciklus vége ~$ chmod u+x whilehasznal3.sh #futtatási jogot ak magamnak ~$./whilehasznal3.sh #futtatom a scriptet Until ciklus használata ~$ mcedit untilhasznal.sh v="igen"; #kezdőérték megadása until [ $v = "nem" ] #az until hamis esetén hajtja végre a ciklusmagot #több utasítás is lhet az until után; ha az utolsó hamis, akkor végrehajtja a ciklusmagot #ciklusmag echo -n "Add meg a neved: "; read nev; echo $nev >> nevek.txt; #ha még nem létezik, akkor létrehozza echo -n "Folytassuk? (igen/nem): "; #ez dönt arról, hogy mikor lépünk ki a ciklusból read v; #csak akkor ha a v="nem" ne; ~$ chmod u+x untilhasznal.sh #futtatási jogot ak magamnak ~$./untilhasznal.sh #futtatom a scriptet

Függvények definiálása, használata ~$ mcedit fugghasznal.sh szia() { #C stílusú függvény echo "Szia $1!"; #paramétereit a shell scripthez hasonlóan lgozza fel } hello() { #a függvény nem foglalkozik a paramétereivel szia Papa; #az egyik függvény hívhatja a másikat } fakt() { if [ $1 -le 1 ]; then echo 1; #általában return parancsot használunk, de most az echo egyszerűbb volt let y=$1-1; let eredmeny=$(fakt $y)*$1; #a függvény akár önmagát is hívhatja echo $eredmeny; } hello Mama; #függvényhívás echo "Az 5 faktoriálisa: $(fakt 5)"; #paramétereket nem jelölhetünk ~$ chmod u+x fugghasznal.sh #futtatási jogot ak magamnak ~$./fugghasznal.sh #futtatom a scriptet sh használata ~$ mcedit shhasznal.sh echo "Ez az elágazás előtti sor!"; if [ 5 -eq 4 ]; then echo "Igaz ág!"; echo "Hamis ág!"; echo "Ez az elágazás utáni sor!"; ~$ sh shhasznal.sh #ha nincs futási jog, akkor is futtatja a scriptet ~$ sh -v shhasznal.sh #kiírja a forráskót váltogatva a végrehajtással ~$ sh -x shhasznal.sh #kiírja a forráskódnak azt a részét, amit érint a végrehajtáskor váltakozva Összetett példa 1. (for, case, karaktervizsgálat) ~$ mcedit osszpelda1.sh for i #a paramétereket végigjárom case $i in #többirányú elágazás; mivel kezdődik a paraméter? [A-Z]*) F=" $F $i";; #ha NAGY betűvel, akkor a $F-hez fűzöm hozzá [a-z]*) f="$f $i";; #ha kis betűvel, akkor a $f-hez fűzöm hozzá [0-9]*) break;; #ha számmal, akkor kilép (kitör) a ciklusból esac; ne; echo $F; #kiírja a NAGY betűvel kezdődő paramétereket; kimenet: "KORTE Barack" echo $f; #kiírja a kis betűvel kezdődő paramétereket; kimenet: "alma" ~$ sh osszpelda1.sh alma KORTE Barack 4 dinnye #ha nincs futási jog, akkor is futtatja a scriptet

line parancs használata ~$ sor=`line`; echo $sor #így olvashatok be egy sort a line paranccsal és ki is írom azt ~$ tovább #tovább ~$ tovább #tovább sed parancs használata awk parancs használata tovább 6.előadás Az előadáson még elhangzott chown, chgrp, umask, mail, telnet(ssh), ftp, nfs(mount) #arpanet talk/write, mesg no, finger user mc #egy fájlkezelő a linuxban read p read t 3 #ennyi (3) másodpercig várunk read n 5 #maximum ennyi (5) karaktert olvasunk be echo 2*16 bc #bc parancs; 32; bcpelda.sh exit ertek #(0-255); mint a c++ exit parancsa, de itt a 0 a sikeres, a többi a sikertelen bash: SELECT continue; exit; parancsok a ciklusban függvény return parancs #függvény visszatérési értéket a return utasítással adhatunk meg expr STRING:REGEXP #mintaillesztés http://linuxcommand.org/writing_shell_scripts.php