|
Artykuł ten wyjaśni, czym są potoki (piping i redirection), które
występują w systemie DOS i które w erze Windowsów są niestety niedoceniane.
1) Wstęp.
Większość urządzeń w komputerze oraz porty wejścia/wyjścia posiadają z góry
zdefiniowaną nazwę. Łącza szeregowe to COM1 i COM2, porty równoległe to LPT1 i
LPT2, natomiast klawiatura to CON:. Istnieją również specjalne twory, takie jak
NUL, który w rzeczywistości oznacza NIC. Wszyscy przyzwyczailiśmy się, że
wyświetlanie plików odbywa się na ekranie, a pliki kopiuje się z dysku na dysk.
Jednak dzięki potokom możliwe jest wyświetlenie zawartości katalogu (komendą DIR)
wprost do pliku, a plik można skopiować do... drukarki.
2) Redirection (przekierowanie)
Standardowo wydanie komendy DIR spowoduje wyświetlenie zawartości dysku
(katalogu) na ekranie. Spróbujmy jednak użyć komendy:
DIR>C:\PLIK.TXT
Tym razem wydaje się, iż DIR nie zadziałał, ponieważ na ekranie nic się nie
pojawiło. Jednak to tylko pozory; po zaglądnięciu do pliku C:\PLIK.TXT (klawisz
F3 w Nortonie Commanderze lub za pomocą okienkowego Notatnika) okaże się, że
zawiera on to, co powinno wcześniej trafić na ekran, czyli zawartość katalogu. A
więc użycie tajemniczego znaczka ">"spowodowało skierowanie wyniku komendy DIR
wprost do pliku.
Na chwilę porzućmy temat potoków i skupmy się na urządzeniu o nazwie CON:, które
jest niczym innym jak klawiaturą. W większości przypadków kopiuje się dane z
pliku do pliku. Jednak możliwe jest również skopiowanie do pliku znaków
pobranych z klawiatury. Wydajmy więc polecenie:
COPY CON: PLIK.TXT
I co? Nic się nie dzieje? Napiszmy więc jakieś zdanie, np: "Ala ma kota".
Wciśnijmy teraz ENTER. Później znów napiszmy jakieś zdanie i ponownie wciśnijmy
ENTER. Na koniec należy wcisnąć kombinację klawiszy CTRL+Z i znów nacisnąć ENTER.
Komenda COPY zakończy swe działanie, a my wzbogacimy się o nowy plik (o nazwie
PLIK.TXT). Po zaglądnięciu do niego okaże się, iż zawiera on wpisane przez nas
zdania.
I znów powracamy do potoków. Poniższy przykład demonstruje, jak można za pomocą
przekierowania zwolnić użytkownika od konieczności potwierdzania niektórych
operacji. Do tego celu użyjemy komendy FORMAT, po użyciu której wymagane jest
wielokrotne potwierdzanie przeprowadzanych przez nią operacji (czy formatować?
czy nadać etykietę? czy formatować następną dyskietkę?).
W tym celu stwórzmy sobie plik o nazwie ANSWER.TXT (można to zrobić komendą 'COPY
CON: ANSWER.TXT'). Plik powinien zawierać dwa ENTERY, znak "N" oraz jeszcze
jeden ENTER. Teraz włóżmy do stacji dyskietkę, przeznaczoną do formatowania i
sformatujmy ją komendą:
FORMAT A:<ANSWER.TXT
Wow! Program poszedł jak burza. Żadnych uciążliwych pytań, żadnego
potwierdzania. Stało się to za sprawą przekierowania kilku znaków pobranych z
pliku, które i tak należałoby wpisać jako odpowiedzi dla komendy FORMAT. Jej
pierwsze pytanie zazwyczaj brzmi "Czy sformatować?" - użytkownik potwierdza
swoją decyzję wciskając ENTER, który w naszym przypadku został pobrany z pliku
ANSWER.TXT. Następne pytanie to "Jaką chcesz nadać etykietę?" - i tu najczęściej
wciska się ENTER. Ostatnim pytaniem jest "Czy formatujemy następną dyskietkę?" -
przeważnie odpowiadamy przecząco, wciskając klawisz 'N' i potwierdzając ENTER'em,
które to znaki są w naszym przykładzie pobrane z pliku. Rozwiązanie to jest na
tyle sprytne, że można się pokusić o stworzenie pliku wsadowego (*.BAT), który
zautomatyzuje formatowanie dyskietek (a może sformatujemy koledze twardziela?
;-) Przy okazji warto ukryć wyświetlane komunikaty, najlepiej wysyłając je do
urządzenia o nazwie NUL. Urządzenie to naprawdę nie istnieje i każda wysłana do
niego informacja bezpowrotnie przepada. A więc jeszcze jeden przykład
formatowania dyskietki, lecz tym razem zrobimy to szybciej i dyskretniej:
FORMAT A:/Q<ANSWER.TXT>NUL
Popularne przekierowanie za pomocą znaczka ">"ma jedną wadę - jeśli plik do
którego kierujemy dane istnieje, zostanie on najpierw usunięty a następnie
utworzony na nowo. Oto przykład:
DIR > PLIK.TXT
DIR > PLIK.TXT
Po podglądnięciu pliku PLIK.TXT okaże się, iż zawiera on wynik działania tylko
jednego DIR'a. Spróbujmy zamiast tego napisać:
DIR > PLIK.TXT
DIR >> PLIK.TXT
Tym razem plik wynikowy będzie zawierał wyniki działania obu komend - wszystko
dzięki znaczkowi ">>", który powoduje dopisanie wyniku do poprzedniej zawartości
pliku.
3) Piping (potokowe przetwarzanie informacji)
Piping umożliwia przesyłanie danych (wyników) z jednego do drugiego programu.
Takimi programami są najczęściej zewnętrzne polecenia DOS'a, które w
rzeczywistości są najzwyklejszymi programami, umieszczonymi w katalogu DOS.
Program SORT - zawarty w DOS'ie - umożliwia sortowanie wprowadzonych wierszy.
Najczęściej jest on używany z komendą DIR:
DIR|SORT
Kombinacja ta spowoduje pobranie z dysku listy plików i katalogów, a wynik trafi
nie na ekran, lecz do programu SORT, który ów listę posortuje alfabetycznie.
Dopiero teraz posortowana lista zostanie wyświetlona na ekranie. Inna często
stosowana kombinacja to:
TYPE PLIK|MORE
TYPE powoduje wyświetlenie zawartości pliku tekstowego na ekranie. Nie ma
problemu, jeśli zajmuje ona jeden ekran, jednak przy dużych plikach warto tę
zawartość zatrzymywać ekran po ekranie. W powyższym przykładzie program TYPE
próbuje wyświetlić zawartość PLIK'u na ekranie, która jednak jest przechwytywana
przez program MORE i dzielona przez niego na porcje. Teraz użytkownik może
podglądać pliki bez obawy, że ich zawartość przeleci po ekranie jak burza.
4) Kombinacje
Oczywiście można stosować kombinacje piping+redirection:
DIR|SORT>PLIK.TXT
Komenda spowoduje pobranie listy plików. która zostanie posortowana, a wynik
trafi do pliku o nazwie PLIK.TXT
5) Praktyczne przykłady
Windows 95 (tylko nowsze wersje) posiadają mechanizm skanowania dysku po
nieprawidłowym zamknięciu systemu i ponownym jego uruchomieniu. Posiadacze
starszych wersji tego systemu mogą zastosować poniższy trick:
- Należy za pomocą jakiegoś programu (np."95 Multi Booter") wyłączyć
automatyczne ładowanie okienek tak, aby system zatrzymywał się w wierszu
poleceń.
- W AUTOEXEC.BAT trzeba wpisać następujące linie:
IF exist c:\error.err scandisk c: /autofix
DIR > c:\error.err
WIN
DEL c:\error.err
Pomysł jest na tyle prymitywny, że można go stosować nie tylko do uruchamiania
Windowsów (również wersji 3.x), ale także DOS'owych programów, które zamykane
nieprawidłowo mogą szkodzić systemowi plików - w tym przypadku zamiast linijki z
wyrazem 'WIN' należy wpisać wywołanie danego programu np. NEOPAINT.EXE
Następny przykład pokazuje, jak łatwo można za pomocą DOS'a wyszukiwać w plikach
różne ciągi znaków. Załóżmy, że w pewnym katalogu posiadamy kilkaset plików
tekstowych. Zależy nam na znalezieniu tych plików, które zawierają w sobie wyraz
'Windows'. W tym celu najlepiej stworzyć plik SZUKAJ.BAT, w którym należy
umieścić następującą linijkę:
for %%f in (*.txt) do find "Windows" %%f >> wynik.doc
Uruchomienie pliku SZUKAJ.BAT spowoduje przeszukanie wszystkich plików
tekstowych z bieżącego katalogu, a linijki (i nazwy plików) zawierające wyraz
'Windows' zostaną zapisane w pliku WYNIK.DOC. Teraz wystarczy przejrzeć wynikowy
plik i po chwili będzie wiadomo, który plik nas interesuje. Dzięki takiemu
rozwiązaniu łatwo można policzyć, ile razy dany wyraz wystąpił w pliku.
6) To już koniec
Mam nadzieję, że artykuł ten przekonał niektórych użytkowników PC'ta, iż warto
poznać DOS'a. Może ten system jest już trochę przestarzały, jednak są sytuacje,
w których najłatwiejszym rozwiązaniem jest chwilowa ucieczka do starego,
poczciwego dziadka DOS'a.
Autorem tego artykułu jest MIGUEL
D.F.
|