Logo


Kurs programowania w Bash'u

Nowości       Porady      

Przekierowania (redirekcja)

Wyniki działań większości poleceń wysyłane są bezpośrednio na ekran monitora. Jednak często zdarza się że chcielibyśmy zapisać je w postaci pliku. Tutaj z pomocą przychodzą przekierowania strumieni.

Przykładowo chcąc zapisać listę plików wyświetlaną poleceniem ls do pliku zrobilibyśmy następująco:

ls > plik

Jeśli taki plik już istniał zostanie nadpisany, czyli stara zawartość zginie i zostanie zastąpiona nową. Jeżeli nie było pliku o tej nazwie zostanie on utworzony.

Dopisanie do pliku bez usuwania starej zawartości odbywa się za pomocą dwóch strzałek:

ls >> plik

Często zdarza się że chcemy zapisać komunikaty błędów. W tym wypadku musimy odebrać dane ze strumienia błędów. Robimy to pisząc 2> jako znak przekierowania:

sl 2> plik

Ponieważ polecenia sl nie ma w systemie - do pliku zostanie zapisany komunikat błędu

Jeżeli chcemy szybko zapisać jakiś wyraz do pliku, wcale nie musimy otwierać żadnego edytora tekstu. Wystarczy zrobić przekierowanie polecenia echo:


echo "Jakiś napis" > plik

A co w przypadku gdy jednocześnie chcemy wysłać dane na ekran oraz do pliku? Tu z pomocą przychodzi nam programik o nazwie tee, który wstawiony w potok za naszym poleceniem wysyła dane jednocześnie na ekran i na twardy dysk. Robi się to następująco:

ls | tee plik

Proste prawda?

Teraz pokażę jak połączyć wiele plików w jeden za pomocą polecenia cat i oczywiście przekierowań.
Polecenie cat wyświetla zawartość pliku (lub kilku).

cat plik1 plik2 > plik3

W ten prosty sposób dane z obydwu plików znalazły się w postaci jednego dużego pliku.

Co więcej - możemy nawet dokonać podobnej czynności z wszystkimi plikami w bieżącym katalogu stosując zamiast nazwy pliku gwiazdkę:

cat * > wszystkie

Istnieje również mechanizm wczytania danych za pomocą odwrotnego przekierowania. Bliżej poznamy go w następnych rozdziałach. Teraz dam tylkko krótki przykład jak można za jego pomocą pobrać tekst z pliku i wysłać do pocztą elektroniczną:

mail adres@wp.pl < plik_z_wiadomoscia

Dla uściślenia dodam jak nazywają sie kierunki strumieni danych:

stdin - wejście
stdout - wyjście podstawowe
stderr - wyjście diagnostyczne

Ostatnio dodano

O stronie

Stronę najlepiej oglądać w rozdzielczości 1024x768. Strona optymalizowana dla przeglądarki Mozilla.

Prośba

Jeśli chciałbyś coś zmienić lub uważasz że czegoś brakuje pisz. Odpiszę na każdy list.

Subskrypcja

Jeśli chcesz być informowany o nowościach na stronie wpisz tu swój e-mail i kliknij Wyślij.

O mnie

O autorze
Autorem kursu jest Mariusz Majerowski
Ostatnia aktualizacja: 23 VI 2004.