Naredbe rm
i rmdir
služe za uklanjanje datoteka i direktorijuma na Linux, macOS i drugim operativnim sistemima sličnim Unix-u. One su ekvivalentne naredbama del
i deltree
koje se koriste u Windows-u i DOS-u. Ove komande su izuzetno snažne i nude brojne opcije.
Važno je naglasiti da datoteke i direktorijumi obrisani pomoću rm
i rmdir
se ne premeštaju u korpu za otpatke. Oni se trajno uklanjaju sa vašeg sistema. Ukoliko slučajno izbrišete datoteke ovim komandama, jedini način da ih povratite je putem rezervne kopije.
Uklanjanje datoteka pomoću rm
Najjednostavniji slučaj je brisanje jedne datoteke koja se nalazi u trenutnom direktorijumu. Unesite naredbu rm
, zatim razmak i nakon toga naziv datoteke koju želite da obrišete.
rm fajl1.txt
Ukoliko se datoteka ne nalazi u trenutnom radnom direktorijumu, morate navesti punu putanju do lokacije datoteke.
rm ./putanja/do/datoteke/fajl1.txt
Komandi rm
možete proslediti i više naziva datoteka. Na taj način ćete obrisati sve navedene datoteke odjednom.
rm fajl2.txt fajl3.txt
Džokeri se mogu koristiti za odabir grupa datoteka koje želite obrisati. Simbol *
predstavlja više znakova, dok ?
predstavlja jedan znak. Sledeća naredba bi izbrisala sve PNG slikovne datoteke u trenutnom radnom direktorijumu.
rm *.png
Ova komanda bi obrisala sve datoteke čije ekstenzije imaju samo jedan karakter. Na primer, ovo bi obrisalo fajl.1 i fajl.2, ali ne i fajl.12.
rm *.?
Ako je datoteka zaštićena od pisanja, sistem će od vas zatražiti potvrdu pre nego što se datoteka obriše. Potrebno je da odgovorite sa y
ili n
i pritisnete taster „Enter“.
Da biste smanjili rizik od nenamernog brisanja, koristite opciju -i
(interaktivno). Ona zahteva od vas da potvrdite brisanje svake datoteke pojedinačno.
rm -i *.dat
Opcija -f
(force) je suprotna od interaktivne. Ona ne traži potvrdu čak i ako su datoteke zaštićene od pisanja.
rm -f naziv_datoteke
Uklanjanje direktorijuma pomoću rm
Da biste uklonili prazan direktorijum, koristite opciju -d
(direktorijum). Možete koristiti džoker simbole (*
i ?
) u nazivima direktorijuma isto kao i kod naziva datoteka.
rm -d direktorijum
Navođenje više naziva direktorijuma briše sve navedene prazne direktorijume.
rm -d direktorijum1 direktorijum2 /putanja/do/direktorijuma3
Da biste obrisali direktorijume koji nisu prazni, koristite opciju -r
(rekurzivno). Ovo uklanja direktorijume kao i sve datoteke i poddirektorijume koji se nalaze u njima.
rm -r direktorijum1 direktorijum2 direktorijum3
Ukoliko je direktorijum ili datoteka zaštićena od pisanja, sistem će od vas zatražiti da potvrdite brisanje. Da biste izbrisali direktorijume koji nisu prazni i da biste izbegli ove zahteve za potvrdom, koristite opcije -r
(rekurzivno) i -f
(prisilno).
rm -rf direktorijum
Ovde je potreban oprez. Ako pogrešite sa komandom rm -rf
, može doći do gubitka podataka ili čak pada sistema. Oprez je najvažniji. Da biste razumeli strukturu direktorijuma i datoteka koje će biti obrisane komandom rm -rf
, koristite komandu tree
.
Koristite apt-get
da instalirate ovaj paket na vaš sistem ako koristite Ubuntu ili neku drugu distribuciju baziranu na Debianu. U drugim Linux distribucijama, koristite alatku za upravljanje paketima vaše Linux distribucije.
sudo apt-get install tree
Pokretanje komande tree
prikazuje jednostavan dijagram strukture direktorijuma i datoteka ispod direktorijuma iz kojeg se pokreće.
tree
Možete navesti putanju komandi tree
kako biste je naterali da pokrene stablo iz drugog direktorijuma u sistemu datoteka.
tree putanja/do/direktorijuma
Komanda rm
takođe ima opcije --one-file-system
, --no-preserve-root
, --preserve-root
, ali one se preporučuju samo za napredne korisnike. Ako nešto pogrešite, mogli biste slučajno izbrisati sve sistemske datoteke. Konsultujte stranicu priručnika za više informacija.
Uklanjanje direktorijuma pomoću rmdir
Postoji još jedna naredba, koja se zove rmdir
, a koju možete koristiti za brisanje direktorijuma. Razlika između rm
i rmdir
je u tome što rmdir
može da briše samo prazne direktorijume. Nikada neće izbrisati datoteke.
Najjednostavniji slučaj je brisanje jednog praznog direktorijuma. Kao i kod rm
, možete proslediti više imena direktorijuma u rmdir
ili putanju do direktorijuma.
Izbrišite jedan direktorijum u trenutnom direktorijumu tako što ćete proslediti njegovo ime u rmdir
:
rmdir direktorijum
Izbrišite više direktorijuma tako što ćete proslediti listu imena u rmdir
:
rmdir direktorijum1 direktorijum2 direktorijum3
Izbrišite direktorijum koji nije u trenutnom direktorijumu tako što ćete navesti punu putanju do tog direktorijuma:
rmdir /putanja/do/direktorijuma
Ako pokušate da izbrišete direktorijum koji nije prazan, rmdir
će vam prikazati poruku o grešci. U sledećem primeru rmdir
uspešno i tiho briše direktorijum klijenti
, ali odbija da izbriše direktorijum projekti
jer sadrži datoteke. Direktorijum projekti
je ostavljen onakav kakav je bio i datoteke u njemu su netaknute.
Kada rmdir
prijavi grešku „Direktorijum nije prazan“, on prestaje da obrađuje direktorijume koji su mu prosleđeni na komandnoj liniji. Ako ste od njega tražili da izbriše četiri direktorijuma i da je prvi imao datoteke u njemu, rmdir
bi vam prikazao poruku o grešci i više ništa ne bi uradio. Možete ga naterati da ignoriše ove greške pomoću opcije --ignore-fail-on-non-empty
tako da se drugi direktorijumi obrade.
U sledećem primeru, dve fascikle su prosleđene u rmdir
, to su rad/izveštaji
i rad/citati
. Opcija --ignore-fail-on-non-empty
je uključena u komandu. Fascikla rad/izveštaji
ima datoteke u sebi, tako da rmdir
ne može da je izbriše. Opcija --ignore-fail-on-non-empty
primorava rmdir
da ignoriše grešku i pređe na sledeću fasciklu koju treba da obradi, a to je rad/citati
. Ovo je prazna fascikla, a rmdir
je briše.
Ovo je bila komanda koja je korišćena:
rmdir --ignore-fail-on-non-empty rad/izveštaji /rad/citati
Možete koristiti opciju -p
(roditelji) da izbrišete direktorijum i da izbrišete njegove roditeljske direktorijume. Ovaj trik funkcioniše jer rmdir
počinje sa ciljnim direktorijumom, a zatim se vraća unazad do nadređenog. Taj direktorijum bi sada trebalo da bude prazan, tako da ga rmdir
može izbrisati, a proces se ponavlja vraćajući se na putanju koja je data rmdir
-u.
U sledećem primeru komanda koja se prosleđuje u rmdir
je:
rmdir -p rad/fakture
I fakture
i rad
direktorijumi se brišu na zahtev.
Bez obzira da li koristite Bash ili bilo koju drugu ljusku, Linux vam pruža fleksibilne i moćne komande za brisanje direktorijuma i datoteka direktno sa komandne linije terminala. Neki ljudi više vole da imaju tok posla koji se vrti oko terminala. Drugi možda nemaju izbora po tom pitanju. Možda rade na serverima bez instaliranog GUI-a ili na udaljenoj sesiji na sistemu bez glave kao što je Raspberry Pi. Ove komande su savršene za tu grupu ljudi.
Ali koji god tip toka posla želite, ove komande se veoma dobro mogu uključiti u shell skripte. Ako je skripta pokrenuta cron poslom, ona može pomoći u automatizaciji rutinskih zadataka održavanja, kao što je čišćenje nepotrebnih datoteka logova. Ako istražujete taj slučaj upotrebe, zapamtite snagu ovih komandi, pažljivo testirajte sve i uvek imajte nedavnu rezervnu kopiju.