460 likes | 591 Views
Operációs Rendszerek I. 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
E N D
Operációs Rendszerek I. 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) • Állítson be kék háttért és sárga betűket • Az ablak címét állítsa át: „parancsaim”-ra • On-Line help • Hogyan lehet a „dir” parancsot úgy futtatni, hogy az csak a fájlok neveit írja ki? (/B) • 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
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!
Á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
A .txt fájlnévkiterjesztéshez tartozó fájltípustársítás törléséhez a következőt kell beírnia: FTYPE rtffile="C:\Program Files\Windows NT\Accessories\WORDPAD.EXE" "%1" ASSOC .rtf=rtffile
„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> <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.txt • rename c:\tmp\alma.txt c:\temp\korte.txt • Törlés: del/erase • del <file> • Rekurzív törlés (alkönyvtárakban is): del /s <file>
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 <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.) • 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
Parancsok egymásutánisága Parancsok csoportosítása (parancs1 & paramcs2) || (parancs3) (dir & echo hello & mkdir hello)
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 bemenetét közvetlenül összekapcsolom • dir | sort
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 On-Line 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 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)
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 • %* - az átadott összes paraméter • SHIFT parancs (paraméterek eltolása) • SHIFT /3 eltolás a 3. paramétertől kezdődően • 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] errorlevelnumbercommand [elseexpression] • if [not] string1==string2command [elseexpression] • if [not] exist FileNamecommand [elseexpression] Ha a kiterjesztett parancsok engedélyezettek: • if [/i] string1CompareOpstring2command [elseexpression] • ifcmdextversionnumbercommand [elseexpression] • ifdefinedvariablecommand [elseexpression]
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] EXIST: 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
Példák • if ”%1”==”a” (echo A) else (echo is not A) • If ”%varA%” equ ”%varB%” (echo Match!)
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 equal • NEQ not equal • LSS less than • LEQ less than or equal • GTR greater than • GEQ greater than or equal • 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ó
Iteráció • for /d %%B in (%SystemRoot% %SystemRoot%\*) do echo %%B • for /d %%B in (%APPDATA% %APPDATA%\*) do (@for %%C in (”%%B\*.txt”) do echo %%C)
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!