Jegyzetben a 8-9.-10. fejezet (97.-től 125. oldalig). http://stegerjozsef.web.elte.hu/teaching/szamalap.pdf
Egyéb források:
Linux parancsok: http://www.letix.hu/
Terminálban használható szövegszekesztőből több is létezik, melyek közül az egyik leghatékonyabb és legelterjettebb a Vim, de mivel használata hosszú gyakorlást igényel, így mi nem ezt használjuk az órán.
Egy egyszerű szövegszerkesztő az mcedit. Indítása egyszerűen az 'mcedit' paranccsal történik.
mcedit FÁJLNÉV paranccsal.A linuxban többféle ablakos szövegszerkesztő van alapértelmezésben telepítve. Az egyik legelterjettebb a gedit nevű program.
Mindenki índítsa el a gedit nevű programot:
geditHasonlóan működik, mint a Windowsban a jegyzettömb.
A linuxban lehetőség van a programok párhuzamos kezelésére, akár 1 terminál ablakon belül is. Az épp futó alkalmazást háttérbe lehet küldeni, és az így visszakapott promt után más parancsok is kiadhatók.
Példa:
Mindenki indítsa a gnuplotot: gnuplot
Ezátán adjuk ki a CRTL+Z billenytű kombinációval felfügesztés parancsát, majd bg beütésével háttérbe küldhető a program.
gnuplot
'CTRL+z'
bg
A jobs paranccsal ellenőrizhető, milyen futó programok vannak. (Ezek relatív számok, csak az adott terminában érvényesek!)
Minden program melett van egy szám (ID), amivel hivatkozható a program:
Program kilövése: kill %ID paranccsal
kill %2
Program előrehozása: fg %ID paranccsal
fg %1
A kill parancs a programok számára küld üzenetet/utasítást. Ez lehet többek közöt az azonnali kilépés (ez a default).
Működése:
kill PID
pl.: kill 3213
Megj.: PID=Process IDentifier, azaz egy futó program egyértelmű azonosíthatóságát meghatározó szám (Ált.: 1-32768-ig.)
A PID-et a ps vagy a top használatával tudod megállapítani többek között.
? : 1 darab "akarámit" helyettesít"sinusa?atok.dat"
# ez lehet "sinusadatok.dat"
* : Akármilyen hosszú szövegrészt helyettesít (lehet a semmi is!)"sin*.dat"
# Minden fájl aminek ".dat" a vége, és "sin" az eleje
$ : Segítségével változó neve és értéke között tudunk különbséget tenni. Ha $valtozo-t írunk, az a változónk értékét fogja visszaadni.cica=10;echo $cica ---> Eredménye: 10\ : Bourne Again Shell escape-karaktere. Többek között ezzel a jellel lehet elérni, hogy az azt követő speciális karakter elveszítse módosító hatását.cica=1;echo \$cica ---> Eredménye: $cica$-t a változók jelzésének tekintseecho '$cica' ---> Eredménye: $cicaecho "Ez egy szöveg" ---> Eredménye: Ez egy szövegFájlokat a find paranccsal lehet keresni.
find ~ -name "*.jpg"
# az összes jpg kiterjesztésű kép keresése a home-ban
find ~ -iname "*.DAT"
# kis és nagybetű különbség nincs
find / -perm 777
#777-es joggal rendelkező állomány keresése a gyökérben
find ~/latex -size +1024M
#1024 Mb-nál nagyobb fájlok keresése a /latex mappában
Szöveget keresni a grep parancs segítségével lehet.
Alapértelmezésben nem azonos a kis/NAGY betű.
grep equation ./latex/latex.tex
# "equation" szó keresése a latex.tex-ben
grep equation *
# "equation" szó keresése minden fájlban a mappán belül
grep -i EquAtion * # Kis/NAGY betű nem számít
grep -n equation * # kiírja a sor számát
grep -l equation * # Fájlnevet ad vissza
Lehetőség van a kimenetet a terminál ablak heylett pl. fájlba irányítani:
ls -l > file_lista.txt
Létrejött a file_lista.txt
(ha létezett már a fájl, akkor ezzel felülírodott)
Megjegyzés: Fájlból bemenetet csinálni a "<" jel tud.
Hozzáírni a >> paranccsal lehet egy meglevő fájlhoz:
echo "Kiscica,ezt hozzáírom a fájlhoz" >> file_lista.txt
tail file_lista.txt
passwd: Jelszó csere. Ekkor kéri a régi jelszót, majd 2-szer az újat a rendszer! Ezeken a gépeken nem használható!file akarmi.tex : megvizsgálja az akarmi.tex típusátuniq : Több sorból álló szövegben az ismétlődő sorokkal kezd valamittree : kiírja a könyvtárstruktúrátdu : Az aktuális könyvtár fájljainak méretét adja megdf : Szabad terület számítása, partíciónkénttouch file : létrehoz egy "file nevű" üres állománytcut : Bemenetként (stdin), vagy paraméterként megadott fájl minden sorának egy megadott részét vágja ki
tr : karakterek lecserélése, változtatása adott karaktersorban
echo vegyes | tr a-z A-Z : a vegyes szóban a kis betűket nagyra cseréli.echo egyesek | tr -d e : az egyesek szóból kitörli az e betűketdiff -u file1 file2 > eredmeny : Összehasonlítja a fájlok tartalmát, a különbséget pedig az "eredmeny"-be írjatar : Ki-be tömörítőtar -czvf file.tar.gz /eleresi/ut/amit/mentunk : az elérési útvonal alatt levő adat gzip-be tömörítésetar -xzvf file.tar.gz: Kitömöríti a gz-t, majd a tar-t, és egy /file könyvtárba teszilogin : Bejelentkezéslogout : Kijelentkezéswho : Bejelentkezett felhasználók kiíratásaps : Futó folyamatok kiírásakillall command : az összes fehasználó (amihez van jogunk) által futtatott "command" nevű folyamat leállítása shutdown -P now : Kikapcsolás (-P=Poweroff), azonnal (percben lehet megadni az időt)Irodalom (angol és magyar nyelven):
Bash programozás:
A parancsértelmező által ismert parancsok fűzhetőek össze egy "programba" vagy más néven shell script-be.
#!/bin/bashchmod +x programnevbash programnev.sh
(./programnev.sh)
Más interpreterekhez:
python akarmi.py #python script
octave valami.m #octave script
Hozzunk létre egy hello.sh fájlt, és írjuk bele:
gedit hello.sh &
#!/bin/bash echo Hello World!
Mentés után futtassuk le:
(chmod u+x hello.sh)
bash ./hello.sh
Változók: Lehetséges változókat eltárolni és később hivatkozni rájuk: $izé az izé nevű változó.
szam=20
echo $szam
Egész számok generálása a seq paranccsal lehetséges (pl. 10-től 100-ig)
seq ELSŐ NÖVEKMÉNY UTOLSÓ
seq 10 2 100 # 10-től kettesével 100-ig megy
seq 100 -5 10 # 100-tól 10-ig 5-ösével
Próbáljuk ki:
a=2
b=5
echo $a*$b
let parancs: Ez a parancs képes aritmetikai műveleteket végezni: ("b++" jelentése, a b-t 1-gyel megnöveli)a=1234; let "a=a+1"; echo "$a"
a=2; b=5; let c=$a*$b; echo $c
let 'b = a' "(a += 3) + $((a = 1)), b++"
A következő 3 példához használjuk a test.sh -t állományt:
gedit test.sh &chmod u+x test.sh
A következő 3 példát másoljuk bele (külön-külön), mentsük el a fájlt, majd teszteljük le szkripteket a következő parancs kiadásával:
bash test.sh
#!/bin/bash
COUNTER=0
while [ $COUNTER -lt 10 ]; do
echo a szamlalo erteke: $COUNTER
let COUNTER=COUNTER+1
done
COUNTER változót 1-gyel növeli addig, amíg el nem éri a 10-et.
#!/bin/bash
COUNTER=20
until [ $COUNTER -lt 10 ]; do
echo a szamlalo erteke: $COUNTER
let COUNTER-=1 # COUNTER-=1 jelentése: COUNTER=COUNTER-1
done
COUNTER változót 20-as kezdőértékről 1-gyel csökkenti, amíg el nem éri a 10-et.
Szintatktika: for "Változó megadás" "Állítás" "Utasítás"
#!/bin/bash
for i in `seq 1 10`;do
echo $i
done
Az i változó felveszi 1-től 10-ig az értékeket, majd ki is írja a képernyőre
";" vagy "&&" jel váltja fel:¶SZAM=0; while [ $SZAM -lt 10 ]; do echo érték: $SZAM ;let SZAM=SZAM+1;done
COUNT=20; until [ $COUNT -lt 10 ]; do echo érték:$COUNT; let COUNT-=1;done
for i in `seq 1 10`;do echo $i; done
for i in `seq 2 5 100`;do echo $i; done
for i in $(ls);do echo fájlok: $i; done
Jegyzetben az 4. fejezet (53-től 67. oldalig). http://stegerjozsef.web.elte.hu/teaching/szamalap.pdf
Az awk (vagy gawk, azaz GnuAWK) egy olyan programozási nyelv, amit szöveges állományok feldolgozására terveztek. Egy tipikus awk programot (szkript) egy interpreter olvas be és hajt végre. A szkript végrehajtása során a feldolgozott szöveges állomány(ok)at (tartalmának változatlanul hagyásával) másféle kimenetté formálja át. A bemeneti adatok változatlanul hagyása biztosítja, hogy ugyanazon adatokra (például szövegfájlok) többféle awk program is futtatható egymás után, vagyis ugyanazon fájl(ok)ból többféle adat is kinyerhető legyen.
Töltsük le a két fájlt:
wget itl7.elte.hu/~iracz/Oktatas/SzA/millenium.dat
wget itl7.elte.hu/~iracz/Oktatas/SzA/millenium_new.dat
Nézzük is meg őket:
more millenium.dat
more millenium_new.dat
Mi az eltérés köztük?
A BEGIN előfeldolgozó a lényegi programot megelőzően fut le. Itt lehet megadni például a bemeneti fájl szerkezetét (pl. mi az oszlopelválasztó karakter).
Az END utófeldolgozó a lényegi program után fut le. Itt adható meg, hogy pl. mentse el egy fájlban adott stílusban az eredményt a szkript.
awk '{print $8,$3,$4,$5}' millenium.dat | sort > adat.dat
more adat.dat
gnuplot
splot "adat.dat" u 2:3:4 lw 5
plot "adat.dat" u 1:2 w p ps 7