Ich bin nur aus rm -rf /*
Versehen gerannt, aber ich meinte rm -rf ./*
(beachte den Stern nach dem Schrägstrich).
alias rm='rm -i'
und --preserve-root
standardmäßig hat mich nicht gerettet, gibt es also automatische Sicherheitsvorkehrungen dafür?
Ich war nicht root und habe den Befehl sofort abgebrochen, aber irgendwo gab es einige entspannte Berechtigungen, weil ich bemerkte, dass meine Bash-Eingabeaufforderung bereits kaputt war. Ich möchte nicht auf Berechtigungen verlassen und nicht root sein (ich konnte den gleichen Fehler mit machen sudo
), und ich möchte nicht , wegen eines für mysteriös Bugs jagen Datei irgendwo im System fehlt, so, Backups und sudo
sind gut , aber ich hätte gerne etwas Besseres für diesen speziellen Fall.
Überlegen Sie zweimal und nutzen Sie das Gehirn. Ich benutze es tatsächlich! Aber ich benutze es, um eine komplexe Programmieraufgabe mit 10 verschiedenen Dingen zu lösen. Ich bin tief genug in diese Aufgabe vertieft, es ist keine Gehirnleistung mehr vorhanden, um Flags und Pfade zu überprüfen, ich denke nicht einmal in Befehlen und Argumenten, ich denke in Aktionen wie 'Empty Current Dir'. Ein anderer Teil meines Gehirns übersetzt sie in Befehle und manchmal macht es Fehler. Ich möchte, dass der Computer sie korrigiert, zumindest die gefährlichen.
rm -rf . /mydir
stattrm -rf ./mydir
und zu töten , was Verzeichnis , das Sie in waren. Das finde ich öfter passiert.rm
es sich nicht um eine Waffe, sondern um ein Computerprogramm handelt, könnte es klug genug sein, um festzustellen, dass der Benutzer einige wichtige Dateien löschen und eine Warnung ausgeben wird (wie dies tatsächlich der Fall ist, wenn Sie versuchen,rm -rf /
ohne Stern auszukommen).rm
Befehl besser abgesichert werden kann, ist eine absolut legitime Frage des Systemadministrators.Antworten:
Einer der Tricks, denen ich folge, besteht darin,
#
den Anfang zu setzen, während ich denrm
Befehl verwende.Dies verhindert die versehentliche Ausführung von
rm
in der falschen Datei / im falschen Verzeichnis. Nach der Überprüfung#
vom Anfang entfernen . Dieser Trick funktioniert, da in Bash ein Wort, das mit beginnt,#
bewirkt, dass dieses Wort und alle verbleibenden Zeichen in dieser Zeile ignoriert werden. Der Befehl wird also einfach ignoriert.ODER
Wenn Sie ein wichtiges Verzeichnis verhindern möchten, gibt es noch einen Trick.
Erstellen Sie eine Datei mit dem Namen
-i
in diesem Verzeichnis. Wie kann so eine seltsame Datei erstellt werden? Mittouch -- -i
odertouch ./-i
Versuchen Sie jetzt
rm -rf *
:Hier
*
wird-i
die Befehlszeile erweitert, so dass Ihr Befehl letztendlich wirdrm -rf -i
. Daher wird der Befehl vor dem Entfernen abgefragt. Sie können diese Datei setzen in Ihrem/
,/home/
,/etc/
etc.ODER
Verwenden Sie
--preserve-root
als Option zurm
. In denrm
neuerencoreutils
Paketen ist diese Option die Standardeinstellung.ODER
Verwenden Sie safe-rm
Auszug aus der Website:
quelle
-i
Datei. Hah Dumme Prügelei.touch -- -rf
Ihr Problem:
Die Lösung: Tu das nicht! Aus praktischen Gründen nicht
./
am Anfang eines Pfades verwenden. Die Schrägstriche geben dem Befehl keinen Wert und sorgen nur für Verwirrung../*
bedeutet dasselbe wie*
, daher ist der obige Befehl besser geschrieben als:rm -rf *
Ist hier ein in Verbindung stehendes Problem. Ich sehe oft den folgenden Ausdruck, bei dem jemand davon ausgegangen
FOO
ist, dass er auf so etwas eingestellt ist/home/puppies
. Ich habe das erst heute in der Dokumentation eines großen Softwareherstellers gesehen.rm -rf $FOO/
Wenn dies
FOO
jedoch nicht festgelegt ist, wird dies zu ausgewertetrm -rf /
, wodurch versucht wird, alle Dateien auf Ihrem System zu entfernen. Der abschließende Schrägstrich ist nicht erforderlich, daher sollten Sie ihn aus praktischen Gründen nicht verwenden.Das Folgende wird dasselbe tun und es ist weniger wahrscheinlich, dass Ihr System beschädigt wird:
rm -rf $FOO
Ich habe diese Tipps auf die harte Tour gelernt. Als ich vor 14 Jahren meinen ersten Superuser-Account hatte, lief ich versehentlich
rm -rf $FOO/
aus einem Shell-Skript und zerstörte ein System. Die 4 anderen Sysadmins sahen sich das an und sagten: 'Yup. Das macht jeder einmal. Hier ist Ihr Installationsmedium (36 Disketten). Geh und repariere es. 'Andere Leute empfehlen hier Lösungen wie
--preserve-root
undsafe-rm
. Diese Lösungen sind jedoch nicht für alle Un * xe-Varianten verfügbar und funktionieren möglicherweise nicht unter Solaris, FreeBSD und MacOSX.safe-rm
Erfordert außerdem, dass Sie auf jedem verwendeten Linux-System zusätzliche Pakete installieren. Wenn Sie sich verlassensafe-rm
, was passiert , wenn Sie einen neuen Job beginnen und sie nicht habensafe-rm
installiert? Diese Werkzeuge sind eine Krücke, und es ist viel besser, sich auf bekannte Standardeinstellungen zu verlassen und Ihre Arbeitsgewohnheiten zu verbessern.quelle
rm -rf *
. Er wechselt immer zuerst das Verzeichnis und verwendet ein bestimmtes Ziel. Der Grund dafür ist, dass er die Geschichte der Shell häufig nutzt und befürchtet, dass ein derartiger Befehl in seiner Geschichte zur falschen Zeit auftauchen könnte.rm -rf *
auch.
und entfernt wurden..
. Ich war root, und das überquerte die in niedrigere Verzeichnisse wie../../..
, und war ziemlich destruktiv. Ich versucherm -rf *
seitdem sehr vorsichtig zu sein.rm -rf $FOO
wird nicht helfen, wenn Sie müssenrm -rf $FOO/$BAR
.cd $FOO && rm -rf $BAR
wird helfen, obwohl es viel länger ist.${FOO:?}
wie inrm -rf ${FOO:?}/
undrm -rf ${FOO:?}/${BAR:?}
. Es wird verhindern, dass es jemals übersetzt wirdrm -rf /
. Ich habe einige weitere Informationen dazu in meiner Antwort hier .rm -rf *
in einer for-Schleife versehentlich in das falsche Verzeichnis gewechselt bin und etwas anderes gelöscht habe. Wenn ich ein bestimmtes Ziel verwendet hätte, hätte es eine viel geringere Chance gehabt, das Falsche zu löschen.Da es sich um "Serverfault" handelt, möchte ich Folgendes sagen:
Wenn Sie Dutzende oder mehr Server, mit einem ziemlich großen Team von Administratoren / Benutzer, jemand wird sich
rm -rf
oderchown
das falsche Verzeichnis.Sie sollten einen Plan haben, um den betroffenen Dienst mit der geringstmöglichen MTTR wiederherzustellen.
quelle
Die besten Lösungen bestehen darin, Ihre Gewohnheiten dahingehend zu ändern, dass Sie sie nicht
rm
direkt verwenden.Ein Ansatz ist,
echo rm -rf /stuff/with/wildcards*
zuerst zu laufen . Vergewissern Sie sich, dass die Ausgabe der Platzhalterzeichen in Ordnung ist, und verwenden Sie dann den Verlauf der Shell, um den vorherigen Befehl ohne den Befehl auszuführenecho
.Ein anderer Ansatz besteht darin, den
echo
Befehl auf Fälle zu beschränken, in denen es offensichtlich ist, was Sie löschen. Entfernen Sie das Verzeichnis, und erstellen Sie ein neues, anstatt alle Dateien in einem Verzeichnis zu entfernen. Eine gute Methode besteht darin, das vorhandene Verzeichnis in umzubenennenDELETE-foo
, dann ein neues Verzeichnisfoo
mit den entsprechenden Berechtigungen zu erstellen und schließlich zu entfernenDELETE-foo
. Ein Nebeneffekt dieser Methode ist, dass der in Ihrem Verlauf eingegebene Befehl lautetrm -rf DELETE-foo
.Wenn Sie wirklich darauf bestehen, eine Reihe von Dateien zu löschen, weil das Verzeichnis erhalten bleiben muss (weil es immer vorhanden sein muss oder weil Sie nicht die Berechtigung haben, es neu zu erstellen), verschieben Sie die Dateien in ein anderes Verzeichnis und löschen Sie dieses Verzeichnis .
(Drücken Sie diese Alt+ .Taste.)
Das Löschen eines Verzeichnisses von innen wäre attraktiv, da
rm -rf .
es kurz ist und daher nur ein geringes Risiko für Tippfehler besteht. Typische Systeme lassen das leider nicht zu. Sie könnenrm -rf -- "$PWD"
stattdessen mit einem höheren Risiko von Tippfehlern umgehen, aber die meisten von ihnen führen dazu, dass nichts entfernt wird. Beachten Sie, dass dies einen gefährlichen Befehl in Ihrem Shell-Verlauf hinterlässt.Wann immer Sie können, verwenden Sie die Versionskontrolle. Sie nicht
rm
, Siecvs rm
oder was auch immer, und das ist unlösbar.Zsh bietet Optionen, die Sie vor der Ausführung
rm
mit einem Argumentrm_star_silent
auffordern , das alle Dateien in einem Verzeichnis auflistet: (standardmäßig aktiviert) fordert Sie vor der Ausführung aufrm whatever/*
, undrm_star_wait
(standardmäßig deaktiviert) fügt eine Verzögerung von 10 Sekunden hinzu, während der Sie nicht bestätigen können. Dies ist von begrenztem Nutzen, wenn Sie beabsichtigen, alle Dateien in einem Verzeichnis zu entfernen, da Sie die Eingabeaufforderung bereits erwarten. Es kann helfen, Tippfehler wierm foo *
bei zu vermeidenrm foo*
.Es gibt viel mehr Lösungen, bei denen der
rm
Befehl geändert wird. Eine Einschränkung dieses Ansatzes ist, dass Sie sich eines Tages auf einem Computer mit dem echten befindenrm
und automatisch anrufenrm
, in der Erwartung einer Bestätigung… und als Nächstes Backups wiederherstellen.quelle
mv -t DELETE_ME -- *
ist ein bisschen narrensicherer.rm
direkt verwenden ist ein guter Rat! Eine noch bessere Alternative ist die Verwendung desfind
Befehls .find somedir -type f -delete
die Option verwenden, die alle Dateien insomedir
dem Verzeichnis löscht, jedoch das Verzeichnis und alle Unterverzeichnisse verlässt.Sie können jederzeit einen Alias erstellen, wie Sie bereits erwähnt haben:
Sie können es auch in einen Befehlszeilen-Twitter-Client integrieren, um Ihre Freunde darauf aufmerksam zu machen, dass Sie sich selbst fast erniedrigt haben, indem Sie Ihre Festplatte mit
rm -fr /*
root gelöscht haben.quelle
telnet miku.acm.uiuc.edu
?Ja: Arbeiten Sie nicht als Root und überlegen Sie immer zweimal, bevor Sie handeln.
Schauen Sie sich auch so etwas wie https://launchpad.net/safe-rm an .
quelle
Der einfachste Weg, um Unfälle
rm -rf /*
zu vermeiden, besteht darin, jede Verwendung desrm
Befehls zu vermeiden ! Tatsächlich war ich immer versucht zu rennenrm /bin/rm
, um den Befehl vollständig loszuwerden! Nein, ich bin nicht scherzhaft.Verwenden Sie stattdessen die
-delete
Option desfind
Befehls , aber bevor Sie die Dateien löschen, empfehle ich eine Vorschau der zu löschenden Dateien:Beachten Sie, dass in modernen Versionen von,
find
wenn Sie den Namen eines Verzeichnisses weglassen, implizit das aktuelle Verzeichnis verwendet wird.Wenn Sie sicher sind, dass dies die Dateien sind, die Sie löschen möchten, können Sie die folgende
-delete
Option hinzufügen :Dies ist nicht nur
find
sicherer, sondern auch aussagekräftiger . Wenn Sie also nur bestimmte Dateien in einer Verzeichnishierarchie löschen möchten, die mit einem bestimmten Muster übereinstimmen, können Sie einen Ausdruck wie diesen für die Vorschau verwenden und dann die Dateien löschen:Es gibt viele gute Gründe, um zu lernen und zu verwenden,
find
außerdem nur einen sichererenrm
. Sie werden sich also später bedanken, wenn Sie sich die Zeit nehmen, das Erlernen des Gebrauchs zu erlernenfind
.quelle
Es gibt einige wirklich schlechte Ratschläge in diesem Thread, zum Glück wurde das meiste davon abgelehnt.
Wenn Sie root sein müssen, werden Sie zunächst zu root - sudo, und die verschiedenen Alias - Tricks machen Sie schwach. Und schlimmer noch, sie werden dich sorglos machen. Lerne, Dinge richtig zu machen und höre auf, abhängig von Aliasnamen zu sein, um dich zu schützen. Eines Tages wirst du auf einer Kiste wurzeln, die deine Stützräder nicht hat, und etwas in die Luft jagen.
Zweitens - wenn Sie Wurzel haben, stellen Sie sich vor, Sie fahren einen Bus voller Schulkinder. Manchmal können Sie den Song im Radio rocken, aber manchmal müssen Sie in beide Richtungen schauen, die Geschwindigkeit verringern und alle Ihre Spiegel überprüfen.
Drittens - Sie kaum jemals wirklich haben
rm -rf
- eher möchten Siemv something something.bak
odermkdir _trash && mv something _trash/
Viertens - immer
ls
Ihre Wildcard vorherrm
- Es ist nichts Verrücktes daran, sich etwas anzuschauen, bevor es für immer zerstört wird.quelle
ls
.find
Befehl zu tun .find . -name '*~'
Beispiel. Mein Punkt ist, dassls
derselbe Glob aufgelistetrm
wird, der verwendet wird.Dies ist mein Standard speziell für reguläre Ausdrücke im Kontext von rm, aber es hätte Sie in diesem Fall gerettet.
Ich tue immer
echo foo*/[0-9]*{bar,baz}*
zuerst, um zu sehen, was der reguläre Ausdruck zusammenbringen wird. Sobald ich die Ausgabe habe, gehe ich dann mit der Kommandozeilenbearbeitung zurück und wechsleecho
zurm -rf
. Ich verwende nie, nierm -rf
auf einem ungetesteten Regexp .quelle
*
hat die Bedeutung von eine sehr genaue Definition, die als Kleene Star bezeichnet wird. Dabei handelt es sich um einen unären Operator, der keinem oder mehreren Elementen der Menge entspricht, auf die er angewendet wird (im Fall von regulären Ausdrücken das Zeichen oder die Zeichenmenge vor dem Kleene Star), wohingegen beim Globbing*
alles im folgenden Muster übereinstimmt. Sie sind semantisch sehr unterschiedlich, auch wenn sie eine ähnliche Syntax zu haben scheinen.Die Lösung für dieses Problem besteht darin, regelmäßige Backups zu erstellen. Immer wenn Sie etwas produzieren, das Sie nicht verlieren möchten, sichern Sie es. Wenn Sie feststellen, dass das regelmäßige Sichern zu schmerzhaft ist, vereinfachen Sie den Vorgang, damit er nicht schmerzhaft ist.
Wenn Sie beispielsweise an Quellcode arbeiten, verwenden Sie ein Tool,
git
um den Code zu spiegeln und den Verlauf auf einem anderen Computer zu speichern. Wenn Sie an Dokumenten arbeiten, müssen Sie ein Skript verwenden, mit demrsync
Ihre Dokumente auf einem anderen Computer gespeichert werden.quelle
Wie bei den meisten GUIs scheint es der beste Weg zu sein, dieses Risiko zu verringern, indem Sie zweistufige Löschvorgänge durchführen. Das heißt, ersetzen Sie rm durch etwas, das Dinge in ein Papierkorbverzeichnis (auf demselben Volume) verschiebt. Reinigen Sie dann den Müll, nachdem genügend Zeit vergangen ist, um Fehler zu bemerken.
Ein solches Dienstprogramm, trash-cli, wird hier in Unix StackExchange beschrieben .
quelle
rm
.Ein wichtiger Faktor, um solche Fehler zu vermeiden, ist, sich nicht mit dem Root-Konto anzumelden. Wenn Sie sich mit einem normalen, nicht privilegierten Benutzer anmelden, müssen Sie
sudo
für jeden Befehl verwenden. Sie sollten also vorsichtiger sein.quelle
sudo
und Sicherung überzeugt sind . Schauen Sie sich diese Seite an: forum.synology.com/wiki/index.php/… . Es geht um das Erstellen eines Papierkorbs. Hoffe das hilft!Wenn ich ein Verzeichnis rekursiv lösche, setze ich das
-r
und-f
gegebenenfalls das Ende des Befehls, zrm /foo/bar -rf
. Auf diese Weise ist der Befehl nicht rekursiv, wenn ich versehentlich die Eingabetaste zu früh drücke, ohne den gesamten Pfad eingegeben zu haben, und daher wahrscheinlich harmlos. Wenn ich Geben Sie stoßen beim Versuch , den Schrägstrich nach eingeben/foo
, habe ich geschrieben ,rm /foo
stattrm -rf /foo
.Das funktioniert gut auf Systemen, die GNU-Coreutils verwenden, aber die Dienstprogramme auf einigen anderen Unixen erlauben es nicht, Optionen so am Ende zu platzieren. Glücklicherweise benutze ich solche Systeme nicht sehr oft.
quelle
Es mag kompliziert sein, aber Sie können Rollen in SELinux so einrichten, dass die Möglichkeit zum Löschen von Dateien eingeschränkt ist (Sie müssen sich direkt als root anmelden, um sie zu entfernen), selbst wenn der Benutzer über sudo su - (oder plain su) root wird Dateien). Wenn Sie AppArmor verwenden, können Sie etwas Ähnliches tun .
Die andere Lösung wäre natürlich, sicherzustellen, dass Sie Backups haben. :)
quelle
Vermeiden Sie die Verwendung von Globbing . In Bash können Sie festlegen
noglob
. Wenn Sie jedoch zu einem System wechseln, auf demnoglob
keine Einstellungen vorgenommen wurden, können Sie dies möglicherweise vergessen und so fortfahren, als ob dies der Fall wäre.Set
noclobber
zu verhindernmv
undcp
von Dateien zu zerstören.Verwenden Sie zum Löschen einen Dateibrowser. Einige Dateibrowser bieten einen Papierkorb an (z. B. Konqueror ).
Ein anderer Weg, um ein Verschlingen zu vermeiden, ist der folgende. In der Kommandozeile habe ich
echo filenamepattern >> xxx
. Dann bearbeite ich die Datei mit Vim oder vi, um zu überprüfen, welche Dateien gelöscht werden sollen (achte auf Dateinamenmusterzeichen in Dateimitgliedern) und verwandle dann%s/^/rm -f/
jede Zeile in einen Löschbefehl. Quelle xxx. Auf diese Weise sehen Sie jede Datei, die vor dem Löschen gelöscht wird.Verschieben Sie Dateien in ein "Dachboden" -Verzeichnis oder in einen Tarball. Oder benutze die Versionskontrolle (wie gesagt vor mir).
quelle
find
Befehl zu tun .Das ZSH fragt mich (standardmäßig), bevor es eine
rm -rf *
.quelle
Außerhalb von
chattr
gibt es nicht viele Schutzmaßnahmen, die verhindern, dass root einen solchen Befehl ausführt. Das ist der Grund, warum richtige Gruppen und sorgfältige Befehle wichtig sind, wenn Privilegierte ausgeführt werden.Nächstes Mal; Untersuchen Sie die Dateien, die Sie löschen möchten - lassen Sie 'f' weg
rm -rf
oder verwenden Sie esfind
und übergeben Sie es anxargs rm
quelle
find
, aber ich empfehle eine sicherere Methode, es in meiner Antwort zu verwenden . Es besteht keine Notwendigkeit zu verwenden,xargs rm
da alle modernen Versionenfind
die-delete
Option haben . Auch, um sicher nutzenxargs rm
müssen Sie auch verwendenfind -print0
undxargs -0 rm
sonst wirst du Probleme haben , wenn Sie Dinge wie Dateinamen mit Leerzeichen begegnen.find
ein guter Vorschlag ist, aber die Nuancen vonxargs
sind wichtig, wenn Sie es vorschlagen, sonst führt es zu Verwirrung und Frustration bei Dateien mit Leerzeichen (was durch die Verwendung der-delete
Option vermieden wird ).Einige Sicherheits-Aliase für andere Befehle, um ähnliche Katastrophen zu verhindern, finden Sie hier :
Beachten Sie die Großbuchstaben
-I
, sie unterscheiden sich von-i
:quelle
Normalerweise benutze ich die
-v
Flagge, um zu sehen, was gelöscht wird, und habe die Chance,^C
es im Zweifelsfall schnell zu tun. Dies ist kein wirklicher Weg, um Böses zu verhindernrm
, kann jedoch nützlich sein, um den Schaden zu begrenzen, falls etwas schief geht.quelle
Mein Löschvorgang auf Unix-basierten Rechnern ist wie folgt.
ls /path/to/intented/file_or_directory
das Terminalfenster ein und drücken Siereturn
(oderTab
, falls gewünscht), um die Liste der Dateien anzuzeigen.Wenn alles gut aussieht,
Klicken Sie auf die
up arrow
Taste, umls /path/to/intented/file_or_directory
den Terminalverlauf erneut aufzurufen.ersetzen
ls
mitrm
oderrm -r
oderrm -rf
, je nach Bedarf. Ich persönlich benutze keine-f
Flagge.Dieser Validierungsprozess verhindert auch die vorzeitige Ausführung des
rm
Befehls, was mir passiert ist, bevor ich diesem Prozess gefolgt bin.quelle
find
ich in meiner Antwort erläutere .Wenn Sie gerade keine Lust haben, sich neue Gewohnheiten anzueignen, sollten
.bashrc/.profile
Sie einige Tests hinzufügen, um zu prüfen, ob Sie etwas Dummes tun. Ich dachte mir, ich könnte in einer Bash-Funktion nach einem Muster suchen, das meinen Tag ruinieren könnte, und kam auf Folgendes:Das Gute daran ist, dass es nur Bash ist.
Es ist eindeutig nicht allgemein genug in dieser Form, aber ich denke, es hat Potenzial, also poste bitte einige Ideen oder Kommentare.
quelle
find
Befehl ausführen . Ich verstehe auch nicht, warum Sie sagen, "das Gute daran ist, dass es nur Bash ist"? Es wird empfohlen, Bash-Ismen in Skripten zu vermeiden .set -f
dem, wasset -o noglob
in Bash gleichwertig ist , zu tun , aber das erklärt immer noch nicht Ihre Aussage, dass "das Gute daran ist, dass es nur Bash ist". Stattdessen können Sie das Problem für jede Shell vollständig und allgemein beseitigen, indem Sie überhaupt nicht verwendenrm
, sondern denfind
Befehl verwenden . Haben Sie diesen Vorschlag tatsächlich ausprobiert, um zu sehen, wie er mit dem verglichen wird, was Sie hier vorschlagen?Leider kann ich oben keinen Kommentar abgeben, da das Karma nicht ausreicht, aber ich wollte andere warnen, dass safe-rm kein Allheilmittel für versehentliche Albträume der Massenlöschung ist.
Das Folgende wurde in einer virtuellen Linux Mint 17.1-Maschine getestet (Warnung für diejenigen, die mit diesen Befehlen nicht vertraut sind: TUN SIE DAS NICHT! Selbst diejenigen, die mit diesen Befehlen vertraut sind, sollten / würden dies wahrscheinlich niemals tun, um einen katastrophalen Datenverlust zu vermeiden):
Textversion (gekürzt):
Bildversion (voll):
quelle
Ich mag den Windows-Ansatz des Papierkorbs.
Normalerweise erstelle ich ein Verzeichnis mit dem Namen "/ tmp / recyclebin" für alles, was ich löschen muss:
Und benutze nie rm -rf, ich benutze immer:
Später entleere ich den Papierkorb mithilfe eines Skripts oder manuell.
quelle
Hehe (ungetestet und etwas scherzhaft!):
Und dann:
Realistischerweise sollten Sie eine mentale Pause einlegen, bevor Sie diese Art von Operation mit einem Glob ausführen, unabhängig davon, ob Sie als Root ausgeführt werden, "sudo" voranstellen usw. Sie können ein "ls" auf demselben Glob ausführen usw. Aber im Geiste sollten Sie eine Sekunde innehalten, sicherstellen, dass Sie das eingegeben haben, was Sie wollten, dass das, was Sie wollen, tatsächlich das ist, was Sie wollen usw. Ich nehme an, dies ist etwas, das hauptsächlich durch Zerstörung von etwas im ersten Jahr als gelernt wurde eine Unix SA, in der gleichen Weise, wie der heiße Brenner ein guter Lehrer ist, der Ihnen mitteilt, dass etwas auf dem Herd heiß sein kann.
Und stellen Sie sicher, dass Sie gute Backups haben!
quelle
Nicht als Schutzmaßnahme, sondern um herauszufinden, welche Dateien gelöscht wurden, bevor Sie auf ^ C geklickt haben, können Sie die
locate
Datenbank verwenden (natürlich nur, wenn sie installiert und überlebt wurderm
).Ich habe davon in diesem Blog-Beitrag erfahren
quelle
Verwenden Sie einfach ZFS, um die Dateien zu speichern, die Sie benötigen, um ein versehentliches Entfernen zu verhindern, und haben Sie einen Daemon, der:
Sollten Dateien entfernt, überschrieben oder beschädigt werden, führen Sie einfach ein Rollback Ihres Dateisystems auf einen Klon des letzten guten Schnappschusses durch, und Sie sind fertig.
quelle
nicht so sehr eine antwort, sondern ein tipp, das tue ich immer
rm (dir) -rf
nichtrm -rf (dir)
.Es hilft dabei, Situationen, in denen Sie den Namen des Verzeichnisses fett abtasten, so zu entschärfen, dass es sich immer noch um eine gültige Löschung handelt, z.
quelle
rm
, wo Optionen vor Dateinamen stehen müssen.Ich halte dies für einen leistungsstarken Präventionstipp mit der * -Erweiterungsverknüpfung in der Shell:
Geben Sie zuerst
rm -rf *
oderrm -rf your/path/*
NICHT einEnter
. (Natürlich sollten Sie es sich zur Gewohnheit machen, bei der Verwendung nicht schnell / versehentlich die Eingabetaste zu drücken.rm -rf
)Drücken Sie dann
Alt-Shift-8
(dhAlt-Shift-*
), um den Platzhalter "*" explizit in bash zu erweitern. Dies vermeidet auch die erneute Eingabe eines "rm -rf *" - Befehls beim Navigieren im Verlauf.Nachdem Sie überprüft haben, ob die Erweiterung die richtigen Dateien / Verzeichnisse enthält, drücken Sie die Eingabetaste.
Getan.
quelle
Für den Fall, dass dies jemandem in seinem eigenen Fall hilft:
1. Verwenden Sie
rmsafe
:Es verschiebt Dateien in einen "Papierkorb" -Ordner und Sie haben immer die Möglichkeit, sie mit einem einfachen Befehl zurückzubringen
mv
:Quelle: https://github.com/pendashteh/rmsafe
2. Verwenden Sie
safe
:Sie können einen Alias für die
rm
Verwendung von safe festlegen :Wenn Sie jetzt laufen, erhalten
rm /*
Sie diese Antwort:und ich glaube du wirst nicht tippen
y
!Quelle: https://github.com/pendashteh/safe
quelle