Comenzile `rm` și `rmdir` sunt instrumente esențiale în sistemele de operare Linux, macOS și cele similare Unix, utilizate pentru eliminarea fișierelor și directoarelor. Acestea pot fi comparate cu comenzile `del` și `deltree` din mediile Windows și DOS. Dețin o putere considerabilă și oferă diverse opțiuni pentru a gestiona procesul de ștergere.
Un aspect crucial de reținut este că elementele șterse prin `rm` și `rmdir` nu sunt mutate în coșul de gunoi, ci sunt eliminate permanent de pe sistem. În cazul unei ștergeri accidentale, recuperarea datelor este posibilă doar din copiile de rezervă preexistente.
Eliminarea fișierelor cu comanda `rm`
Pentru a șterge un fișier din directorul curent, utilizați comanda `rm`, urmată de un spațiu și numele fișierului dorit:
rm nume_fisier.txt
Dacă fișierul se află într-o altă locație, specificați calea completă:
rm ./cale/catre/fisier/nume_fisier.txt
Puteți șterge mai multe fișiere simultan, oferind o listă cu numele lor:
rm fisier_2.txt fisier_3.txt
Utilizarea caracterelor speciale (wildcard-uri) permite selectarea și ștergerea unor grupuri de fișiere. Aici, `*` reprezintă oricâte caractere, iar `?` un singur caracter. Spre exemplu, următoarea comandă va șterge toate fișierele imagine cu extensia png:
rm *.png
Această comandă va elimina toate fișierele cu o extensie formată dintr-un singur caracter, cum ar fi `Fisier.1` sau `Fisier.2`, dar nu `Fisier.12`:
rm *.?
În cazul fișierelor protejate la scriere, sistemul va solicita confirmarea înainte de ștergere. Trebuie să confirmați cu `y` (da) sau să refuzați cu `n` (nu) și să apăsați tasta Enter.
Opțiunea `-i` (interactivă) reduce riscul ștergerilor accidentale prin solicitarea confirmării pentru fiecare fișier:
rm -i *.dat
Opțiunea `-f` (forțată) anulează orice solicitare de confirmare, chiar și pentru fișierele protejate la scriere:
rm -f nume_fisier
Eliminarea directoarelor cu comanda `rm`
Pentru a elimina un director gol, folosiți opțiunea `-d` (director). Caracterele speciale (* și ?) pot fi folosite și la numele directoarelor:
rm -d director
Puteți șterge mai multe directoare goale simultan:
rm -d director1 director2 /cale/catre/director3
Pentru a șterge directoare care conțin fișiere sau subdirectoare, utilizați opțiunea `-r` (recursivă). Aceasta va elimina directorul și tot conținutul său:
rm -r director1 director2 director3
Dacă un director sau fișier este protejat, veți fi rugat să confirmați ștergerea. Opțiunile `-r` și `-f` combinate permit ștergerea recursivă și forțată, fără solicitarea confirmării:
rm -rf director
Utilizarea comenzii `rm -rf` necesită precauție, deoarece o greșeală poate duce la pierderea datelor sau la afectarea sistemului. Pentru a înțelege structura directorului înainte de a-l șterge, folosiți comanda `tree`.
Instalați pachetul `tree` folosind managerul de pachete al distribuției Linux. Pentru Ubuntu sau alte distribuții bazate pe Debian, comanda este:
sudo apt-get install tree
Executând comanda `tree` se afișează o reprezentare vizuală a structurii directoarelor și fișierelor:
tree
Puteți folosi și o cale pentru a determina unde să înceapă afișarea arborelui:
tree cale/catre/director
Comanda `rm` include și opțiuni avansate precum `–one-file-system`, `–no-preserve-root` și `–preserve-root`, dar acestea sunt recomandate doar utilizatorilor experimentați, deoarece pot duce la pierderea datelor sau la afectarea sistemului. Consultați pagina de manual pentru mai multe detalii.
Eliminarea directoarelor cu comanda `rmdir`
Comanda `rmdir` este o alternativă pentru ștergerea directoarelor. Spre deosebire de `rm`, `rmdir` poate șterge doar directoare goale și nu va șterge niciodată fișiere.
Pentru a șterge un director gol, utilizați comanda `rmdir`, urmată de numele directorului sau calea acestuia:
rmdir director
Puteți șterge mai multe directoare goale simultan:
rmdir director1 director2 director3
Pentru a șterge un director care nu se află în directorul curent, specificați calea completă:
rmdir /cale/catre/director
Dacă încercați să ștergeți un director care nu este gol, `rmdir` va afișa un mesaj de eroare. În exemplul de mai jos, `rmdir` șterge `clienti`, dar nu va șterge `proiecte` pentru că acesta conține fișiere:
Când `rmdir` întâmpină o eroare de tipul „Directory not empty”, procesarea celorlalte directoare este oprită. Pentru a ignora aceste erori, utilizați opțiunea `–ignore-fail-on-non-empty`:
În exemplul de mai jos, `rmdir` încearcă să șteargă `work/reports` și `work/quotes`. Directorul `work/reports` nu este gol, dar datorită opțiunii `–ignore-fail-on-non-empty`, `rmdir` ignoră eroarea și șterge directorul `work/quotes` care este gol:
rmdir --ignore-fail-on-non-empty work/reports /work/quotes
Opțiunea `-p` (părinți) permite ștergerea unui director și a directoarelor părinte. `rmdir` începe de la directorul țintă și urcă pe arborele directoarelor, ștergându-le dacă sunt goale:
În exemplul de mai jos, se folosește comanda:
rmdir -p work/invoices
Astfel, atât directorul `invoices`, cât și directorul `work` sunt șterse.
Indiferent de shell-ul utilizat (Bash sau altele), Linux oferă comenzi puternice și flexibile pentru ștergerea fișierelor și directoarelor direct din linia de comandă a terminalului. Aceste instrumente sunt preferate de cei care preferă un flux de lucru bazat pe terminal sau de cei care lucrează pe servere fără interfață grafică. De asemenea, sunt perfecte pentru utilizarea în scripturi shell, unde pot fi folosite pentru automatizarea sarcinilor de rutină, cum ar fi ștergerea fișierelor jurnal nedorite. Când utilizați aceste comenzi în scripturi, asigurați-vă că le testați cu atenție și mențineți mereu o copie de rezervă recentă a datelor.