Bemutatkozás
Bringye Zsolt
[email protected] http://www.bringyezsolt.hu
Operációs Rendszerek I. Nulladik tömb Röviden a félévről
Röviden a félévről • Előismeretek – BEVINFO tárgyból tanultak • Anyag, források – Windows (XP): • Windows XP hakadókönyv • Windows parancssor
– Linux (alapok): • Könyv nem annyira, inkább net
• Számonkérés: 2 Zh
Operációs Rendszerek I. Első tömb Ismerkedés a parancssorral Fájlkezelés parancssorból Egyszerű parancsfájlok
A parancssor (cmd) • Jellemzői – Majd minden OR alatt van valami hasonló – Használata esetenként gyorsabb, mint a GUI alapú megoldásoké – Lehet scriptet írni – Kevesebb erőforrás igény (mint GUI esetén) – Van history (előzmények) • könnyebb parancsot ismételni • log is egyben
– Parancsok és kapcsolók pontos szintaxisát ismerni kell (de…)
A parancssor • • • •
indítása: futtatás cmd Indulási könyvtár: indítás helye / HOMEPATH kilépés: exit navigáció – – – – –
Parancssorban mozgás: kurzor, HOME és END ↑ és ↓ history F7 parancs history „ablakban” fájlnév kiegészítés: TAB Teljes képernyő: bal ALT+ENTER
Ablak megjelenése • Indítási paraméterek – /c : egyetlen (megadott) parancs végrehajtása – /t:fg : színek beállítása (pl. 16) – /e:on : parancskiterjesztés engedélyezése – Stb. (lásd cmd /? és HELP)
• Címsoron jobb klikk tulajdonságok – Működési környezet beállítása • Tippek: HELP „To configure the command prompt”
• title parancs: ablak címének megadása
Parancsok típusai • belső: – cmd.exe tudja pl.: • dir • copy
• külső parancsok másik exe-t futtat le: – pl.: sort.exe c:\Window\System32\sort.exe • Vagy nem, ez telepítéstől függ!
Parancsok felépítése • Parancsnév [kapcsolók] [paraméterek] – pl: copy /y fajl1 fajl2 • Parancsok működése kapcsolókkal (/kapcsolo) módosítható • Kapcsolók egyidejű használata parancsfüggő (HELP), lehetnek egymást kizáró kapcsolók is • Általában mindig van: /? • Ha a program mindenképpen vár paramétert, de nem adjuk meg hibajelzés • Egyszerre akár több paraméter is átadható (vagy éppen átadandó)
Segítség • Források • Konvencionális kapcsoló: /? • help „parancsnév” • Start menü – Segítség és támogatás • Referencia: „Command-line reference A-Z”, „Command shell overview” • Jelölések COPY [/d] [/v] [/n] [{/y|/-y}] [/z] [{/a|/b}] Source [{/a|/b}] [+ Source [{/a|/b}] [+ ...]] [Destination [{/a|/b}]]
• • • • •
COPY: a parancs Source, Destination: paraméterek /d, /v, stb. : kapcsolók [/d] [destination] : opcionális elem {/a|/b} : egymást kizáró (együtt nem használható) elemek
Fontosabb parancsok • • • •
dir: könyvtár tartalmának listázása cd: munkakönyvtár lekérése / beállítása copy: fájlok másolása move / rename: fájlok mozgatása, átnevezése • mkdir, rmdir: könyvtár létrehozás, törlés • edit: minimal editor
Gyakorlás • Alapok – Indítsa el a parancsértelmezőt (cmd)
• On-Line help – Hogyan lehet a „dir” parancsot úgy futtatni, hogy az csak a fájlok neveit írja ki? – Melyik paranccsal lehet a c: meghajtó könyvtárstruktúráját (fát) kiíratni?
• Alapvető parancsok (minden lépés után ellenőrizze az eredményt) – – – – –
Hozzon létre egy „munkáim” könyvtárat Ebben hozzon létre egy „valami.txt” fájl Készítsen másolatot „fontos.txt” néven A „valami.txt” fájl nevezze át „nemfontos.txt” névre Törölje le a létrehozott fájlokat és a könyvtárat
Megoldás • • • • • • • • •
mkdir munkaim cd munkaim edit valami.txt copy valami.txt fontos.txt rename valami.txt nemfontos.txt del fontos.txt del nemfontos.txt cd .. rmdir munkaim
• dir
Fájlok és könyvtárak •
Diszk és könyvtárstruktúra (részletek később) – Diszkeket betűjelükkel azonosítjuk (pl. c:) – Diszkeken fa struktúrájú könyvtár-rendszer – Az egyes könyvtárak közötti elválasztójel: „\‟
•
Kitűntetett helyek (könyvtár struktúrában) – Gyökér (kiinduló) könyvtár, jele: \ – Munkakönyvtár (aktuális könyvtár) – Felhasználó „HOME” könyvtára (HOMEPATH környezeti változó)
•
Fájl elérési utak megadása – abszolút elérés: gyökérkönyvtártól, a fát végigjárva adjuk meg – Relatív megadás: a munkakönyvtárhoz képest (relatív) adjuk meg • Hivatkozás az aktuális könyvtárra: „.‟ • Hivatkozás a szülő könyvtárra: „..‟
•
Elérési út megadása parancsoknál – Abszolút vagy relatív – Elérés keresési út (PATH környezeti változó) segítségével – Ha nincs kiterjesztés: behelyettesít (exe, com, cmd, bat, stb.)
Környezeti változók • Különféle azonosítók tárolására alkalmas – pl. SystemRoot, windir, UserName, PATH
• Sajátgép/Tulajdonságok/Speciális/Környezeti változók • Kétféle környezeti változó – Felhasználó változói – Rendszerváltozók
• Használatuk parancssorban – Megadás set PATH=c:\mydir set PATH=%PATH%;c:\mydir set ALMA=%PATH%;c:\mydir
– Hivatkozás a változóra: %név% echo %ALMA%
Gyakorlás • PATH – Készítsen másolatot a „notepad.exe” fájlról (c:\windows\system32) a saját könyvtárába „notesz.exe” néven – Az elérési út megváltozatásával biztosítsa, hogy a „notesz.exe” bárhonnan elindítható legyen
• Egyéb változók – Hozzon létre egy munkakönyvtárat, majd egy „enkonyvtaram” változót, amely értékként a könyvtár elérési útját tartalmazza! – Az „enkonyvtaram” változó használatával másolja át a Windows system32 könyvtárában található összes „com” típusú fájlt a létrehozott könyvtárba! – Törölje le az „enkonyvtaram” tartalmát és magát a könyvtárat is!
Megoldás • Munkakönyvtár: c:\tmp\alma • Copy c:\windows\system32\notepad.exe notesz.exe • Set PATH=%PATH%;c:\tmp\alma
• Set enk=c:\tmp\alma • Copy c:\windows\system32\*.com %enk%
Állománynevek • • • • • •
Hossza legfeljebb 255 karakter lehet Tartalmazhat szóközt és pontokat (többet) Tartalmazhat ékezetes betűket Tiltott karakterek: ? * \ / : < > | Fájltípusok: kiterjesztés alapján dől el Kiterjesztés az utolsó pont mögött álló rész (lehet több, mint 3 karakter) – a „beépített” típusok (exe, cmd, stb.) mellett az alkalmazások is regisztrálhatnak saját típusokat (asszociáció)
• Kis és nagybetűt megőrzi, de fájlok kezelésekor nem veszi figyelembe • Hosszú nevekhez rövid (8.3) változatú név létrehozása automatikusan megtörténik
„Gondok” az állománynevekkel • Szóközök a névben: honnan „tudja” a parancs? Forrás: elso masodik Cél: harmadik copy elso masodik harmadik (3 paraméter) Megoldás: idézőjelek használata
• Kis és nagybetűk • „Idegen” rendszereknél (pl. Unix) gondokat okozhat
• Nemzeti karakterek a nevekben • A nevek az adott XP példány alapértelmezett kódlapját használva konvertálódnak Unicode-ról, ez pedig már a magyar ékezeteknél is gond lehet (pl. angol az alapértelmezett kódlap) – „Control Panel/Regional and Language/Advanced”
Elnevezési tippek • • • •
ekezet nelkul (ha lehet) space nélkül, helyette alulvonás (_) kis-nagybetűk egységesen név önmagáért beszéljen – később is tudnunk kell mi az adott fájl – ne legyen nagyon hosszú
Gyakorlás • Nevükben szóközt tartalmazó fájlok – – – –
Létrehoz: „alma”, „körte” és „alma körte” Töröl alma körte (idézőjel nélkül) Nézd meg mit csináltál… Töröl alma körte (most már rendesen)
• Kis és nagybetű – – – – –
Létrehoz: alma Másol: alma → Körte Másol: alma → KÖRTE Másol: alma → kÖRTE Hány körte van? Pontosan mi a neve?
Fájl és könyvtárkezelés • • • • •
Könyvtárak tartalmának listázása: dir Aktuális (munka) könyvtár nevének lekérése: cd Aktuális (munka) könyvtár megváltoztatása: cd Könyvtárváltás „visszaúttal”: pushd/popd További parancsok – Könyvtár létrehozása: mkdir – Könyvtár törlése: rmdir • Alapértelmezés: csak üres könyvtárat enged törölni! • /S kapcsoló: rekurzív törlés, akkor is megy, ha nem üres a könyvtár • /Q kapcsoló: /S esetén elnyomja a megerősítés kérést
– Átnevezés
Alapvető fájlműveletek • Másolás: copy – copy <srcfile>
– Összefűzés: copy <srcfile> <+srcfile> …
• Mozgatás: move (átnevezésre is használható) – move <srcfile>
• Átnevezés: rename/ren – rename <src> , de dst esetében csak egy fájlnév állhat, elérési út nem (semmilyen módon)! • rename c:\tmp\alma.txt korte.txt • rename c:\tmp\alma.txt c:\temp\korte.txt
• Törlés: del/erase – del – Rekurzív törlés (alkönyvtárakban is): del /s
Fájlműveletek (folytatás) • Speciális „fájlok” – Unix örökség az eszközök eléréséhez (con, null, stb.) – copy con c:\tmp\alma.txt (CTRL-Z!) – copy c:\tmp\alma.txt con – copy c:\tmp\alma.txt nul
• Xcopy – Rekurzív másolás (üres könyvtárak is): xcopy a: b: /s /e – Adott dátum után módosult fájlok másolása: xcopy \rawdata \reports /d:12-29-1993 – Ugyanez, dátum-korlát nélkül („egyszerű” copy): xcopy \rawdata \reports /u
Gyakorlás • pushd/popd – Milyen egyéb módon lehet biztosítani a pushd/popd szolgáltatását (legalább egy mélységig)?
• Copy – 3 szöveges fájl létrehozása (pár soros) – Fájlok összefűzése egy fájllá
• Copy con – Fájl létrehozása „copy con” módon – Fájl kiíratása „copy con” módon
• Xcopy próbálgatása
Helyettesítő karekterek • Probléma: valamilyen műveletet (pl. másolás, törlés) egyszerre több fájlon szeretnénk végrehajtani • Megoldás: ha a fájlok nevük alapján megkülönböztethetők, akkor a helyettesítő karakterek használata • Helyettesítő karakterek: *: tetszőleges számú karakter ?: egyetlen karakter
• Használatuk (pl): copy ab*cd?.e* d:
Szöveges fájlok • Fájl létrehozása – Notepad, edit (karakteres) – copy con
• Fájl tartalmának megjelenítése – type – copy con
• Fájl tartalmának módosítása – Elsődlegesen editorok (edit, stb.) – A Unix-beli szűrők (pl. sed) nem terjedtek el
• Tartalommal kapcsolatos műveletek – Keresés: find – Rendezés: sort – Fájlok összehasonlítása: fc
Parancsok egymásutánisága • Többféle lehetőség • &: mindig végrehajtásra kerül – cmd1 & cmd2
• &&: csak akkor kerül végrehajtásra, ha a művelet sikeres – cmd1 && cmd2
• ||: csak akkor kerül végrehajtásra ha a művelet sikertelen – cmd1 || cmd 2
Gyakorlás • Primitív „move” parancs összefűzéssel – Először másol, ha sikeres volt, akkor töröl
• Előfeltétel ellenőrzés – Csak akkor próbálja kiírni egy fájl tartalmát (pl. more), ha az létezik
• Hibakezelés – Ha a másolás parancs nem fut le, akkor írjon ki egy üzenetet (pl. „hát ez nem jött össze”)
Átirányítás • Szabványos be- és kimeneti, hibacsatornák • A „jól nevelt” segédprogramok ezeket a csatornákat használják (nem közvetlen képernyő, billentyű elérést) • A parancsértelmező képes a szabványos csatornák „eltérítésére” a program tudta nélkül! – kimeneti csatorna átirányítása fájlba • dir > alma.txt vagy dir >> alma.txt (utóbbi hozzáfűz)
– bemeneti csatorna fájlból • sort < alma.txt
– Hibacsatorna átirányítása • valami.exe 2> alma.txt
– Csatornába irányítás • valami.exe 2>&1
Parancsösszefűzés, átirányítás Összetett feladatok esetén az eredményt több parancs egymás utáni végrehajtása adja – Minden parancs kimenetét fájlba irányítom, a következő parancs ebből dolgozik • dir > alma & sort < alma
– Vagy: a parancsok ki- és közvetlenül összekapcsolom • dir | sort
bemenetét
Egyéb hasznos parancsok • • • • • •
more sort find type tree fc
Gyakorlás • Fájlmásolás type paranccsal és átirányítással • Döntse el, hogy létezik-e az adott könyvtár, de a tartalmát ne írja ki /Fájl kimenetének (dir) átirányítása „nul” eszközre/ • Kapcsolók használata nélkül tördelje fel képernyőkre a „dir” parancs kimenetét /pipe használata (dir és more kapcsolata)/ • Készítsen el a „nevek.txt” fájlt, amelyet töltsön fel a laborban találhatók keresztneveivel. Rendezze ABC sorrendbe a neveket!
Gyakorlás • Parancsok működésének kitalálása OnLine help segítségével (sort, fc, find)
Parancsfájlok • Ami volt: parancsok összekapcsolása parancssorból (parancsok egymás utáni végrehajtása, függőséggel), az STDIO (átirányítás, pipe) • Parancsfájlok: mi az? • Általános célú parancsfájlok: parancssori paraméterek Parancssori paraméteres példa • További lehetőségek röviden: változók, elágazások, vezérlésátadás és ciklusok Egyszerű példák
Batch fájlok • Fájl kiterjesztése: bat vagy cmd • Fájl tartalma: különféle parancsok egymásutánja • rem: comment – pl: rem Ezt a sort ne hajtsd végre – Ki fogja irni, de nem értelmezi
• echo off – Alapból mindent kiír, ezzel a parancs kiírása megakadályozható globálisan – Parancs elé tett @ ugyanezt teszi (arra a sorra)
• Escape karakter: ^
Gyakorlás • Egyszerű parancsfájl létrehozása és futtatása: parancsok egymásutánja • Előző órák során kipróbált parancskombinációk átírása parancs fájlba • Echo off hatásának kipróbálása • Megyjegyzések a fájlok elejére (ki készítette, mi a célja)
Változók • • • • • • • •
Lásd Korábbi: környezeti változók! létrehozás: set valtozonev=”valami” törlés: set valtozonev= A változóknak azonnal értéket kell adni Ez sem case sensitive Hatóköre az adott parancsfájl kisebb hatókör kell, akkor setlocal, endlocal Aritmetika: /a – set ertek=4+4 – string-ként értelmezi – set /a ertek=4+4: 8 (azaz összeadta)
Bemeneti paraméterek • %0: fájl neve • %1, %2, … %9: kapcsolók, paraméterek – – – – – –
Pl. a.cmd fájl, benne echo-k (echo %0, echo %1, stb.) a.cmd se ki se be se nyő : %0: a.cmd : %1: se : %2: ki stb.
Gyakorlás • Előzőekben elkészített fájlok (pl. move megoldása copy és delete segítségével) kiegészítése – Paramétereket parancssorból vegye – Ha a forrásfájl nem létezik, akkor írjon ki valamilyen üzenetet (előzetes tesztelés)
• Egyszerű összeadó gép készítése – Adja össze a paraméterként megadott két számot!
IF – feltételes elágazások IF: feltételtől függő működés megvalósítása • IF [NOT] condition (statement1) [else (statement2)] • if [not] errorlevel number command [else expression] • if [not] string1==string2 command [else expression] • if [not] exist FileName command [else expression] Ha a kiterjesztett parancsok engedélyezettek: • if [/i] string1 CompareOp string2 command [else expression] • if cmdextversion number command [else expression] • if defined variable command [else expression]
Elágazások folytatás • IF „%ComputerName%”==”kalapacs” (echo „De fura nev”) else (echo „Nem is olyan fura nev”) – „”-re vigyázni, nélküle nem megy! – IF NOT: mint az IF, csak negálva
• IF [NOT] DEFINIED – true, ha a megadott változó létezik: if not definied %temp% (set temp=”C:\temp”) – DE: %1, %2, stb. mindig definiálva van!
• IF [NOT] EXISTS: fájl létezését vizsgálja • IF [NOT] ERRORLEVEL: elágazás parancs végrehajtási státusza (exit code) alapján – DIR q:\ & IF ERRORLEVEL 1 (echo “HIBA”) – Igaz, ha az exit code >= mint az érték
Elágazások folytatás • Összehasonlítások IF-ben – if „stringA”==”stringB” – if „%varA%”==”stringA” – if „%varA%”==”%varB%” • Idézőjel használata hasznos
– /i kapcsoló használatával nem tesz különbséget a kis- és nagybetűk között – equ, neq, lss, leq, gtr, geq • if „%varA%” lss ”%varB%”: igaz, ha varA kisebb, mint varB
Elágazások folytatás • IF igaz és hamis ágához csak egy parancsot írhatunk (vagy láncolni) goto • Például: if "%1"=="1" goto alma if "%1"=="2" goto korte goto exit :alma echo „ez itt az 1-ag” goto exit :korte echo „ez itt a 2-ag” goto exit :exit
Gyakorlás • Az első paraméterként kapott értéket vizsgáljuk meg. Amennyiben 12 a szám, írjuk ki, hogy "Tizenkettő", amennyiben nem, akkor írjuk ki, hogy "A beírt érték nem tizenkettő!" • Move példa hibakezelés része átalakítása „if” szerkezetre • Készítsen scriptet, amely az első paraméterként kapott fájlt ellenőrzi, hogy létezik-e. Amennyiben igen, akkor írassa ki, amennyiben nem, hozzon létre egy új fájlt a könyvtár fastruktúrájának tartalmával • Négy alapműveletes számológép, RPN megadással (parancssori paraméterekkel)
Iteráció • for [módszer] (változónév) in (fájllista) do (parancs) • Módszer lehet: – – – – –
/D: Könyvtárak iterálása /R: alkönyvtárakkal együtt /L: értéksorozat végigjárása /F: fájlon belül soronkénti iterálás Kapcsoló nélkül: Fájlok iterálása
• Példák – – – –
for %%B in (*.*) do echo %%B for /d %%B in (*.*) do echo %%B for /l %%B in (0,1,10) do @echo %%B For /f %%B in (akarmi.txt) do echo %%B
• Parancssorban csak %B a változó
Gyakorlás • 1. Készítsen egy olyan scriptet, amely elszámol az első paraméterként megadott értéktől a másodikig. Módosítsa úgy a scriptet, hogy akkor is fusson le, ha az első paraméter nagyobb, mint a második! • 2. Hozzon létre egy fájlt, melynek tartalma a következő legyen: – Valami_1 – Valami_2 – Valami_3
• Hozzon létre script segítségével könyvtárakat a fájlban szereplő nevekkel!