Er det forskjell på rm -rf / og rm -rf *. *?

Vil rm -rf *.* ødelegge filsystemet ditt mens rm -rf / ikke vil gjøre dette?

Kommentarer

Svar

Der «er ikke noe spesielt for det, rm -rf *.* er en kommando med et filnavn jokertegn, det vil rekursivt fjerne alle filer i den nåværende katalogen som inneholder en prikk i navnene.

rm -rf / ville gi en feil om å prøve å kjøre rm i rotkatalogen. Denne er pålagt av POSIX :

Hvis […] en operandreso lves til rotkatalogen skal rm skrive en diagnostisk melding til standardfeil og ikke gjøre noe mer med slike operander.

Avhengig av på skallet og dets innstillinger, kan *.* også matche .. for overordnet katalog, men i tillegg til /, å prøve å fjerne det er også en feil.

Ingen av disse vil ødelegge filsystemet, rm vil bare (prøve å) fjerne filer ved hjelp av de vanlige filsystemanropene. Effekten på systemet generelt, eller brukerens filer, kan selvfølgelig være betydelig hvis den første kommandoen utføres i en katalog som inneholder viktige filer.

Kommentarer

  • for tilstrekkelig nye versjoner av GNU rm (funksjonen ble opprinnelig stjålet fra Solaris IIRC). Best ikke gråte hvis den innebygde lette rm er ikke kompatibel med den nyeste POSIX.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *