rm -rf *.*
va corupe sistemul de fișiere în timp ce rm -rf /
nu va face asta?
Comentarii
- Unix și Linux Stack Exchange au fost utile de mai bine de 6 ani, iar SuperUser pentru același lucru: unix.stackexchange.com/questions/19547 superuser.com/questions/312769 unix.stackexchange.com/questions/302468
Răspuns
Acolo „nu este nimic special pentru el, rm -rf *.*
este o comandă cu un nume de fișier, care va elimina recursiv toate fișierele din directorul curent care conțin un punct în numele lor.
rm -rf /
ar da o eroare la încercarea de a rula rm
în directorul rădăcină. Acest este mandatat de POSIX :
Dacă […] un operand reso În directorul rădăcină, rm va scrie un mesaj de diagnosticare la eroarea standard și nu va mai face nimic cu astfel de operanzi.
În funcție de pe shell și setările sale, *.*
poate coincide și cu ..
pentru directorul părinte, dar și cu /
, încercarea de a elimina aceasta este, de asemenea, o eroare.
Niciunul dintre aceștia nu va corupe sistemul de fișiere, rm
va (doar încerca) să elimine fișiere folosind apelurile obișnuite din sistemul de fișiere. Efectul asupra sistemului general sau a fișierelor utilizatorului poate fi desigur substanțial dacă prima comandă este executată într-un director care conține fișiere importante.
Comentarii
- pentru versiuni suficient de noi de GNU
rm
(caracteristică furată inițial de la Solaris IIRC). Cel mai bine nu plângeți dacă ușor încorporatrm
nu este compatibil cu cel mai recent POSIX.