Comenzile rm și rmdir șterg fișiere și directoare pe Linux, macOS și alte sisteme de operare asemănătoare Unix. Sunt similare cu comenzile del și deltree din Windows și DOS. Aceste comenzi sunt foarte puternice și au destul de multe opțiuni.
Este important să rețineți că fișierele și directoarele șterse folosind rm și rmdir nu sunt mutate în Coșul de gunoi. Acestea sunt imediat eliminate de pe computer. Dacă ștergeți accidental fișiere folosind aceste comenzi, singura modalitate prin care veți putea să le restaurați este dintr-o copie de rezervă.
Cuprins
Cum să eliminați fișierele cu rm
Cel mai simplu caz este ștergerea unui singur fișier din directorul curent. Tastați comanda rm, un spațiu și apoi numele fișierului pe care doriți să îl ștergeți.
rm file_1.txt
Dacă fișierul nu se află în directorul de lucru curent, furnizați o cale către locația fișierului.
rm ./path/to/the/file/file_1.txt
Puteți transmite mai mult de un nume de fișier către rm. Procedând astfel, se șterg toate fișierele specificate.
rm file_2.txt file_3.txt
Wildcard-urile pot fi folosite pentru a selecta grupuri de fișiere care urmează să fie șterse. * reprezintă mai multe caractere și ? reprezintă un singur caracter. Această comandă ar șterge toate fișierele imagine png din directorul de lucru curent.
rm *.png
Această comandă ar șterge toate fișierele care au o singură extensie de caracter. De exemplu, aceasta ar șterge File.1 și File.2, dar nu și File.12.
rm *.?
Dacă un fișier este protejat la scriere, vi se va cere înainte ca fișierul să fie șters. Trebuie să răspundeți cu y sau n și să apăsați „Enter”.
Pentru a reduce riscul de a utiliza rm cu metacaractere utilizați opțiunea -i (interactivă). Acest lucru necesită să confirmați ștergerea fiecărui fișier.
rm -i *.dat
Opțiunea -f (forță) este opusul interactiv. Nu solicită confirmare chiar dacă fișierele sunt protejate la scriere.
rm -f filename
Cum să eliminați directoare cu rm
Pentru a elimina un director gol, utilizați opțiunea -d (director). Puteți utiliza caractere metalice (* și ?) în numele directoarelor la fel ca și cu numele fișierelor.
rm -d directory
Furnizarea mai multor nume de director șterge toate directoarele goale specificate.
rm -d directory1 directory2 /path/to/directory3
Pentru a șterge directoarele care nu sunt goale, utilizați opțiunea -r (recursivă). Pentru a fi clar, acest lucru elimină directoarele și toate fișierele și subdirectoarele conținute în ele.
rm -r directory1 directory2 directory3
Dacă un director sau un fișier este protejat la scriere, vi se va solicita să confirmați ștergerea. Pentru a șterge directoarele care nu sunt goale și pentru a suprima aceste solicitări, utilizați împreună opțiunile -r (recursivă) și -f (forțată).
rm -rf directory
Aici este nevoie de grijă. Făcând o greșeală cu comanda rm -rf ar putea cauza pierderea datelor sau funcționarea defectuoasă a sistemului. Este periculos, iar precauția este cea mai bună politică. Pentru a înțelege structura directoarelor și fișierele care vor fi șterse de comanda rm -rf, utilizați comanda tree.
Utilizați apt-get pentru a instala acest pachet pe sistemul dvs. dacă utilizați Ubuntu sau o altă distribuție bazată pe Debian. Pe alte distribuții Linux, utilizați instrumentul de gestionare a pachetelor din distribuția dvs. Linux.
sudo apt-get install tree
Rularea comenzii tree produce o diagramă simplă de înțeles a structurii directoarelor și a fișierelor de sub directorul din care este rulată.
tree
De asemenea, puteți furniza o cale către comanda tree pentru a determina pornirea arborelui dintr-un alt director din sistemul de fișiere.
tree path/to/directory
Comanda rm are și opțiuni –one-file-system, –no-preserve-root, –preserve-root, dar acestea sunt recomandate doar utilizatorilor avansați. Dacă întâmpinați ceva greșit, puteți șterge din greșeală toate fișierele de sistem. Consultați comanda pagina de manual pentru mai multe informatii.
Cum să eliminați directoare cu rmdir
Există o altă comandă, numită rmdir, pe care o puteți folosi pentru a șterge directoare. Diferența dintre rm și rmdir este că rmdir poate șterge doar directoarele care sunt goale. Nu va șterge niciodată fișiere.
Cel mai simplu caz este ștergerea unui singur director gol. Ca și în cazul rm, puteți transmite mai multe nume de directoare către rmdir sau o cale către un director.
Ștergeți un singur director din directorul curent trecând numele lui la rmdir:
rmdir directory
Ștergeți mai multe directoare trecând o listă de nume către rmdir:
rmdir directory1 directory2 directory3
Ștergeți un director care nu se află în directorul curent specificând calea completă către acel director:
rmdir /path/to/directory
Dacă încercați să ștergeți un folder care nu este gol, rmdir vă va da un mesaj de eroare. În exemplul următor, rmdir șterge cu succes și în tăcere directorul clienți, dar refuză să ștergă directorul proiecte deoarece conține fișiere. Directorul de proiecte este lăsat exact așa cum a fost și fișierele din el sunt neatinse.
Când rmdir dă o eroare „Directory not empty”, se oprește procesarea directoarelor care i-au fost transmise pe linia de comandă. Dacă i-ați cerut să șterge patru directoare și primul avea fișiere în el, rmdir vă va da mesajul de eroare și nu va face nimic mai mult. Îl puteți forța să ignore aceste erori cu opțiunea –ignore-fail-on-non-empty, astfel încât alte directoare să fie procesate.
În exemplul următor, două foldere au fost trecute către rmdir, acestea sunt work/reports și work/quotes. Opțiunea –ignore-fail-on-non-empty a fost inclusă în comandă. Dosarul de lucru/rapoarte conține fișiere, așa că rmdir nu îl poate șterge. Opțiunea –ignore-fail-on-non-empty forțează rmdir să ignore eroarea și să treacă la următorul folder pe care trebuie să îl proceseze, care este work/quotes. Acesta este un folder gol și rmdir îl șterge.
Aceasta a fost comanda folosită.
rmdir --ignore-fail-on-non-empty work/reports /work/quotes
Puteți folosi opțiunea -p (părinți) pentru a șterge un director și pentru a șterge, de asemenea, directoarele părinte. Acest truc funcționează deoarece rmdir începe cu directorul țintă și apoi face pași înapoi la părinte. Directorul respectiv ar trebui să fie acum gol, astfel încât să poată fi șters de rmdir, iar procesul se repetă pasând înapoi pe calea care a fost furnizată către rmdir.
În exemplul următor, comanda care este transmisă către rmdir este:
rmdir -p work/invoices
Atât facturile, cât și directoarele de lucru sunt șterse, conform solicitării.
Indiferent dacă utilizați Bash sau orice alt shell, Linux vă oferă comenzi flexibile și puternice pentru a șterge directoare și fișiere direct din linia de comandă a terminalului. Unii oameni preferă să aibă un flux de lucru care se învârte în jurul terminalului. Alții s-ar putea să nu aibă de ales în această chestiune. Este posibil să lucreze pe servere fără GUI instalat sau pe o sesiune de la distanță pe un sistem fără cap, cum ar fi un Raspberry Pi. Aceste comenzi sunt perfecte pentru acel grup de oameni.
Dar indiferent de tipul de flux de lucru pe care îl preferați, aceste comenzi se pretează foarte bine pentru a fi incluse în scripturile shell. Dacă un script este declanșat de un job cron, acesta poate ajuta la automatizarea sarcinilor de rutină de menaj, cum ar fi curățarea fișierelor jurnal nedorite. Dacă investigați acel caz de utilizare, amintiți-vă puterea acestor comenzi, testați totul cu atenție și mențineți întotdeauna o copie de rezervă recentă.