Informatika1-2014/Gyakorlat2

A MathWikiből

Tartalomjegyzék

Bash

Parancsok, programok

Állományok

  • pwd: aktuális könyvtár kiíratása. pwd
  • cd: könyvtárváltás. Ha paraméter nélkül hívjuk meg, akkor a saját mappánkba visz. cd /mnt, cd
  • ls: (-a, -h, -l): könyvtár tartalmának listázása. ls, ls -h, ls /dev, ls -h -l /mnt
  • mkdir: könyvtár létrehozása. mkdir BME
  • TAB: kiegészítés.
  • cp: másolás. cp mit.txt hova.txt
  • mv: mozgatás/átnevezés (az eredeti nem marad meg). mv mit.txt hova.txt
  • rm (-r): törlés. rm alma.txt, rm -r BME
  • quota: A felhasznált/megmaradt helyet írja ki. Ha a kvótánk betelik, akkor nem kapjuk meg a nekünk címzett leveleket és a grafikus terminálra sem tudunk belépni; ilyenkor a parancssoros terminálra belépve tudjuk kitakarítani a home-unkat.
  • df, du (-h): lemezen szabad / felhasznált helyet írja ki. df -h ./ , du -h /home
  • mc: midnight commander fájlböngésző.

Alkalmazások, folyamatok

  • man: az adott parancsról leírást ad. A leírásban navigálni a 'fel', illetve a 'le' billentyűkkel, továbbá a 'PageUp', 'PageDown'-nal lehet. Kereséshez '/' jel után kell beírni a kifejezést. Kilépés 'q'-val. man ls
  • history: parancs történet lekérdezése.
  • apropos: parancs/program nevek keresése. apropos vi
  • ctrl-R: keresés a history-ban.
  • top: futó alkalmazások.
  • killall (-u), xkill: processzek leállítása. killall -u username

Szöveges állományok

  • vim: command line szövegszerkesztő.
  • emacs: szövegszerkesztõ, -nw kapcsolóval command line-os
  • cat: fájl tartalmának kiíratása. Ha nem adunk meg fájlnevet, akkor a billentyűzetről vár bevitelt. Kilépés: Ctrl-D-vel. cat valami.txt
  • grep: szöveg mintázatok keresése állományokban. grep kifejezés file
  • less: szöveges állományok megjelenítése. less valami.txt
  • head (-n ), tail (-n ): fájl elejének és végének a kiiratása. head -n 100 valami.txt
  • >,<,|: output átirányítása, "pipe"-olás.
  • sort (-g -k): szövegállomány rendezése.
  • wc (-l): byte/karakterek/sorok számolás adott fájlra.
  • awk: programozási nyelv szöveges állományok feldolgozására.

Távoli elérés

  • ssh: távoli gépre való bejelentkezést teszi lehetővé. felhasznalo@leibniz.math.bme.hu
  • scp: távoli gépre/gépről való másolás. scp felhasznalo@leibniz.math.bme.hu/home/stu_bme/felhasznalo/dokumentum.txt ./dokumentum.txt
  • wget: file-ok letöltése HTTP, HTTPS és FTP használatával.

Egyéb

  • exit: kilépés terminálból (vagy ctrl+d).
  • sudo: programok futtatása superuserként.
  • Egyéb hasznos fogalmak

Feladatok

Jogosultságok

  • Hozz létre egy könyvtárat "GYAK1" néven a saját mappádban, és lépj be a mappába.
mkdir GYAK1
cd ./GYAK1
  • Készíts egy file-t test néven amiben csak annyi van: "info1".
echo info1 > test
  • Változtatsd meg a test file hozzáférési jogát úgy, hogy senki ne tehessen vele semmit.
chmod 000 test
  • Próbáld meg letörölni. (Megkérdezi, hogy biztosan le akarod-e törölni, ha nem lenne rajta írás védelem, akkor azonnal letörölné.)
rm test
  • Próbálj meg belenézni.
less test
  • Adj vissza magadnak minden jogot és a csoportodnak olvasási jogot.
