Rozdział 15: Skrypty — automatyzacja jak pro 🤖
Czym jest skrypt?
Skrypt to po prostu plik z listą komend, które terminal wykonuje po kolei. Nasz run_game.sh to skrypt! Ale zróbmy coś bardziej zaawansowanego.
Skrypt aktualizacyjny
Stwórzmy skrypt, który aktualizuje system i nasz projekt:
nano ~/projekty/nyan-cat-runner/update.sh
#!/bin/bash
# Skrypt aktualizacyjny projektu
echo "📦 Aktualizacja systemu..."
sudo apt update && sudo apt upgrade -y
echo ""
echo "📁 Status projektu:"
cd ~/projekty/nyan-cat-runner
echo "Pliki w projekcie:"
find . -type f -not -path "./venv/*" | wc -l
echo ""
echo "Struktura:"
tree -I venv --dirsfirst
echo ""
echo "Rozmiar projektu:"
du -sh --exclude=venv .
echo ""
echo "Ostatnio modyfikowane pliki:"
find . -type f -not -path "./venv/*" -printf "%T@ %p\n" | sort -rn | head -5 | cut -d' ' -f2-
echo ""
echo "✅ Gotowe!"
Nowe komendy!
&&— uruchom drugą komendę TYLKO jeśli pierwsza się udała-y— automatycznie odpowiedz “tak” na pytaniadu -sh— rozmiar folderu (disk usage, summary, human-readable)find ... -printf— zaawansowane formatowanie wyniku findsort -rn— sortuj odwrotnie (-r) numerycznie (-n)cut -d' ' -f2-— wytnij tekst: delimiter=spacja, od pola 2 do końca
chmod +x ~/projekty/nyan-cat-runner/update.sh
./update.sh
Zmienne w skryptach
nano ~/projekty/nyan-cat-runner/info.sh
#!/bin/bash
# Zmienne
PROJECT_NAME="Nyan Cat Runner"
PROJECT_DIR=~/projekty/nyan-cat-runner
VERSION="0.4"
AUTHOR="[Twoje imię]"
# Użycie zmiennych
echo "==========================="
echo " $PROJECT_NAME v$VERSION"
echo " Autorka: $AUTHOR"
echo "==========================="
echo ""
# Policzmy różne rzeczy
PY_FILES=$(find "$PROJECT_DIR/src" -name "*.py" | wc -l)
TOTAL_LINES=$(find "$PROJECT_DIR/src" -name "*.py" -exec cat {} + | wc -l)
TOTAL_SIZE=$(du -sh "$PROJECT_DIR" --exclude=venv | cut -f1)
echo "📊 Statystyki projektu:"
echo " Pliki Pythona: $PY_FILES"
echo " Łączna liczba linii kodu: $TOTAL_LINES"
echo " Rozmiar projektu: $TOTAL_SIZE"
echo ""
echo "📝 Pliki kodu:"
find "$PROJECT_DIR/src" -name "*.py" -exec wc -l {} +
Nowa składnia:
$(komenda)— uruchom komendę i wstaw jej wynik. Np.PY_FILES=$(find ... | wc -l)— wstawia liczbę do zmiennej.-exec cat {} +— dla każdego znalezionego pliku uruchomcat.{}to placeholder na nazwę pliku.
chmod +x ~/projekty/nyan-cat-runner/info.sh
./info.sh
Automatyczne uruchamianie: crontab
cron to narzędzie do planowania zadań — jak budzik dla komend!
crontab -e
Jeśli pyta o edytor, wybierz nano (opcja 1).
Format: minuty godziny dzień miesiąc dzień_tygodnia komenda
Przykład — uruchom skrypt aktualizacji co niedzielę o 10:00:
0 10 * * 0 ~/projekty/nyan-cat-runner/update.sh
Na razie nie musisz tego robić — to na przyszłość! Naciśnij Ctrl+X bez zapisywania jeśli nie chcesz dodawać.
🏆 Wyzwanie
- Stwórz skrypt
stats.shktóry pokazuje:- ile czasu działa komputer (
uptime) - ile masz RAMu wolnego (
free -h) - ile procesów działa (
ps aux | wc -l)
- ile czasu działa komputer (
- Dodaj go do
.bashrcżeby uruchamiał się przy starcie terminala - Uruchom
info.shi sprawdź ile linii kodu ma Twoja gra!