Operációs Rendszerek I. Fájlkezelés parancssorból Egyszerű parancsfájlok 1
Á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 alkalmazások (asszociáció) típusok (exe, cmd, is regisztrálhatnak stb.) saját mellett az típusokat 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 2
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 okozhat rendszereknél (pl. Nemzeti karakterek a nevekben Unix) gondokat 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 3
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ú 4
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? 5
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: rename 6
Alapvető fájlműveletek Másolás: copy copy <srcfile> <dstfile> Összefűzés: copy <srcfile> <+srcfile> <dstfile> Mozgatás: move (átnevezésre is használható) move <srcfile> <dstfile> Átnevezés: rename/ren rename <src> <dst>, de dst esetében csak egy fájlnév állhat, elérési út nem (semmilyen módon)! rename c:\tmp\alma.txt korte.txttxt rename c:\tmp\alma.txt c:\temp\korte.txttxt Törlés: del/erase del <file> Rekurzív törlés (alkönyvtárakban is): del /s <file> 7
Fájlműveletek (folytatás) Speciális fájlok Unix örökség az eszközök eléréséhez (con, nul, stb.) Xcopy copy con c:\alma.txt (CTRL+Z!) Billentyűzetről fájlba másol copy c:\tmp\alma.txt con A képernyőre másol copy c:\tmp\alma.txt nul 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 12-29-1993 Ugyanez, dátum-korlát nélkül ( egyszerű copy): xcopy \rawdata \reports /u 8
Gyakorlás pushd/popd Copy Milyen egyéb módon lehet biztosítani a pushd/popd szolgáltatását (legalább egy mélységig)? 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 9
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? cd?.e* d: 10
Szöveges fájlok Fájl létrehozása Notepad, edit (karakteres) copy con <fn> Fájl tartalmának megjelenítése type <fn> copy <fn> 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 (és megjeleníti a különbségeket) 11
Gyakorlás Készítsen COPY CON paranccsal egy négy sorból álló, ADAT.TXT nevű állományt a következő tartalommal: Első Második Harmadik Negyedik Melyik sorban van e vagy E betű? Find /i/n e adat.txt Melyik sorban nincs e betű? Find /v/n e adat.txt Az előzőekben létrehozott ADAT.TXT állományt rendezze növekvő, majd csökkenő sorrendbe. A növekvő eredménye az NREND.TXT, a csökkenőé pedig a CSREND.TXT állományban jelenjen meg. Nézze meg a tartalmukat! SORT ADAT.TXT /o nrend.txt SORT /r ADAT.TXT /o csrend.txt 12
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 13
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, ha sikerült átnevezni Hibakezelés Ha a másolás parancs nem fut le, akkor írjon ki egy üzenetet (pl. hát ez nem jött össze ) 14
Átirányítás (1) 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) Leíró Leíró numerikus megfelelıje Leírás STDIN 0 Bemenet a billentyőzetrıl STDOUT 1 Kimenet a Parancssor ablakba STDERR 2 Hibaüzenet a parancssor ablakba NEM DEFINIÁLT 3-9 Ezeket a leírókat az alkalmazások definiálják. A leírók eszközönként eltérıek. 15
Átirányítás (2) Átirányító operátor > < >> >& <& Leírás A parancskimenetet a Parancssor ablak helyett fájlba vagy eszközre (például nyomtatóra) írja. A parancsbemenetet a billentyőzet helyett fájlból olvassa be. Hozzáfőzi a parancskimenetet egy fájl végéhez a fájlban lévı adatok törlése nélkül. Az egyik leíró kimenetét a másik leíró bemenetére írja. Beolvassa az egyik leíró bemenetét, és egy másik leíró kimenetére írja azt. Beolvassa az egyik parancs kimenetét, és a másik parancs bemenetére írja azt. Csınek (pipe) is nevezik. 16
Átirányítás (3) 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 17
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 bemenetét közvetlenül összekapcsolom dir sort 18
Gyakorlás Fájlmásolás type paranccsal és átirányítással Döntse el, hogy létezik-e 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)/ Indítsa el az aktuális kt-ból a notepad.exe-t t és az esetleges hibaüzenetet a hiba.txt fájlba rögzítse! Indítsa el az aktuális kt-ból a notesz.exe-t t és az esetleges hibaüzenetet a hiba.txt fájlba rögzítse! Csak abban az esetben írassa ki egy fájl tartalmát, ha az létezik! 19
Gyakorlás Parancsok működésének kitalálása On- Line help segítségével (sort, fc, find) 20
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 21
Batch fájlok Fájl kiterjesztése: bat vagy cmd Fájl tartalma: különféle parancsok egymásutánja rem: comment, (kiírja ja, de nem értelmezi pl: rem Ezt a sort ne hajtsd végre 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 ^: &,, ( ) spec. Karakterek elé, ha argumentumként adjuk meg. 22
Gyakorlás Egyszerű parancsfájl létrehozása és futtatása: parancsok egymásutánja Előző órák során kipróbált parancs- kombiná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) 23
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 set /a ertek=4+4 string-ként értelmezi 8 (azaz összeadta) 24
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. 25
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! 26
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] 27
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 ) 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 28
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 29
Elágazások folytatás Operátor Leírás EQU egyenlő NEQ nem egyenlő LSS kisebb, mint LEQ kisebb vagy egyenlő GTR nagyobb, mint GEQ nagyobb vagy egyenlő 30
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 31
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. 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) 32
Iteráció for [módszer] (változónév) in (fájllista) do (parancs) Módszer lehet: Példák /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 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ó 33
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! 34