✓ ' — vvVA\i
Na przykład, w poleceniu:
wc raport* | sort -n
wyjście polecenia wc (w tym wypadku indywidualne i łączne liczby linii, słów i znaków) jest przesyłane na wejście polecenia sort, które sortuje je numerycznie (opcja -n). Ostatecznie na ekranie wyświetlane są liczby w rosnącej kolejności.
Wraz z potokiem można także używać kierowania strumieni:
wc raport* | sort -n > rap_liczby
To polecenie działa podobnie do poprzedniego, ale rezultat działania jest zapisywany do pliku rap__liczby, zamiast wyświetlenia na ekranie. W przykładzie tym wejście polecenia sort jest powiązane z poleceniem wc, natomiast wyjście jest powiązane z plikiem rapli-czby.
ŁĄCZENIE PLIKÓW i STANDARDOWEGO WEJŚCIA
Jak już widzieliśmy, wiele poleceń UNIX-a może używać zarówno wejścia standardowego, jak plików podanych jako argumenty w linii polecenia. Rozważmy trzy polecenia:
lp gulasz Polecenie otwiera plik gulasz
lp < gulasz Polecenie używa standardowego wejścia
cat gulasz | lp Polecenie używa standardowego wejścia
gulasz ^
lp otwiera gulasz
standardowe \ ip gulasz
lp < gulasz
lp
r-J gulasz \
IP
gulasz dołączony do wejścia lp
cat
cat otwiera gulasz
cat gulasz | lp
Potok łączy wyjście polecenia cat z wejściem Ip
Rysunek 12. Wejście polecenia lp.
Wszystkie trzy polecenia spowodują wydrukowanie pliku gulasz, ale każde działa nieco inaczej. Pierwsze otwiera plik gulasz i ignoruje wejście standardowe. Drugie powoduje, że powłoka otwiera plik gulasz, zaś lp używa standardowego wejścia. W trzecim przykładzie wyjście polecenia cat zostało połączone w potok z wejściem polecenia lp (patrz, Rysunek 12). Zwykle, jak w poprzednich przykładach, używane jest albo wejście standardowe, albo lista plików. Niektóre polecenia UNIX-a pozwalają jednak używać wspólnie obu tych metod. Pojedynczy myślnik (-) reprezentuje wejście standardowe w liście plików. Przypuśćmy, że wydaliśmy polecenie:
cat gig - gag < gob
Polecenie cat otworzy pliki gig i gag, natomiast powłoka otworzy plik gob i podstawi go jako drugi z trzech plików (patrz Rysunek 13). Nie jest to zbyt "życiowy" przykład, gdyż ten sam efekt można uzyskać znacznie prościej:
cat gig gob gag
Pojedynczy myślnik może być przydatny, jeśli chcesz połączyć w potok procesy, które otwierają pliki. Przypuśćmy na przykład, że chcemy wydrukować wszystkie trzy pliki gig, gob i gag. Następnie załóżmy, że chcemy, aby gag został posortowany przed wydrukiem, ale nie chcemy mieć dodatkowej (posortowanej) kopii pliku gag. Możemy to uzyskać poleceniem:
sort gag | lp gig - gob
Wyjście polecenia sort gag, czyli posortowana zawartość pliku gag, staje się wejściem standardowym polecenia lp. Myślnik informuje polecenie Ip, że drugim plikiem, który ma zostać wydrukowany jest standardowe wejście. Tak więc najpierw drukowany jest plik gig, następnie posortowana wersja pliku gag i na końcu plik gob. (Jeśli myślnik podano by jako pierwszy argument, to posortowany gag zostałby wydrukowany jako pierwszy.)
Nie wszystkie polecenia UNIX-a, które używają standardowego wejścia, w ten sposób interpretują myślnik w linii polecenia. Jeśli masz wątpliwości, jak dane polecenie rozpoznaje myślnik, to sprawdź to w rozdziale "Polecenia UNIX-a".
r-ł gob ^
cat
2
,..v.v.\v
. . .V,VAV,V.V
• V. V. WI
♦ I % Ą t t * * » V » ■
>v*y.v*r.v.v.'
»_■ < ► . v .V« »•♦ i «V
• ■ * ■ < • • *¥*•«« » * , « »
.» » ■.*•*■ * * » ♦ » • *.
cat otwiera gig i gag
gob dołączony do standardowego wejścia cat
standardowe
cat gig - gag <
• .■ mv,v.v .v.v *: • w. w *v*v
♦««.
v.v**
■ ♦ • * i
..v,v!r
•vv
•* «T
r a a * * "V«
v/.y .»»:*: */,*.*>
*•!■**"
'* »v»vj
V.*.V.\V
Rysunek 13. Łączenie listy plików z wejściem standardowym.
435