Rm

Linux.fista
Versio hetkellä 13. lokakuuta 2009 kello 21.35 – tehnyt Pb (keskustelu | muokkaukset) (→‎Ongelmatiedostot)
Siirry navigaatioon Siirry hakuun

Komentorivikomento rm poistaa valitun tiedoston. Poistaaksesi tiedoston sinulla täytyy olla kirjoitusoikeudet hakemistoon jossa tiedosto sijaitsee – itse tiedostoon ei tarvita oikeuksia (muuta kuin jos hakemistossa on t-bitti aktiivisena ja tiedosto on toisen omistuksessa).

Normaalisti rm ei kysy varmistusta kuin kahdessa tapauksessa: jos tiedostoon ei ole kirjoitusoikeuksia tai jos valitsin -i on käytössä (explisiitisti tai aliaksen kautta). Valitsimella -f varmistusta ei kysytä näissäkään tapauksissa.

Itse asiassa komento ei ensisijaisesti poista tiedostoa kiintolevyltä, vaan sen nimen hakemistosta. Tiedosto saattaa esiintyä useammassa hakemistossa tai eri nimillä ja vasta viimeisen kovan linkin poistamisen myötä tiedosto häviää (ls -l näyttää linkkien määrän). Jos tiedosto on jonkin ohjelman käytössä, ohjelma voi jatkaa sen käyttöä riippumatta siitä onko tiedosto poistettu hakemistoista.

Käyttö

Poista tiedosto

$ rm poistettava_tiedosto

Poista hakemisto ja sisältö rekursiivisesti (varmista, ettei komennossa ole ylimääräisiä välilyöntejä tai hakemistonimessä erikoismerkkejä)

$ rm -r poistettava_hakemisto

Jos rm kyselee varmistusta, on se alias. Oikean rm-komennon saa käyttöön joko antamalla polun /bin/rm tai käyttämällä muotoa \rm.

Ongelmatiedostot

Jos poistettavassa tiedostonimessä on erikoismerkkejä (Unixeissa kaikki merkit paitsi \0 ja kauttaviiva ovat sallittuja), tiedoston voi poistaa esimerkiksi näin:

  • Lainausmerkit toimivat hyvin, jos tiedostonimessä on esimerkiksi välilyöntejä. Niitä kannattaa käyttää aina, kun tiedostonimiä käsittelee skripteissä.
  • "Hipsut" estävät useimpien erikoismerkkien toiminnan.
  • Kenoviiva muuttaa sitä seuraavan erikoismerkin tavalliseksi merkiksi.
  • Polun määrittäminen siirtää ongelmallisen alkumerkin ongelmattomaan kohtaan.
  • Tähdellä voi määritellä nimiä, joita ei voi helposti kirjoittaa, ja valitsimella -i niistä voi poimia poistettavat. Muoto \rm tai /bin/rm varmistaa ettei aliaksen kautta käytetä valitsinta -f.
$ ls
a b  a"b  a*b  -ab  a?b
$ rm "a b"
$ rm 'a"b'
$ rm a\*b
$ rm ./-ab
$ \rm -i a*b

Poista hakemiston kaikki piilotiedostot (poistamatta mitään ylähakemistosta):

$ rm ./.[^.]*
$ ls
...  ..abc  a  b  c
$ rm ./..?*

Rikkinäisellä medialla ja joissakin toisissa yhteyksissä voi esiintyä tiedostoja, joita pääkäyttäjäkään ei voi poistaa. Varmista, että osio ei ole kirjoitussuojattu (mount -o remount,rw osio) ja ettei tiedotoa ole suojattu erikoismääreillä (lsattr tiedosto). Erilaiset "haamutiedostot" on monessa tapauksessa mahdollista saada häviämään tarkistamalla ja korjaamalla tiedostojärjestelmä fsck:n avulla.

Valitsimia

  • -f - ei kysellä koskaan mitään
  • -i - kysytään ennen jokaisen tiedoston poistamista
  • -I - kysyy vain kerran, jos poistettavia tiedostoja on yli kolme tai jos käytetään rekursiivista poistoa (-r-valitsin)
  • --interactive= - säätelee varmistuksen kyselyä, never-arvolla ei kysellä lainkaan, once on sama kuin valitsin -I ja always sama kuin valitsin -i
  • --one-file-system - ei poista kuin yhteen tiedostojärjestelmään kuuluvia tiedostoja
  • --preserve-root - ei sovella rekursiivista poistoa juurihakemistoon (oletus)
  • --no-preserve-root - mahdollistaa juurihakemiston rekursiivisen poiston (käytä jos haluat tuhota järjestelmäsi)
  • -r, -R - rekursiivinen poisto (poistaa myös hakemistot)
  • -v - tulostaa jokaisen tiedoston nimen ennen sen poistoa (verbose)

Lisätietoja saa komennolla:

info rm

Katso myös

  • ls (tiedostolistaus)
  • ln (linkitys)
  • rmdir (hakemiston poistaminen)
  • mkdir (hakemiston luominen)