Zrozumienie potoków i przekierowań dla wiersza poleceń systemu Linux

Dwie potężne funkcje powłoki wiersza poleceń Linuksa to przekierowanie i potoki, których można użyć do wysłania danych wyjściowych (lub nawet danych wejściowych) programu do pliku lub do innego programu. Być może korzystałeś już wcześniej z tych funkcji, nie będąc o nich świadomym. Ilekroć znak „>” w poleceniu lub „|” użyto dywersji lub rury.

We wszystkich uniksopodobnych systemach operacyjnych, takich jak Linux i FreeBSD, wyjście programu wiersza poleceń automatycznie trafia do lokalizacji znanej jako standardowe wyjście (stdout). Domyślnie standardowym wyjściem jest ekran (konsola), ale można je zmienić za pomocą potoków i przekierowania. Klawiatura jest również uważana za standardowe wejście (stdin) i może być zmieniana jak standardowe wyjście.

Indeks

Rura

Potoki umożliwiają przekierowanie danych wyjściowych z jednego polecenia do drugiego, gdzie będzie on używany jako dane wejściowe. Innymi słowy, standardowe wyjście jednego programu staje się standardowym wejściem innego.

Polecenie "więcej" pobiera standardowe wejście, a stronę na standardowe wyjście (ekran). Oznacza to, że gdy polecenie pokazuje więcej informacji niż można wyświetlić na jednym ekranie, program „plus” zatrzymuje się po pierwszym pełnym ekranie (stronie) i czeka, aż użytkownik naciśnie spację, aby wyświetlić następną stronę lub ENTER, aby zobacz następną stronę Wiersz.

Oto przykład, który wyświetla listę wszystkich plików ze szczegółami (-la) w katalogu / dev i przekierowuje dane wyjściowe do innych. Katalog / dev powinien zawierać dziesiątki plików, co zapewnia, że ​​wymagane jest więcej stronicowania.

ls -la /dev | más

Zwróć uwagę na komunikat -Inne- na dole ekranu. Naciśnij spację, aby wyświetlić następną stronę i przytrzymaj spację, aż wyjście się zakończy.

Oto kolejny przykład potoku, tym razem przy użyciu narzędzia wc (liczba słów).

ls -1 /dev | wc

wc zlicza liczbę linii, słów i znaków w standardowym wejściu. Użycie parametru -l pokazuje tylko liczbę linii, co jest dobrym sposobem sprawdzenia, ile plików znajduje się w katalogu.

Samouczek Zanurz się w archiwum Linuksa i skompresuj polecenia ma przykład użycia razem tar i 7-Zip:

tar cvf - * | 7zr a -si somefiles.tar.7z

W tym przypadku myślnik po opcji f mówi tarowi, aby wysłał swoje wyjście na standardowe wyjście, a nie do pliku. Wyjście tar przechodzi przez potok z 7zr, który czeka na standardowe wejście dzięki opcji -si.

Przekierowanie

Przekierowanie jest podobne do przekierowania potoków, z wyjątkiem tego, że pliki są używane zamiast innego programu. Standardowym wyjściem programu jest ekran. Za pomocą symbolu > (większy niż) możesz wysłać wyjście programu do pliku. Oto kolejna lista katalogów z / dev, ale tym razem przekierowana do pliku o nazwie listing.txt

ls -la> listado.txt

Nic nie jest wyświetlane w terminalu, ponieważ wszystko zostało wysłane do pliku. Możesz wyświetlić plik za pomocą polecenia cat (które można wprowadzić w więcej) lub, dla uproszczenia, użyj samego polecenia more:

más listing.txt

Jeśli plik listing.txt już istniał, zostanie nadpisany. Możesz jednak użyć >>>, aby dodać do istniejącego pliku w następujący sposób:

ls -la /home> listing.txt
ls -la /dev>> listing.txt

Pierwsze przekierowanie nadpisuje plik list.txt, podczas gdy drugie go dodaje.

Komendy cat można użyć do stworzenia pliku z przekierowaniem, na przykład:

 cat> atextfile.txt

Teraz wprowadzony tekst zostanie wysłany do pliku atextfile.txt, dopóki nie naciśniesz Ctrl-D. W tym momencie plik zostanie zamknięty i wrócisz do wiersza poleceń. Jeśli chcesz dodać więcej tekstu do pliku, użyj tego samego polecenia, ale z dwoma znakami większymi niż (>>).

Wniosek

Wiele narzędzi wiersza poleceń Linuksa jest zaprojektowanych do pracy z przekierowaniami i potokami, eksperymentowania z nimi i sprawdzania ich interakcji. Na przykład dane wyjściowe polecenia ps, zawierające listę bieżących procesów, można przekierować do grep. Sprawdź, czy możesz dowiedzieć się, jak wyświetlić listę procesów, których właścicielem jest root.

Możesz być zainteresowany

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.

Go up