Rozdział 4: Kopiowanie, przenoszenie i sprzątanie 🧹

Kopiowanie: cp

cp to CoPy. Wróć do głównego folderu gry:

cd ~/projekty/nyan-cat-runner

Stwórzmy kopię zapasową README:

cp README.md README-backup.md

Sprawdź:

ls *.md

Hej, co to *? To wildcard (znak wieloznaczny)! Gwiazdka * oznacza “cokolwiek”. Więc *.md znaczy “wszystkie pliki kończące się na .md”. Wildcards to supermoc terminala!

Inne przykłady:

Kopiowanie folderu (z zawartością):

cp -r assets assets-backup

-r to recursive — “skopiuj folder i wszystko co jest w środku”. Bez -r terminal odmówi kopiowania folderu!

Przenoszenie: mv

mv to MoVe — przenoszenie. Ale to też komenda do zmiany nazwy!

Zmiana nazwy:

mv README-backup.md README.bak

Sprawdź — plik zmienił nazwę (bo “przeniesienie” w to samo miejsce z inną nazwą = zmiana nazwy).

Przenoszenie do innego folderu:

mv README.bak docs/

Teraz backup jest w folderze docs. Sprawdź:

ls docs/

Usuwanie: rm

rm to ReMove — usuwanie. UWAGA: terminal nie ma kosza! Usunięte pliki znikają na zawsze!

rm docs/README.bak

⚠️ MEGA WAŻNE: Nigdy, przenigdy nie wpisuj rm -rf / ani rm -rf ~. To usunie WSZYSTKO. Terminal nie pyta “czy jesteś pewna?”. Po prostu to robi. Bądź ostrożna z rm!

Usuwanie folderu:

rm -r assets-backup

Znów -r bo to folder. Możesz dodać -i żeby terminal pytał o każdy plik:

rm -ri jakis-folder/

-i = interactive — pyta przed usunięciem. Bezpieczniejsze!

Szukanie plików: find

find szuka plików w folderach:

find . -name "*.py"

Co to znaczy?

Więcej przykładów:

find . -type d              # znajdź tylko foldery (d = directory)
find . -type f              # znajdź tylko pliki (f = file)
find . -name "*.py" -type f # pliki Pythona

Sprawdź ile masz plików w projekcie:

find . -type f | wc -l

Whoa! Co to za |? To pipe (rura/potok)! Ale o tym w następnym rozdziale… 😏

🏆 Wyzwanie

  1. Stwórz plik src/test.py z tekstem print("test")
  2. Skopiuj go do src/test-backup.py
  3. Zmień nazwę src/test-backup.py na src/test-kopia.py
  4. Znajdź wszystkie pliki .py w projekcie (find)
  5. Usuń src/test.py i src/test-kopia.py (posprzątaj po sobie!)
  6. Sprawdź tree czy wszystko jest w porządku