rm

Usuwa pliki i katalogi.

rm (od remove) to podstawowe narzędzie do kasowania plików i katalogów w systemach uniksowych. Działa nieodwracalnie — w terminalu nie ma kosza, więc to, co skasujesz przez rm, znika natychmiast i bez ostrzeżenia. Dlatego warto poznać jego flagi zanim narobisz sobie szkód.

Składnia i najważniejsze opcje

Podstawowa forma wygląda tak: rm [OPCJE] PLIK...

  • -r (lub -R) — usuwa katalogi rekurencyjnie, razem z całą zawartością. Bez tej flagi rm nie tknie katalogu.
  • -fforce: nie pyta o potwierdzenie, ignoruje nieistniejące pliki i nie zgłasza błędów. Wygodne w skryptach, ale właśnie przez to niebezpieczne.
  • -i — pyta o potwierdzenie przed usunięciem każdego pliku. Dobry nawyk przy ryzykownych operacjach.
  • -I — (GNU/Linux) pyta raz, gdy kasujesz więcej niż trzy pliki lub usuwasz rekurencyjnie. Mniej upierdliwe niż -i.
  • -d — usuwa puste katalogi (alternatywa dla rmdir).
  • -vverbose: wypisuje, co właśnie skasował.
  • -- — kończy listę opcji; przydaje się, gdy nazwa pliku zaczyna się od myślnika, np. rm -- -plik.

Przykłady użycia

  • rm plik.txt — usuwa pojedynczy plik z bieżącego katalogu.
  • rm -i *.log — kasuje wszystkie pliki .log, pytając o każdy z osobna.
  • rm -r stary_projekt/ — usuwa katalog stary_projekt wraz z całą zawartością.
  • rm -rf node_modules/ — bezlitośnie wyrzuca cały folder bez pytań. Klasyk z życia dewelopera.
  • rm -v plik1 plik2 plik3 — usuwa kilka plików naraz i pokazuje, co poszło do piachu.

Częste błędy i pułapki

Najgroźniejsza kombinacja to rm -rf z błędną ścieżką. Słynne rm -rf / potrafi wyczyścić cały system (nowsze GNU coreutils blokują to przez --no-preserve-root, ale nie licz na to). Uważaj na spacje: rm -rf / tmp/cache zamiast /tmp/cache to dwa zupełnie różne polecenia — pierwsze próbuje skasować /.

Różnice między systemami: na Linuksie (GNU) masz długie opcje typu --recursive czy -I, a na macOS i BSD ich nie znajdziesz — tam działają tylko krótkie flagi, a do bezpiecznego nadpisywania służy -P. Pamiętaj też, że globowanie (*) rozwija powłoka, nie rm — zanim wciśniesz Enter przy rm *, sprawdź najpierw ls *.

Powiązane komendy: rmdir (puste katalogi), unlink (jeden plik), trash (kasowanie do kosza), shred (bezpieczne nadpisywanie) oraz find ... -delete do masowego usuwania według kryteriów.