Jak usunąć pliki i katalogi w terminalu Linux

Polecenia rm i rmdir usuwają pliki i katalogi w systemach Linux, macOS i innych systemach operacyjnych typu Unix. Są podobne do poleceń del i deltree w Windows i DOS. Te polecenia są bardzo potężne i mają sporo opcji.

Należy pamiętać, że pliki i katalogi usunięte przy użyciu rm i rmdir nie są przenoszone do Kosza. Są natychmiast usuwane z komputera. Jeśli przypadkowo usuniesz pliki za pomocą tych poleceń, jedynym sposobem na ich przywrócenie jest kopia zapasowa.

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 pliku nie ma w bieżącym katalogu roboczym, podaj ścieżkę do lokalizacji pliku.

rm ./path/to/the/file/file_1.txt

Możesz przekazać więcej niż jedną nazwę pliku do rm. Spowoduje to usunięcie wszystkich określonych plików.

rm file_2.txt file_3.txt

Do wybierania grup plików do usunięcia można używać symboli wieloznacznych. * Reprezentuje wiele znaków, a znak? reprezentuje pojedynczy znak. To polecenie usunie wszystkie pliki obrazów png w bieżącym katalogu roboczym.

rm *.png

To polecenie usunie wszystkie pliki, które mają rozszerzenie 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, zostanie wyświetlony monit przed usunięciem pliku. Musisz odpowiedzieć t lub ni i nacisnąć „Enter”.

Aby zmniejszyć ryzyko używania rm z symbolami wieloznacznymi, użyj opcji -i (interaktywna). Wymaga to potwierdzenia usunięcia każdego pliku.

rm -i *.dat

rm w trybie interaktywnym

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żesz 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 powoduje usunięcie wszystkich określonych pustych katalogów.

rm -d directory1 directory2 /path/to/directory3

Aby usunąć katalogi, które nie są puste, użyj opcji -r (rekurencyjna). Żeby było jasne, usuwa to katalogi i wszystkie zawarte w nich pliki i podkatalogi.

rm -r directory1 directory2 directory3

Jeśli katalog lub plik jest chroniony przed zapisem, zostanie wyświetlony monit o potwierdzenie usunięcia. Aby usunąć katalogi, które nie są puste i pominąć te monity, użyj razem opcji -r (rekurencja) i -f (wymuszenie).

rm -rf directory

Tutaj wymagana jest ostrożność. Pomyłka w poleceniu rm -rf może spowodować utratę danych lub nieprawidłowe działanie systemu. To niebezpieczne, a ostrożność to najlepsza zasada. Aby zrozumieć strukturę katalogów i pliki, które zostaną usunięte przez polecenie rm -rf, użyj polecenia tree.

Użyj apt-get, aby zainstalować ten pakiet w swoim systemie, jeśli używasz Ubuntu lub innej dystrybucji opartej na Debianie. W innych dystrybucjach Linuksa użyj zamiast tego narzędzia do zarządzania pakietami dystrybucji Linuksa.

sudo apt-get install tree

Uruchomienie polecenia tree tworzy prosty do zrozumienia diagram struktury katalogów i plików poniżej katalogu, z którego jest uruchamiany.

tree

dane wyjściowe z polecenia drzewa

Możesz także podać ścieżkę do polecenia tree, aby uruchomić drzewo z innego katalogu w systemie plików.

tree path/to/directory

Polecenie rm ma również opcje –one-file-system, –no-preserve-root, –preserve-root, ale są one zalecane tylko dla zaawansowanych użytkowników. Jeśli coś się nie powiedzie, możesz przypadkowo usunąć wszystkie pliki systemowe. Zapoznaj się z poleceniem strona podręcznika po więcej informacji.

Jak usunąć katalogi za pomocą rmdir

Istnieje inne polecenie o nazwie rmdir, którego możesz użyć do usunięcia katalogów. Różnica między rm i 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.

Usuń pojedynczy katalog z bieżącego katalogu, przekazując jego nazwę do rmdir:

rmdir directory

Usuń wiele katalogów, przekazując listę nazw do rmdir:

rmdir directory1 directory2 directory3

Usuń katalog spoza bieżącego katalogu, określając 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. W poniższym przykładzie rmdir pomyślnie i po cichu usuwa katalog klientów, ale odmawia usunięcia katalogu projektów, ponieważ zawiera pliki. Katalog projektów pozostaje dokładnie taki, jaki był, a znajdujące się w nim pliki pozostają nietknięte.

rmdir polecenie z niepustym folderem

Gdy rmdir podaje błąd „Katalog nie jest pusty”, przestaje przetwarzać katalogi, które zostały do ​​niego przekazane w wierszu poleceń. Jeśli poprosiłeś o usunięcie czterech katalogów, a pierwszy zawierał pliki, rmdir wyświetli komunikat o błędzie i nie zrobi nic więcej. Możesz zmusić go do ignorowania tych błędów za pomocą opcji –ignore-fail-on-niepuste, aby przetwarzane były inne katalogi.

W poniższym przykładzie dwa foldery zostały przekazane do rmdir, są to praca / raporty i praca / oferty. Polecenie zawiera opcję –ignore-fail-on-non-empty. Folder praca / raporty zawiera pliki, więc rmdir nie może go usunąć. Opcja –ignore-fail-on-non-empty zmusza rmdir do zignorowania błędu i przejścia do następnego folderu, który musi przetworzyć, czyli work / quotes. To jest pusty folder i rmdir go usuwa.

To była zastosowana komenda.

rmdir --ignore-fail-on-non-empty work/reports /work/quotes

rmdir z opcją --ignore-fail-on-niepustą

Możesz użyć opcji -p (rodzice), aby usunąć katalog, a także jego katalogi nadrzędne. Ta sztuczka działa, ponieważ rmdir uruchamia się w katalogu docelowym, a następnie wykonuje kroki wstecz do nadrzędnego. Ten katalog powinien być teraz pusty, aby mógł zostać usunięty przez rmdir, a proces powtarza kroki w górę ścieżki, która została dostarczona do rmdir.

W poniższym przykładzie komenda przekazywana do rmdir to:

rmdir -p work/invoices

polecenie rmdir z opcją usuwania rodziców

Na żądanie usuwane są zarówno faktury, jak i katalogi pracy.

Niezależnie od tego, czy używasz Bash, czy jakiejkolwiek innej powłoki, Linux zapewnia elastyczne i wydajne polecenia do usuwania katalogów i plików bezpośrednio z wiersza poleceń terminala. Niektórzy ludzie wolą mieć przepływ pracy, który obraca się wokół terminala. Inni mogą nie mieć wyboru w tej sprawie. Mogą pracować na serwerach bez zainstalowanego GUI lub w sesji zdalnej w systemie bezgłowym, takim jak Raspberry Pi. Te polecenia są idealne dla tej grupy ludzi.

Ale niezależnie od preferowanego typu przepływu pracy, polecenia te bardzo dobrze nadają się do włączenia do skryptów powłoki. Jeśli skrypt jest uruchamiany przez zadanie cron, może pomóc zautomatyzować rutynowe zadania porządkowe, takie jak czyszczenie niechcianych plików dziennika. Jeśli zbadasz ten przypadek użycia, pamiętaj o mocy tych poleceń, przetestuj wszystko dokładnie i zawsze utrzymuj aktualną kopię zapasową.