Wie kann ich eine versehentliche Ausführung des Befehls rm -r * verhindern?

7

Gelegentlich benutze ich den Befehl, um einige Dateien zu löschen. Zum Beispiel könnte der Name mit 'a' beginnen, also werde ich mit dem Befehl löschen rm -r a*, aber ich möchte nicht versehentlich ein anderes Verzeichnis entfernen. Wie kann ich ein Verzeichnis sperren, um das Löschen durch zu verhindern rm -r?

John
quelle

Antworten:

2

Der beste Rat ist, die Befehle 'rm -r' oder 'rm -rf' so zu fürchten und zu respektieren, dass Sie sich beim Tippen selbst stoppen und langsam und vorsichtig vorgehen (den Befehl einige Male sorgfältig durchlesen). . Die Befehle sind nützlich und müssen manchmal verwendet werden - aber es ist keine gute Idee, das System dazu zu bringen, Sie vor dieser Art von Fehler zu bewahren. Es ist keine gute Idee, sich an solche Problemumgehungen zu gewöhnen. Erwägen Sie, gute Gewohnheiten zu entwickeln, die von Maschine zu Maschine übertragen werden können.

Daniel
quelle
1

Wenn Sie versuchen, Elemente selektiv zu entfernen, können Sie verwenden find.

find . -name "a*" \! -type d -delete

Sie können überprüfen, was Sie löschen, indem Sie Folgendes ausführen:

find . -name "a*" \! -type d -print

Erstellen Sie beispielsweise einige Verzeichnisse und Dateien:

mkdir -p testDir/a/b 
cd testDir
touch apple.txt banana.txt ant.tx a/antelope.txt a/bus.txt a/b/apostrophe.txt a/b/bug.txt

So zeigen Sie die Dateien und Verzeichnisse an:

find . -name "*" -print

kehrt zurück:

.
./a
./a/antelope.txt
./a/b
./a/b/apostrophe.txt
./a/bus.txt
./ant.tx
./apple.txt
./banana.txt

So überprüfen Sie, was gelöscht wird:

find . -name "a*" \! -type d -print

kehrt zurück:

./a/antelope.txt
./a/b/apostrophe.txt
./ant.tx
./apple.txt

So löschen Sie die Dateien:

find . -name "a*" \! -type d -delete

So überprüfen Sie, ob nur * Dateien gelöscht wurden:

find . -name "*" -print

kehrt zurück:

.
./a
./a/b
./a/bus.txt
./banana.txt
mmorris
quelle
hat meinen Kommentar entfernt. :)
Evandro Silva
1

Zusätzlich zu den anderen Antworten hier empfehle ich, dass Sie die Tab-Vervollständigung mehr und weniger Globbing verwenden. Aus Ihrer Frage geht hervor, dass Sie versuchen, eine einzelne Datei zu löschen, aber nicht den vollständigen Namen eingeben möchten. In diesem Fall sollten Sie stattdessen *schlagen Tab. Das Ausfüllen von Registerkarten ist viel sicherer.

Wenn Sie tatsächlich beabsichtigen, mehrere Dateien zu löschen, deren Name mit einem Glob übereinstimmt, sollten Sie, wie bereits erwähnt, am besten zweimal überlegen, bevor Sie die Eingabetaste drücken. Darüber hinaus können Sie beruhigt sein, wenn Sie eine Sicherungslösung verwenden, die alle Änderungen während der Durchführung sichert, sodass Sie Fehler jederzeit wiederherstellen können, ohne dass das Risiko eines Datenverlusts besteht.

Scott Severance
quelle