Polecenia działające na plikach tekstowych echo Wyświetla komunikat wpisany jako argument Narzędzia informatyczne w językoznawstwie np.echo To jest komunikat Wiersz poleceń - Potoki i pliki wsadowe type Wyświetla zawartość jednego lub wielu plików na stdoutnp.type *.txt Marcin Junczys-Dowmunt more Wyświetla dane po jednym ekranie na raz junczys@amu.edu.pl np.more plik1.txt sort sortuje wierze w podanym pliku i wyświetla na konsoli Zakład Logiki Stosowanej np.sort plik1.txt http://www.logic.amu.edu.pl fc porównuje dwa pliki i wyświetla różnice między nimi 22. pazdziernika 2008 np.fc plik1.txt plik2.txt find szuka ciągu znaków w pliku lub wielu plikach np.find /N "ciąg" *.txt Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 1/17 Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 2/17 Co to jest potok? Standardowe strumienie Potok (ang. pipe) Standardowe strumienie to jeden z mechanizmów komunikacji międzyprocesowej To standardowe kanały komunikacji między komputerem a umożliwiający wymianę danych pomiędzy dwoma procesami otoczeniem (zwykle terminalem). odbywa się to poprzez połączenie standardowego wyjścia Trzy podstawowe połączenia I/O noszą nazwy: jednego procesu ze standardowym wejściem drugiego standard input (stdin, standardowy strumień wejścia), liczba procesów, które można w ten sposób połączyć nie jest standard output (stdout, standardowy strumień wyjścia) ograniczona standard error (stderr, standardowy strumień błędów). Polecenia łączymy w potok za pomocą znaku|, np. type plik1.txt | sort | more Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 3/17 Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 4/17 Standardowy strumień wyjścia (stdout) Standardowy strumień wejścia (stdin) Standardowy strumień wyjścia Standardowy strumień wejścia Standardowy strumień wyjścia to strumień, do którego program zapisuje dane wynikowe Standardowy strumień wejścia to dane (zwykle tekst) przekazywane do programu Niektóre programy nie zwracają danych wynikowych - na przykładmoveniczego nie wypisuje, jeżeli przeniesienie się Nie wszystkie programy wymagają danych wejściowych. powiodło Przykładowo,dirwykonuje swoją funkcję nie pobierając żadnych danych zstdin Jeżeli strumień nie jest przekierowany dane są wysyłane do terminala, z którego uruchomiono program O ile strumień nie jest przekierowany, dane są pobierane z terminalu (czyli z klawiatury), z którego został uruchomiony Aby przekierować strumień wyjścia do pliku, należy użyć znaków program >lub1> jeżeli chcemy stworzyć dany plik lub zastąpić plik Aby przekierować plik do strumienia wejścia, należy użyć znaku< danymi ze strumienia >>lub1>> jeżeli chcemy dopisać dane na końcu pliku Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 5/17 Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 6/17 Standardowy strumień błędów (stderr) Przykład (stdout) Standardowy strumień błędów echo To jest plik testowy > plik1.txt echo A to kolejny wiersz >> plik1.txt Standardowy strumień błędów wykorzystujemy do wyświetlania komunikatów o błędach echo A to juz trzeci wiersz >> plik1.txt Jest niezależny od strumienia wyjścia more plik1.txt Strumienia ma umożliwić zobaczenie błędu nawet wtedy, gdy type plik1.txt | sort | more strumień wyjścia jest przekierowany sort < plik1.txt Gdy strumienie wyjścia i błędów mają ten sam cel (np. type plik1.txt > plik2.txt terminal) to są wyświetlane w takiej kolejności, w jakiej wypisuje je program type * > all.txt Aby przekierować strumień błędu do pliku, należy użyć znaku2> type * > all.txt 2> errors.txt lub odpowiednio2>> Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 7/17 Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 8/17 Urządzenia specjalneconinul Przykładowy potok con Urządzenieconjest symbolem konsoli perl splitter.pl -crp germanbig.txt -lem lemDE.txt Jeśli czytamy zcon, to czytami z klawiatury nul | perl lemmatize.pl -lem lemDE.txt type con >plik.txt(Należy naciśnącCtrl+Zi następnie | perl cleanpos.pl -mapping german.map | perl Enter, żeby przerwać wczytywanie z klawiatury) substsegments.pl -segs segments.txt -map subst.map Możemy też zapisywać informacje docon, ale jest to często >germanlemmatized.txt zachowaniem standardowym poleceń type reconstructed*.txt | perl findphrases.pl -list nul pattern.txt -mode long | perl substbynormal.pl Wszystkie dane wysłane donulpo prostu znikają, stąd nazwa -normalpl polishnormalized.txt -normalen czarna dziura englishnormalized.txt | perl uniquecps.pl | perl Wycisza strumienie wyjściowe, np. wyjście błędów pairstodb.pl dir jakaśbzdura 2>nul Można również czytać informacje znul type nul Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 9/17 Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 10/17 Programy wsadowe Prosty przykład Program wsadowy to w systemach MS-DOS lub Windows plik tekstowy Tworzymy plik tekstowy o nazwiewindows.bati wpisujemy: zawierający serię poleceń, które ma wykonać interpreter komend (np. kasowanie, kopiowanie, uruchamianie) @echo off Kiedy program wsadowy zostanie uruchomiony, interpreter echo Uwaga, zaraż wyświetlę zawartość C:\Windows czyta plik i uruchamia kolejno zapisane w nim programy. dir /B C:\Windows | sort /R | more Programy wsadowe systemu MS-DOS posiadają rozszerzenia echo Katalog został wyświetlony .BAT lub .CMD Umożliwiają automatyzację często powtarzających się lub złożonych poleceń Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 11/17 Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 12/17 Zmienne i parametry Sprawdzanie warunków Zmienne istotnie zwiększają funkcjonalność każdego języka skryptowego Polecenieifpozwala na sprawdzanie warunków logicznych na poziomie wiersza poleceń. Jednak najbardziej przydatne jest w Proszę sprawdzić działanie pliku wsadowego o następującej treści: plikach wsadowych @echo off if [not] ciąg1==ciąg2 (polecenie) [else (polecenie)] set var=test 1 2 3 if [not] exist plik (polecenie) [else (polecenie)] echo Wartość zmiennej to "%var%" Następnie zmodyfikować do tej postaci: Przykład:@echo off @echo off if "%1"=="" (set kat=konsola) else (set kat=%1) set var=%1 if not exist %kat% (md %kat%) else (dir %kat%) echo Wartość zmiennej to "%var%" Wykonać plik wsadowy w nast. sposób:test.bat małytest Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 13/17 Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 14/17 Skoki i etykiety Pętle Poleceniegoto etykietapozwala na przeskok miejsca w pliku wsadowym, gdzie znajduje się etykieta. Polecenieforsłuży do powtarzania jednego polecenia dla każdego pliku z pewnego zbioru plików lub dla każdej wartości z pewnego Przykład: zbioru wartości. @echo off for %[%]i in (zbiór) do polecenie if "%1"=="" goto error echo Podałeś wartość "%1" Uwaga echo Uratowałeś świat Jeśli korzystamy z pętli z poziomu wiersza poleceń zmienną goto koniec oznaczamy standardowo np.%i, w pliku wsadowym natomiast%%i :error Przykłady (w pliku wsadowym): echo Błąd! Nie podałeś strasznie ważnego parametru! for %%i in (*.txt *.html) do copy %%i %%i.bak echo Więc teraz komputer wybuchnie for %%i in (a b c d e f) do echo Wypisz literę "%%i" for /L %%i (1,2,13) do echo Plik nr %%1 > plik%%1.txt :koniec echo Przeskoczyłem na koniec Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 15/17 Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 16/17 Ostatni przykład - składamy wszystko w całość set USER=%1% set N=%2% if "%USER%"=="" goto error if "%N%"=="" goto error cd "C:\Documents and settings\%USER%\Pulpit" if exist konsola (del /S /Q konsola\*) else md konsola for /L %%i in (1 1 %N%) do echo Plik %%i 1>konsola/plik%%i.txt goto koniec :error echo Nie podałes uzytkownika lub liczby plików :koniec Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 17/17