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?
ls -la src/— wylistuj pliki w src ze szczegółami|— weź ten wynik i…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:
-i— ignoruj wielkość liter (ignore case)-n— pokaż numery linii-r— szukaj rekurencyjnie we wszystkich plikach
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
- Wyświetl plik
- Znajdź linie z “nyan” (ignoruj wielkość liter)
- 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
>— zapisz wynik do pliku (nadpisuje!)>>— dopisz wynik na koniec pliku|— przekaż wynik do następnej komendy<— weź dane z pliku (rzadziej używane)
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!
date— pokazuje datę i czasuname -a— informacje o systemie (all)df -h /— ile miejsca na dysku (human-readable, w GB/MB)free -h— ile RAMu
Teraz zobaczmy efekt:
cat system-info.txt
Fajne, nie? Właśnie stworzyłaś raport o systemie jedną serią komend!
🏆 Wyzwanie
- Użyj
grepżeby znaleźć słowo “Nyan” we wszystkich plikach projektu (grep -r "Nyan" ~/projekty/nyan-cat-runner/) - Policz ile plików jest w projekcie:
find ~/projekty/nyan-cat-runner -type f | wc -l - Wylistuj wszystkie pliki posortowane po dacie modyfikacji:
ls -lt ~/projekty/nyan-cat-runner/src/ - Stwórz plik
docs/komendy-ktore-znam.txti wpisz tam (echo >>) każdą komendę, którą znasz. Potem policz je!