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!

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:

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

  1. Stwórz skrypt stats.sh który pokazuje:
    • ile czasu działa komputer (uptime)
    • ile masz RAMu wolnego (free -h)
    • ile procesów działa (ps aux | wc -l)
  2. Dodaj go do .bashrc żeby uruchamiał się przy starcie terminala
  3. Uruchom info.sh i sprawdź ile linii kodu ma Twoja gra!