Polecenia rm
i rmdir
służą do usuwania plików i katalogów w systemach Linux, macOS oraz innych systemach operacyjnych typu Unix. Są one podobne do poleceń del
i deltree
w systemach Windows i DOS. Te polecenia są bardzo potężne i oferują wiele opcji.
Warto pamiętać, że pliki i katalogi usunięte za pomocą rm
i rmdir
nie trafiają do Kosza. Zostają natychmiast usunięte z komputera. W przypadku przypadkowego usunięcia plików, jedynym sposobem na ich przywrócenie jest posiadanie kopii zapasowej.
Jak usunąć pliki za pomocą rm
Najprostszym przypadkiem jest usunięcie pojedynczego pliku z bieżącego katalogu. Wpisz polecenie rm
, spację, a następnie nazwę pliku, który chcesz usunąć:
rm file_1.txt
Jeśli plik nie znajduje się w bieżącym katalogu roboczym, podaj ścieżkę do lokalizacji pliku:
rm ./path/to/the/file/file_1.txt
Możesz także przekazać więcej niż jedną nazwę pliku do rm
, co spowoduje usunięcie wszystkich wskazanych plików:
rm file_2.txt file_3.txt
Do wybierania grup plików do usunięcia można używać symboli wieloznacznych. Symbol *
reprezentuje wiele znaków, a znak ?
reprezentuje pojedynczy znak. Na przykład, to polecenie usunie wszystkie pliki obrazów PNG w bieżącym katalogu roboczym:
rm *.png
To polecenie usunie wszystkie pliki, które mają rozszerzenie składające się z jednego znaku. Na przykład, spowoduje to usunięcie Plik.1
i Plik.2
, ale nie Plik.12
:
rm *.?
Jeśli plik jest chroniony przed zapisem, wyświetli się monit przed jego usunięciem. Musisz odpowiedzieć t
(tak) lub n
(nie) i nacisnąć „Enter”.
Aby zredukować ryzyko użycia rm
z symbolami wieloznacznymi, użyj opcji -i
(interaktywna). Wymaga to potwierdzenia usunięcia każdego pliku:
rm -i *.dat
Opcja -f
(siła) jest przeciwieństwem interakcji. Nie wyświetla monitu o potwierdzenie, nawet jeśli pliki są chronione przed zapisem:
rm -f filename
Jak usunąć katalogi za pomocą rm
Aby usunąć pusty katalog, użyj opcji -d
(katalog). Można używać symboli wieloznacznych (*
i ?
) w nazwach katalogów, tak samo jak w nazwach plików:
rm -d directory
Podanie więcej niż jednej nazwy katalogu spowoduje usunięcie wszystkich wskazanych pustych katalogów:
rm -d directory1 directory2 /path/to/directory3
Aby usunąć katalogi, które nie są puste, użyj opcji -r
(rekurencyjna). To polecenie usuwa katalogi oraz wszystkie znajdujące się w nich pliki i podkatalogi:
rm -r directory1 directory2 directory3
Jeśli katalog lub plik jest chroniony przed zapisem, wyświetli się monit o potwierdzenie usunięcia. Aby usunąć katalogi, które nie są puste, pomijając te monity, użyj opcji -r
(rekurencja) oraz -f
(wymuszenie):
rm -rf directory
W tym przypadku wymagana jest ostrożność. Pomyłka w poleceniu rm -rf
może spowodować utratę danych lub nieprawidłowe działanie systemu. To niebezpieczne, dlatego zawsze warto zachować ostrożność. Aby zrozumieć strukturę katalogów i pliki, które zostaną usunięte przez polecenie rm -rf
, użyj polecenia tree
.
Aby zainstalować ten pakiet w systemie Ubuntu lub innej dystrybucji opartej na Debianie, użyj polecenia:
sudo apt-get install tree
Uruchomienie polecenia tree
generuje prosty do zrozumienia diagram struktury katalogów i plików w katalogu, z którego jest uruchamiane:
tree
Możesz także podać ścieżkę do polecenia tree
, aby uruchomić je w innym katalogu w systemie plików:
tree path/to/directory
Polecenie rm
ma również opcje --one-file-system
, --no-preserve-root
oraz --preserve-root
, jednak są one zalecane jedynie dla zaawansowanych użytkowników. W przypadku błędu możesz przypadkowo usunąć wszystkie pliki systemowe. Zachęcam do zapoznania się z dokumentacją polecenia strona podręcznika w celu uzyskania dodatkowych informacji.
Jak usunąć katalogi za pomocą rmdir
Istnieje inne polecenie, rmdir
, które służy do usuwania katalogów. Różnica między rm
a rmdir
polega na tym, że rmdir
może usuwać tylko puste katalogi. Nigdy nie usunie plików.
Najprostszym przypadkiem jest usunięcie pojedynczego pustego katalogu. Podobnie jak w przypadku rm
, możesz przekazać wiele nazw katalogów do rmdir
lub ścieżkę do katalogu:
rmdir directory
Możesz usunąć wiele katalogów, przekazując listę nazw do rmdir
:
rmdir directory1 directory2 directory3
Aby usunąć katalog spoza bieżącego katalogu, określ pełną ścieżkę do tego katalogu:
rmdir /path/to/directory
Jeśli spróbujesz usunąć folder, który nie jest pusty, rmdir
wyświetli komunikat o błędzie. Na przykład, jeśli rmdir
pomyślnie usuwa katalog klienci
, ale odmawia usunięcia katalogu projekty
z powodu zawartości, katalog projekty
pozostaje nienaruszony:
Gdy rmdir
napotka błąd „Katalog nie jest pusty”, przestaje przetwarzać katalogi, które zostały do niego przekazane w wierszu poleceń. Jeśli poprosisz o usunięcie czterech katalogów, a pierwszy z nich zawiera pliki, rmdir
wyświetli komunikat o błędzie i nie wykona dalszych działań. Możesz zmusić go do ignorowania tych błędów za pomocą opcji --ignore-fail-on-non-empty
, aby przetwarzane były inne katalogi:
rmdir --ignore-fail-on-non-empty work/reports work/quotes
Możesz użyć opcji -p
(rodzice), aby usunąć katalog, a także jego katalogi nadrzędne. Ta metoda działa, ponieważ rmdir
uruchamia się w katalogu docelowym, a następnie wykonuje kroki wstecz do nadrzędnego. Katalog powinien być pusty, aby mógł zostać usunięty przez rmdir
:
rmdir -p work/invoices
Na żądanie usuwane są zarówno faktury, jak i katalogi pracy.
Niezależnie od tego, czy używasz powłoki Bash, czy innej, Linux zapewnia elastyczne i wydajne polecenia do usuwania katalogów i plików bezpośrednio z wiersza poleceń terminala. Niektórzy użytkownicy preferują pracę w terminalu, podczas gdy inni mogą być zmuszeni do korzystania z tego sposobu z powodu braku GUI na serwerach, takich jak Raspberry Pi. Te polecenia są szczególnie przydatne dla tej grupy użytkowników.
Bez względu na to, jak preferujesz pracować, polecenia te doskonale nadają się do wykorzystania w skryptach powłoki. Jeśli skrypt jest uruchamiany przez zadanie cron, może pomóc w automatyzacji rutynowych zadań porządkowych, takich jak czyszczenie niechcianych plików dziennika. W przypadku korzystania z tych poleceń zawsze pamiętaj o ich mocy, dokładnie przetestuj wszystkie skrypty i utrzymuj aktualną kopię zapasową danych.
newsblog.pl