Jezyki skryptowe – wykład 3 - Polecenia powłoki systemu Windows
Transkrypt
Jezyki skryptowe – wykład 3 - Polecenia powłoki systemu Windows
Jezyki ˛ skryptowe – wykład 3 Polecenia powłoki systemu Windows, budowa skryptów Grzegorz Bazydło, Grzegorz Łabiak Instytut Inżynierii Elektrycznej Wydział Informatyki, Elektrotechniki i Automatyki Uniwersytet Zielonogórski 17 października 2016 Grzegorz Bazydło, Grzegorz Łabiak (IIE) Wykład 3 \ \ 17 października 2016 1 / 26 Outline 1 Literatura 2 Podstawowe informacje 3 Polecenia powłoki 4 Znaki specjalne i wyrażenia regularne 5 Zasady konstrukcji skryptów 6 Wybrane polecenia powłoki (cd.) Grzegorz Bazydło, Grzegorz Łabiak (IIE) Wykład 3 \ \ 17 października 2016 2 / 26 Literatura I Albing C., Vossen J.P., Newham C. Bash. Receptury Helion, Gliwice, 2012 Pash A., Trapani G. Lifehacker. Jak żyć i pracować z głowa˛ Helion, Gliwice, 2012 Pash A., Trapani G. Lifehacker. Jak żyć i pracować z głowa. ˛ Kolejne wskazówki Helion, Gliwice, 2013 Grzegorz Bazydło, Grzegorz Łabiak (IIE) Wykład 3 \ Literatura\ 17 października 2016 3 / 26 Podstawowe informacje na temat wiersza poleceń Wiersz poleceń (ang. command line interpreter/interface, CLI), zwany również konsola, ˛ to program systemu Windows, który umożliwia interakcje˛ człowieka z komputerem Interakcja z komputerem odbywa sie˛ poprzez wydawanie programowi przez użytkownika (klienta) poleceń w postaci kolejnych linii tekstu (linie poleceń) Popularna˛ i równoważna˛ alternatywa˛ dla CLI jest graficzny interfejs użytkownika, czyli tzw. interfejs okienkowy składajacy ˛ sie˛ m.in. z przycisków, list rozwijalnych, okien dialogowych, itp. Grzegorz Bazydło, Grzegorz Łabiak (IIE) Wykład 3 \ Podstawowe informacje\ 17 października 2016 4 / 26 Uruchamianie konsoli Uruchamianie konsoli odbywa sie˛ przez wprowadzenie w okienku Run (pol. Uruchom) polecenia cmd 1 Sposób: Start->Run->cmd i OK 2 Sposób: klawisze Windows + R i wprowadzamy polecenie cmd i OK Użycie strzałek góra i dół umożliwia przegladanie ˛ historii wydanych poleceń Klawisz Tab automatycznie uzupełnia wprowadzone przez użytkownika pierwsze litery nazw, do nazw plików lub katalogów istniejacych ˛ w bieżacym ˛ katalogu Grzegorz Bazydło, Grzegorz Łabiak (IIE) Wykład 3 \ Podstawowe informacje\ 17 października 2016 5 / 26 Przeglad ˛ poleceń powłoki systemu Windows HELP – wyświetla liste ˛ wszystkich dostepnych ˛ poleceń powłoki wraz z informacja˛ o każdym z nich HELP polecenie – wyświetla szczegółowa˛ informacje˛ o wskazanym poleceniu np. HELP DIR polecenie /? – wyświetla szczegółowa˛ informacje˛ o wskazanym poleceniu np. DIR /? CLS – czyści ekran konsoli (np. D:) – zmienia bieżacy ˛ dysk logiczny – zmienia bieżacy ˛ katalog na wskazany (katalog) litera_dysku_logicznego: CD katalog CD – wyświetla bieżacy ˛ dysk i katalog CD .. – zmienia bieżacy ˛ katalog na katalog leżacy ˛ poziom wyżej w strukturze katalogów CD \ – zmienia bieżacy ˛ katalog na najbardziej nadrz˛edny (główny) w strukturze katalogów DIR – wyświetla zawartość bieżacego ˛ katalogu DIR /p – ___ ___ ___ ___ z podziałem na strony DIR /s – ___ ___ ___ ___ i wszystkich podkatalogów DIR /b – ___ ___ ___ ___ w prostym (skróconym) formacie Grzegorz Bazydło, Grzegorz Łabiak (IIE) Wykład 3 \ Polecenia powłoki\ 17 października 2016 6 / 26 Przeglad ˛ poleceń powłoki systemu Windows – tworzy katalog o podanej nazwie (katalog) – usuwa katalog o podanej nazwie (katalog) DEL plik – usuwa wskazany plik (plik) MOVE plik katalog – przenosi wskazany plik (plik) do wskazanego katalogu (katalog) REN plik_1 plik_2 – zmienia nazwe ˛ wskazanego pliku (plik_1) na nowa˛ (plik_2) TYPE plik – wyświetla zawartość pliku tekstowego (plik) MORE – wyświetla informacje ekran po ekranie MD katalog RD katalog sposób wywołania: polecenie | MORE np. HELP | MORE sposób wywołania: MORE < nazwa_pliku np. MORE < a.txt DATE – wyświetla bieżac ˛ a˛ date˛ systemowa˛ i umożliwia jej zmiane˛ DATE /t – wyświetla bieżac ˛ a˛ date˛ systemowa˛ ECHO ciag_znakow – wyświetla napis (ciag_znakow), np. ECHO napis wyświetli tekst napis ECHO OFF – wyłacza ˛ echo poleceń ECHO ON – włacza ˛ echo poleceń ECHO. – wyświetla pusta˛ linie˛ (zwróć uwage˛ na brak spacji) Grzegorz Bazydło, Grzegorz Łabiak (IIE) Wykład 3 \ Polecenia powłoki\ 17 października 2016 7 / 26 Przeglad ˛ poleceń powłoki systemu Windows SUBST litera sciezka SUBST w: d:\muzyka – przypisuje ścieżce litere˛ dysku wirtualnego np. SUBST /d – usuwa przypisany dysk wirtualny – wyświetla strukture˛ katalogów dysku lub ścieżki – wykonuje określone polecenie dla wszystkich plików ze zbioru plików, gdzie: TREE FOR %zmienna IN (zbior) DO polecenie [parametry] - %zmienna – dowolna, jednoliterowa nazwa zmiennej (uwaga: w skrypcie użyj %%zmienna) - zbior – zbiór, jeden lub kilka plików (używanie symboli wieloznacznych jest dozwolone) - polecenie – polecenie, które ma być wykonane dla każdego pliku - parametry – parametry lub opcje dla określonego polecenia (parametr opcjonalny) FOR %z IN (a.txt b.txt) DO TYPE %z – wyświetli zawartość plików a.txt oraz b.txt FOR %a IN (*.txt) DO @ECHO nazwa pliku: %a >> %a – do każdego pliku tekstowego z bieżacego ˛ katalogu zostanie dopisany tekst zawierajacy ˛ nazwe˛ pliku (np. nazwa pliku: Obcy.txt); ponieważ użyto znaku @ na ekranie nie zostana˛ wyświetlone poszczególne polecenia Grzegorz Bazydło, Grzegorz Łabiak (IIE) Wykład 3 \ Polecenia powłoki\ 17 października 2016 8 / 26 Przeglad ˛ poleceń powłoki systemu Windows FOR /L %zmienna IN (poczatek,krok,koniec) DO polecenie [parametry] – wykonuje określone polecenie w petli ˛ – od wartości poczatek do wartości koniec zmienianych o wartość krok np. (1,2,10) wygeneruje kolejne liczby 1 3 5 7 9 (uwaga: w skrypcie użyj %%zmienna) FOR /L %n IN (1,1,30) DO @ECHO Wiersz %n – wyświetli 30 linii o wartościach „Wiersz 1”, „Wiersz 2”,. . ., „Wiersz 30” FOR /L %N IN (1,1,10) DO ECHO plik%N > plik%N.txt – utworzy 10 kolejnych plików o nazwach plik1.txt, plik2.txt, . . ., plik10.txt i zapisze do nich ich nazwy (bez rozszerzenia) EXIT – kończy prace˛ interpretatora poleceń Grzegorz Bazydło, Grzegorz Łabiak (IIE) Wykład 3 \ Polecenia powłoki\ 17 października 2016 9 / 26 Znaki specjalne i wyrażenia regularne – zastepuje ˛ jeden dowolny znak np. DIR plik_nr_??.txt ˛ dowolny ciag ˛ znaków np. DEL film*.* * – zastepuje ? – na poczatku ˛ linii oznacza, że ta linia nie bedzie ˛ wyświetlana (ale jej efekt tak) np. @ECHO Witaj! > – powoduje zapisanie danych do pliku (jeżeli plik istnieje, jest kasowany i tworzony na nowo, jeżeli nie istnieje to jest tworzony); przykłady wykorzystania: @ DIR > plik.txt – zapisuje zawartość bieżacego ˛ katalogu do pliku plik.txt ECHO tekst > plik.txt – zapisuje ciag ˛ znaków „tekst” do pliku tekstowego plik.txt ECHO %date% > plik.txt – zapisuje aktualna˛ date˛ do pliku plik.txt TYPE plik.txt > wynik.txt – przepisuje zawartość pliku plik.txt do pliku wynik.txt Grzegorz Bazydło, Grzegorz Łabiak (IIE) Wykład 3 \ Znaki specjalne i wyrażenia regularne\ 17 października 2016 10 / 26 Znaki specjalne i wyrażenia regularne >> – powoduje dopisanie danych do pliku (jeżeli plik nie istnieje to jest tworzony); przykłady wykorzystania: DIR >> plik.txt – dopisuje zawartość bieżacego ˛ katalogu na końcu pliku plik.txt ECHO tekst >> plik.txt – dopisuje ciag ˛ znaków „tekst” na końcu pliku tekstowego plik.txt ECHO %date% >> plik.txt – dopisuje aktualna˛ date˛ na końcu pliku plik.txt TYPE plik.txt >> wynik.txt – dopisuje zawartość pliku plik.txt na końcu pliku wynik.txt Ctrl+C – powoduje przerwanie wykonywania bieżacego ˛ polecenia Grzegorz Bazydło, Grzegorz Łabiak (IIE) Wykład 3 \ Znaki specjalne i wyrażenia regularne\ 17 października 2016 11 / 26 Pliki wsadowe (skrypty) Pliki wsadowe (ang. batch files), inaczej zwane skryptami, to tekstowe pliki wykonywalne (uruchamiane np. w przegladarce ˛ plików), które składaja˛ sie˛ z wierszy poleceń (wsad) powłoki systemu Windows Plik wsadowy powinien mieć rozszerzenie .cmd lub .bat W pliku wsadowym można wywoływać inne pliki wsadowe Polecenia w pliku wykonywane sa˛ sekwencyjnie, w kolejności od poczatku ˛ pliku do jego końca Uruchomienie pliku .cmd lub .bat w przegladarce ˛ plików powoduje automatyczne otwarcie okna konsoli, wykonanie poleceń skryptu i zamkniecie ˛ okna konsoli Grzegorz Bazydło, Grzegorz Łabiak (IIE) Wykład 3 \ Zasady konstrukcji skryptów\ 17 października 2016 12 / 26 Jak utworzyć skrypt Wystarczy utworzyć plik tekstowy z rozszerzeniem .bat lub cmd i w jego kolejnych wierszach wpisać polecenia powłoki systemu Windows Uruchomienie w oknie konsoli polega na wpisaniu nazwy skryptu, tak samo jak każde inne polecenie powłoki W przegladarce ˛ plików wystarczy dwukrotnie kliknać ˛ nazwe˛ pliku ze skryptem Aby poprawnie wyświetlać polskie znaki diakrytyczne w skrypcie, należy plik tekstowy ze skryptem zapisać w odpowiedniej stronie kodowej z polskimi znakami, która jednocześnie musi być ustawiona w programie konsoli, najcz˛eściej jest to OEM-852 Strona kodowa (ang. code page) Odwzorowanie wartości liczbowych w zbiór znaków tekstu, cz˛esto połaczony ˛ ze zbiorem znaków sterujacych. ˛ Istnieja˛ różne zbiory znaków, m.in. zawierajace ˛ polskie znaki diakrytyczne, jak np. OEM-852 Uwaga! Konsola Windows nie wspiera zestawu znaków Unicode Grzegorz Bazydło, Grzegorz Łabiak (IIE) Wykład 3 \ Zasady konstrukcji skryptów\ 17 października 2016 13 / 26 Zmienne i parametry wywołań w skrypcie Do zmiennych petli ˛ FOR odwołujemy sie˛ poprzedzajac ˛ nazwe˛ zmiennej dwoma procentami np.: %%zmienna Do zmiennych utworzonych poleceniem SET odwołujemy sie˛ ujmujac ˛ zmienna˛ w procenty, np.: SET imie=Grzegorz echo %imie% Napisy składajace ˛ sie˛ z odstepów ˛ trzeba ujać ˛ w znaki cudzysłowu, np.: SET imie="Grzegorz Łabiak" echo %imie% Skrypty można wywoływać z parametrami przekazanymi z linii poleceń, oddzielonymi odstepami ˛ np.: parametry "Hello world!" Grzegorz 46 Do parametrów wyołania odwołujemy sie˛ poprzez ujecie ˛ kolejnego numeru parametru w procenty, np. pierwszy parametr %1%, drugi to %2%, itd. Grzegorz Bazydło, Grzegorz Łabiak (IIE) Wykład 3 \ Zasady konstrukcji skryptów\ 17 października 2016 14 / 26 Skrypt Parametry @echo off rem Ustaw pierwszy przekazany parametr jako tytuł okna title %1% rem trzeci parametr to wiek set /a rok=2016-%3% rem drugi parametr to imi˛ e echo Witaj %2%! echo Twój rok urodzenia to %rok% echo. pause echo on Grzegorz Bazydło, Grzegorz Łabiak (IIE) Wykład 3 \ Zasady konstrukcji skryptów\ 17 października 2016 15 / 26 Wybrane polecenia powłoki systemu Windows MODE con cp – wyświetla strone˛ kodowa˛ konsoli COLOR – ustawia kolor tekstu oraz tła okna konsoli (jako parametr należy podać dwie cyfry heksadecymalne: pierwsza oznacza kolor tła a druga kolor tekstu – np. COLOR 16 ustawi żółta˛ czcionk˛e na niebieskim tle 0 – Czarny 8 – Szary 1 – Niebieski 9 – Jasnoniebieski 2 – Zielony A – Jasnozielony 3 – Błekitny ˛ B – Jasnobłekitny ˛ 4 – Czerwony C – Jasnoczerwony 5 – Purpurowy D – Jasnopurpurowy 6 – Żółty E – Jasnożółty 7 – Biały F – Jaskrawobiały – ustawia tytuł okna konsoli – wyświetla bieżacy ˛ czas systemowy i umożliwia jego zmiane˛ TITLE tytul_okna TIME TIME /t – wyświetla bieżacy ˛ czas systemowy Grzegorz Bazydło, Grzegorz Łabiak (IIE) Wykład 3 \ Wybrane polecenia powłoki\ 17 października 2016 16 / 26 Wybrane polecenia powłoki systemu Windows FIND "ciag_znaków" ˛ plik – wyszukuje podany "ciag_znaków" ˛ w pliku "plik" lub wielu plikach – jeżeli ciag ˛ zostanie znaleziony, oprócz nazwy pliku zostanie wyświetlony cały wiersz zawierajacy ˛ ten ciag ˛ FIND /n "Ala" – wyświetla nazwe˛ pliku i wszystkie wiersze nie zawierajace ˛ ciagu ˛ znaków "Ala" (uwzgledniana ˛ jest wielkość liter) FIND /i "ala" – wyświetla nazwe˛ pliku i wszystkie wiersze zawierajace ˛ ciag ˛ znaków "Ala", wielkość liter nie jest uwzgledniana ˛ FIND /c "Ala" – wyświetla tylko nazwe˛ pliku i liczbe˛ wierszy zawierajacych ˛ ciag ˛ znaków "Ala", wielkość liter jest uwzgledniana ˛ START polecenie – uruchamia program, skrypt lub polecenie w oddzielnym oknie konsoli SYSTEMINFO VER – wyświetla właściwości i konfiguracje˛ komputera – wyświetla wersje˛ systemu Windows CALL nazwa_pliku – uruchamia w pliku wsadowym inny plik wsadowy lub program Grzegorz Bazydło, Grzegorz Łabiak (IIE) Wykład 3 \ Wybrane polecenia powłoki\ 17 października 2016 17 / 26 Skrypt Start @echo off echo Utworzenie katalogu "Test" md Test dir /b start d.bat echo. echo Usuni˛ ecie katalogu "Test" rd Test dir /b pause echo on Grzegorz Bazydło, Grzegorz Łabiak (IIE) Wykład 3 \ Wybrane polecenia powłoki\ 17 października 2016 18 / 26 Skrypt Call @echo off echo Utworzenie katalogu "Test" md Test dir /b call d.bat echo. echo Usuni˛ ecie katalogu "Test" rd Test dir /b pause echo on Grzegorz Bazydło, Grzegorz Łabiak (IIE) Wykład 3 \ Wybrane polecenia powłoki\ 17 października 2016 19 / 26 Wybrane polecenia powłoki systemu Windows COPY zrodlo cel lokalizacji (cel) – kopiuje jeden lub wiecej ˛ plików (zrodlo) do innej COPY /y *.* d:\ak2\ – kopiuje wszystkie pliki z bieżacego ˛ katalogu do lokalizacji d:\ak2\ i wyświetla liste˛ skopiowanych plików (parametr /y oznacza, że w przypadku gdy docelowy plik istnieje, system nie zapyta użytkownika o decyzje˛ tylko nadpisze docelowy plik, ang. yes) XCOPY zrodlo cel – kopiuje pliki i drzewa katalogów XCOPY /y /q *.* d:\ak2\ – kopiuje wszystkie pliki z bieżacego ˛ katalogu do lokalizacji d:\ak2\ (parametr /y oznacza, że w przypadku gdy docelowy plik istnieje, system nie zapyta użytkownika o decyzje˛ tylko nadpisze docelowy plik; parametr /q oznacza, że nie zostanie wyświetlona lista skopiowanych plików) – służy do łaczenia ˛ kilku procesów w potok (najcz˛eściej poprzez połaczenie ˛ standardowego wyjścia jednego procesu ze standardowym wejściem drugiego) np. DIR /s | FIND "muzyka:" | MORE REM – komentarz (w skrypcie) np. REM Komentarz PAUSE – wstrzymuje przetwarzanie pliku wsadowego i wyświetla na ekranie komunikat "Aby kontynuować, naciśnij dowolny klawisz..." | Grzegorz Bazydło, Grzegorz Łabiak (IIE) Wykład 3 \ Wybrane polecenia powłoki\ 17 października 2016 20 / 26 Polecenie warunkowe IF Polecenie warunkowe IF organizuje warunkowe przetwarzanie w skryptach. Oto trzy przykładowe użycia: IF [NOT] ERROLEVEL liczba polecenie IF [NOT] napis1 == napis2 polecenie IF [NOT] EXIST nazwa_pliku polecenie Znaczenie parametrów jest nastepuj ˛ ace: ˛ NOT – wykonuje polecenie jeśli warunek nie jest spełniony ERRORLEVEL liczba – jest warunkiem prawdziwym jeśli ostatnio wykonany program zakończył sie˛ z kodem wyjściowym (zwrócił do systemu operacyjnego wartość) równym lub wiekszym ˛ od liczba napis1 == napis2 jest warunkiem prawdziwym jeśli napisy sa˛ równe EXIST nazwa_pliku jest warunkiem prawdziwym jeśli podany plik istnieje polecenie – instrukcja do wykonania, o ile warunek jest prawdziwy. Po poleceniu może wystapić ˛ opcjonalna klauzula ELSE ze swoim poleceniem, które zostanie wykonane gdy warunek nie jest spełniony Klauzula ELSE musi wystapić ˛ w tej samej linii co polecenie po IF IF EXIST filename. ( DEL filename. ) ELSE ( ECHO filename. missing. ) Grzegorz Bazydło, Grzegorz Łabiak (IIE) Wykład 3 \ Wybrane polecenia powłoki\ 17 października 2016 21 / 26 Skrypt If @echo off rem Utwórz katalog "Grzegorz" tylko, jeżeli nie istnieje if not exist Grzegorz ( md Grzegorz echo Katalog "Grzegorz" został utworzony ) else ( echo Katalog "Grzegorz" już istnieje ) pause echo on Grzegorz Bazydło, Grzegorz Łabiak (IIE) Wykład 3 \ Wybrane polecenia powłoki\ 17 października 2016 22 / 26 Instrukcja skoku GOTO Instrukcja GOTO kieruje wykonywanie poleceń w skrypcie do linii z etykieta˛ GOTO etykieta gdzie etykieta jest napisem etykieta, ˛ docelowego adresu skoku Etykieta oznaczajaca ˛ linie˛ poprzedzona jest dwukropkiem : Wyrażenie %ERRORLEVEL% jest napisem, który reprezentuje numeryczna˛ wartość zmiennej ERRORLEVEL Przykład goto answer%ERRORLEVEL% :answer0 echo Program had return code 0 :answer1 echo Program had return code 1 Grzegorz Bazydło, Grzegorz Łabiak (IIE) Wykład 3 \ Wybrane polecenia powłoki\ 17 października 2016 23 / 26 Skrypt Goto @echo off rem Utwórz katalog "Grzegorz" tylko, jeżeli nie istnieje if exist Grzegorz (goto Istnieje ) else ( goto NieIstnieje ) :Istnieje echo Katalog "Grzegorz" już istnieje rem należy przejść do sekcji "Koniec" rem inaczej wykona si˛ e sekcja "NieIstnieje" goto Koniec :NieIstnieje md Grzegorz echo Katalog "Grzegorz" został utworzony :Koniec pause echo on Grzegorz Bazydło, Grzegorz Łabiak (IIE) Wykład 3 \ Wybrane polecenia powłoki\ 17 października 2016 24 / 26 Polecenie SET Polecenie SET wyświetla, ustawia lub usuwa zmienna˛ środowiskowa˛ w programie cmd.exe SET [zmienna=[napis]] gdzie: - zmienna – nazwa zmiennej środowiskowej - napis – ciag ˛ znaków przypisywany do zmiennej Wywołanie SET bez parametrów wyświetla wszystkie zmienne środowiskowe SET Wywołanie SET tylko z napisem/litera˛ (bez znaku = i wartości) wyświetli bieżace ˛ wartości wszystkich zmiennych zaczynajacych ˛ sie˛ od napisu/litery SET P Umożliwia nadanie zmiennej wartości linii wprowadzonej przez użytkownika SET /P variable=[promptString] gdzie promptString jest tekstem zachety ˛ Grzegorz Bazydło, Grzegorz Łabiak (IIE) Wykład 3 \ Wybrane polecenia powłoki\ 17 października 2016 25 / 26 Skrypt Zmienne @echo off set nazwaprogramu=Program "Kartoteka" title %nazwaprogramu% echo Wpisz swoje imi˛ e: set /p imie=">> " echo Podaj wiek: set /p wiek=">> " set /a rok=2016-%wiek% echo. echo Witaj %imie%! echo Twój rok urodzenia to %rok% echo. pause echo on Grzegorz Bazydło, Grzegorz Łabiak (IIE) Wykład 3 \ Wybrane polecenia powłoki\ 17 października 2016 26 / 26