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 karakterek:: ? * \ / : < > | Fájltípusok:: kiterjesztés alapján dől el Fájltípusok 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. stb.) mellett az saját 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 névben:: honnan „tudja” a parancs? Forrás: elso masodik Forrás: Cél:: harmadik Cél copy elso masodik harmadik (3 paraméter) Megoldás:: idézőjelek használata Megoldás
Kis és nagybetűk •
„Idegen” okozhat
rendszereknél
(pl (pl..
Unix)
gondokat
Nemzeti karakterek a nevekben •
A nevek az adott XP példány alapértelmezett kódlapját használva konvertálódnak UnicodeUnicode-ról, ez pedig már a magyar ékezeteknél is gond lehet (pl (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 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 „alma”, ”, „körte „körte”” és „alma „alma körte 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 Másolás copy <srcfile>
Összefűzés:: copy <srcfile> <+srcfile> … Összefűzés
Mozgatás:: move (átnevezésre is használható) Mozgatás move <srcfile>
Átnevezés:: rename/ren Átnevezés rename <src> ,, de dst esetében csak egy fájlnév állhat, elérési út nem (semmilyen módon)! • rename c:\tmp tmp\\alma alma..txt korte korte..txt • rename c:\tmp tmp\\alma alma..txt c:\temp temp\\korte korte..txt
Törlés:: del/erase Törlés del/erase del Rekurzív Rekur zív törlés (alkönyvtárakban is) is):: del /s 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. stb.) copy con c:\alma alma..txt (CTRL+Z!) Billentyűzetről fájlba másol copy c:\tmp tmp\\alma alma..txt con A képernyőre másol tmp\\alma copy c:\tmp alma..txt nul
Xcopy Rekurzív másolás (üres könyvtárak is) is):: xcopy a: b: /s /e Adott dátum után módosult fájlok másolása: másolása: xcopy \rawdata \reports /d: /d:12 12--29 29--1993 Ugyanez, dátumdátum-korlát nélkül („egyszerű” copy) copy):: xcopy \rawdata \reports /u 8
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 9
Helyettesítő karekterek Probléma: valamilyen műveletet (pl Probléma: (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 Megoldás megkülönböztethetők, akkor a helyettesítő karakterek használata Helyettesítő karakterek karakterek:: ∗: tetszőleges számú karakter ?: egyetlen karakter
Használatuk (pl): (pl): copy ab ab* *cd?. cd?.e* d: 10
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 UnixUnix-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 & cmd cmd1 cmd2 2
&& &&:: csak akkor kerül végrehajtásra, ha a művelet sikeres cmd1 cmd 1 && cmd2 cmd2
||: ||: csak akkor kerül végrehajtásra ha a művelet sikertelen cmd1 cmd 1 || 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 bebe- é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. alma.txt vagy dir >> alma. alma.txt (utóbbi hozzáfűz)
bemeneti csatorna fájlból sort < alma alma..txt
Hibacsatorna átirányítása valami..exe 2> alma. valami alma.txt
Csatornába Csatorná ba irányítás valami..exe 2>& valami >&1 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 Vagy: 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éteziklé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)/ Indítsa el az aktuális ktkt-ból a notepad.exenotepad.exe-t és az esetleges hibaüzenetet a hiba.txt fájlba rögzítse! Indítsa el az aktuális ktkt-ból a notesz.exenotesz.exe-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 OnOnLine 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ájlok Fájl kiterjesztése: kiterjesztése: bat vagy cmd Fájl tartalma: különféle parancsok egymásutánja rem: rem: comment comment,, (k (kiiírja ja,, de nem értelmezi pl pl:: rem Ezt a sort ne hajtsd végre
echo off Alapból mindent kiír kiír,, ezzel a parancs kiírása megakadályozható globálisan Parancs elé tett @ ugyanezt teszi (arra a sorra)
Escape karakter ^: &, |, ( ) spec. spec. Karakterek elé, ha argumentumként adjuk meg. 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 parancsparancskombiná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: Korábbi: környezeti változók! létrehozás:: set valtozonev=”valami” létrehozás törlés:: set valtozonev= törlés 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 Aritmetika set ertek= ertek=4 4+4 set /a ertek= ertek=4 4+4
stringstring-ként értelmezi 8 (azaz összeadta) 24
Bemeneti paraméterek %0: fájl neve %1, %2, … %9: kapcsolók, paraméterek Pl Pl.. a.cmd fájl, benne echoecho-k (echo %0, echo %1, stb. stb.) a.cmd se ki se be se nyő : %0: a.cmd : %1: se : %2: ki stb. 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 not]] errorlevel number command [else expression] if [not not]] string1==string2 command [else expression] if [not not]] exist FileName command [else expression] Ha a kiterjesztett parancsok engedélyezettek: if [/i /i]] string1 CompareOp string2 command [else expression] if cmdextversion number command [else expression] if defined variable command [else expression]
27
El Elágazások á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=”C:\temp”) DE: %1, %2, stb. mindig definiálva van!
IF [NOT] EXISTS: fájl létezését vizsgálja IF [NOT] ERRORLEVEL: ERRORLEVEL: elágazás parancs végrehajtási státusza (exit code) alapján DIR q:\ q:\ & IF ERRORLEVEL 1 (echo “HIBA”) Igaz, ha az exit code >= mint az érték 28
Elágazások folytatás Összehasonlítások IFIF-ben if „stringA”==”stringB” if „%varA%”==”stringA” if „%varA%”==”%varB%” • Idézőjel használata hasznos
/i kapcsoló használatával használatával nem tesz különbséget a kiskis- é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 1--ag” goto exit :korte echo "ez itt a 2 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éteziklé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) 32
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ó 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