Există vreo diferență între rm -rf / și rm -rf *. *?

rm -rf *.* va corupe sistemul de fișiere în timp ce rm -rf / nu va face asta?

Comentarii

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 încorporat rm nu este compatibil cu cel mai recent POSIX.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *