Przekierowanie strumienia danych w BASH-u

Stronę tą wyświetlono już: 178 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:

Listing 1
  1. echo "Tekst do zapisania w pliku" > "nazwa pliku.txt";
  2. echo "Odczyt danych z pliku:";
  3. echo $(cat "nazwa pliku.txt");
  4. echo "Kolejny tekst do zapisania w pliku" > "nazwa pliku.txt";
  5. echo "Odczyt danych z pliku:";
  6. 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:

Listing 2
  1. echo "Tekst do zapisania w pliku" >> "nazwa pliku.txt";
  2. echo "Kolejny tekst do zapisania w pliku" >> "nazwa pliku.txt";
  3. echo "Odczyt danych z pliku:";
  4. 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

Listing 3
  1. 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.

Komentarze