Rozdział 5: Pipy i łączenie komend — supermoc terminala! 🔗

To jest rozdział, w którym terminal staje się naprawdę potężny!

Pipe | — łączenie komend

Pipe (ta pionowa kreska |, na klawiaturze zwykle Shift + backslash) bierze wynik jednej komendy i podaje go jako wejście do następnej.

Przykład — chcesz zobaczyć tylko pliki Pythona w szczegółach:

ls -la src/ | grep ".py"

Co się stało?

  1. ls -la src/ — wylistuj pliki w src ze szczegółami
  2. | — weź ten wynik i…
  3. grep ".py" — pokaż tylko linie zawierające “.py”

grep to Globally search a Regular Expression and Print — szuka tekstu. To jedna z najpotężniejszych komend w Linuksie!

grep — szukanie tekstu

grep "print" src/nyan_cat.py

Znajdzie wszystkie linie w pliku, które zawierają słowo “print”. Przydatne gdy masz duży plik i szukasz czegoś konkretnego!

Flagi grep:

grep -rn "nyan" .

To przeszuka WSZYSTKIE pliki w bieżącym folderze (i podfolderach) i pokaże gdzie jest słowo “nyan” z numerami linii!

Łańcuchy pipe’ów

Możesz łączyć wiele komend:

cat src/nyan_cat.py | grep -i "nyan" | wc -l
  1. Wyświetl plik
  2. Znajdź linie z “nyan” (ignoruj wielkość liter)
  3. Policz ile ich jest

To jak taśma produkcyjna w fabryce — każda komenda robi swoją część!

sort — sortowanie

echo "banan" > owoce.txt
echo "arbuz" >> owoce.txt
echo "cytryna" >> owoce.txt
echo "agrest" >> owoce.txt

cat owoce.txt | sort

Posortowało alfabetycznie! A odwrotnie?

cat owoce.txt | sort -r

-r = reverse.

uniq — unikalne linie

echo "kot" > zwierzaki.txt
echo "pies" >> zwierzaki.txt
echo "kot" >> zwierzaki.txt
echo "kot" >> zwierzaki.txt
echo "ryba" >> zwierzaki.txt

cat zwierzaki.txt | sort | uniq

sort sortuje (potrzebne, bo uniq usuwa tylko sąsiednie duplikaty), potem uniq zostawia unikalne.

Policzmy powtórzenia:

cat zwierzaki.txt | sort | uniq -c | sort -rn

Zobaczysz ile razy każde zwierzę się pojawia, posortowane od najczęstszego!

Sprzątanie plików testowych

rm owoce.txt zwierzaki.txt

Możesz podać wiele plików na raz do rm.

Przekierowania — podsumowanie

Stwórzmy plik z informacjami o systemie!

cd ~/projekty/nyan-cat-runner/docs

echo "=== INFORMACJE O MOIM SYSTEMIE ===" > system-info.txt
echo "" >> system-info.txt
echo "Data:" >> system-info.txt
date >> system-info.txt
echo "" >> system-info.txt
echo "System:" >> system-info.txt
uname -a >> system-info.txt
echo "" >> system-info.txt
echo "Dysk:" >> system-info.txt
df -h / >> system-info.txt
echo "" >> system-info.txt
echo "RAM:" >> system-info.txt
free -h >> system-info.txt

Nowe komendy!

Teraz zobaczmy efekt:

cat system-info.txt

Fajne, nie? Właśnie stworzyłaś raport o systemie jedną serią komend!

🏆 Wyzwanie

  1. Użyj grep żeby znaleźć słowo “Nyan” we wszystkich plikach projektu (grep -r "Nyan" ~/projekty/nyan-cat-runner/)
  2. Policz ile plików jest w projekcie: find ~/projekty/nyan-cat-runner -type f | wc -l
  3. Wylistuj wszystkie pliki posortowane po dacie modyfikacji: ls -lt ~/projekty/nyan-cat-runner/src/
  4. Stwórz plik docs/komendy-ktore-znam.txt i wpisz tam (echo >>) każdą komendę, którą znasz. Potem policz je!