Przekierowanie strumienia danych w BASH-u

Autor podstrony: Krzysztof Zajączkowski

Stronę tą wyświetlono już: 5571 razy

Standardowo dane zwracane przez dane polecenie w BASH-u jest wyświetlane w konsoli systemowej. Ten stan rzeczy można zmienić korzystając z odpowiedniego operatora przekierowania. Można przekierować dane np do pliku albo na wejście innego polecenia systemowego.

Przekierowanie danych do pliku

Istnieją dwa sposoby przekierowania danych do pliku, pierwszy z nich tworzy plik, a jeżeli ten istnieje nadpisuje go:

echo "Tekst do zapisania w pliku" > "nazwa pliku.txt"; echo "Odczyt danych z pliku:"; echo $(cat "nazwa pliku.txt"); echo "Kolejny tekst do zapisania w pliku" > "nazwa pliku.txt"; echo "Odczyt danych z pliku:"; echo $(cat "nazwa pliku.txt");

Wynik działania powyższego skryptu:

Odczyt danych z pliku:
Tekst do zapisania w pliku
Odczyt danych z pliku:
Kolejny tekst do zapisania w pliku

Operator > przekierowuje dane zwracane przez polecenie echo do pliku o nazwie nazwa pliku.txt, jeżeli taki plik już istnieje to zostaną z niego usunięte wszystkie wcześniej zapisane dane.

Druga możliwość pozwala dopisywać dane do pliku, jeżeli ten istnieje:

echo "Tekst do zapisania w pliku" >> "nazwa pliku.txt"; echo "Kolejny tekst do zapisania w pliku" >> "nazwa pliku.txt"; echo "Odczyt danych z pliku:"; echo $(cat "nazwa pliku.txt");

Tym razem wynik będzie następujący:

Odczyt danych z pliku:
Tekst do zapisania w pliku
Kolejny tekst do zapisania w pliku

Przekierowanie danych na wejście drugiego programu

history | grep ls;

Polecenie history wyświetla historię poleceń użytych w konsoli systemowej, ale ponieważ dane z tego polecenia są przekazywane na wejście polecenia grep, więc rezultatem będzie wyświetlenie tylko tych linii historii, gdzie występuje słowo ls.