Wyklad03 2008 handout


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


Wyszukiwarka