chmod 740 test
  • Most nézz bele, majd töröld le.
cat test
rm test

Gráfos

  • Töltsd le a wget programmal az alábbi (gráf) él listát: [1]
wget http://math.bme.hu/~kkovacs/info1/edge_list
  • Készíts biztonsági másolatot a file-ról, majd ellenőrizd a másolatot.
cp edge_list edge_list_save
less edge_list_save
  • Számold meg az élek számát a gráfban.
wc -l edge_list
  • Írd ki a 3-as csúcsból induló éleket, majd irányítsd a kimenetet a "edges_3" file-ba
grep 3 edge_list
grep 3 edge_list > edges_3

Számold ki a 3-as csúcs fokszámát.

grep 3 edge_list | wc -l

Számold ki az összes csúcs fokszámát. (Ez elég bonyolult, nem kell tudni.)

awk 'BEGIN{ez_csak_pelda_beginre=0;}{DEG[$1]++;DEG[$2]++}END{for (i in DEG) print i,DEG[i]}' edge_list > degrees
less degrees

Határozd meg a legnagyobb és legkisebb fokú csúcsot.

sort -g -k2,2 degrees > degrees_sorted
less degrees_sorted
head -n 1 degrees_sorted
tail -n 1 degrees_sorted
Megjegyzés

A legutolsó utasítás file létrehozása nélkül is megoldható:

sort -g -k2,2 degrees | head -n 1
sort -g -k2,2 degrees | tail -n 1

Script file

Készíts el első linux scriptedet! A script kap egy csúcsot és kiadja a fokszámát. Használj gedit szövegszerkesztõt a file létrehozásához:

gedit fokszam.sh

Ebbe másold be a következő sort.

csucs=$1
echo "a "$csucs". csucs fokszama: "
grep $csucs edge_list | wc -l

Futtasd a scriptet különböző csúcsokkal, példa:

sh fokszam.sh 3
Megjegyzés
  • gedit indítható úgy is, hogy ne vegye el a kurzort a termináltól (ne egye meg a terminált):
gedit fokszam.sh &

Hasznos mindennapi parancsok

Hasznos parancsok:

  • megkeresni egy file-t az egy adott könyvtárban
find ./ | grep kulcsszo
  • adott mappaban talalhato file-ok tartalmaban kereses
cat ./* | grep kulcsszo


Python

Mi a python?

  • programozási nyelv
  • magasszintû programozási nyelv (távol van a gépi kódtól)
  • könnyen olvashatóságra törekszik így nagyon jó elsõ programnyelvnek

Interpreter

  • A python paranccsal indíthatunk interactív python-t (console-ban):
username@leibniz:~$ python
  • Innentõl a python interpreterben vagyunk, szimpla aritmetikai mûveleteket ki lehet adni:
>>> 5 + 7
>>> 10 - 5
>>> 7 * 6
>>> 10 / 3
  • Az utolsó mûvelet nem azt adja amit elõször várnánk...miért? Próbáljuk így:
>>> 10.0 / 3.0
  • Az osztás egész számokon egész osztást jelent, ha kitesszük a tizedespontot, akkor már float (lebegõpontos) számokkal végezzük a mûveletet.
  • Hatványozás:
>>> 2 ** 10
  • Hatványozást szabad próbálni lebegõpontos számokkal is.
  • A következõ parancs lép ki az interpreterbõl:
>>> exit()


Script

  • Python script alatt egy vagy több python kódot tartalmazó file-t értünk.
  • Kiterjesztésük .py, hozzunk létre egy python script file-t:
gedit gyak2.py &
  • Másoljuk be a következõ kódot a file-ba:
#!/usr/bin/python
#coding=UTF-8
 
print "Hello World!"
  • Az elsõ két sor valójában elhagyható, az elsõ sor azt mondja meg, hogy mivel kell futtatni a scriptet, ha nem adjuk meg közvetlen. A második, hogy milyen karakterkódolásban írtuk a scriptet.
  • A 4. sor kiírja, hogy Hello World!
Személyes eszközök