GNU/Linux >> LINUX-Kenntnisse >  >> Linux

[Linux]:So verhindern Sie die versehentliche Ausführung des Befehls „rm -rf“.

Als Menschen sollten wir Fehler wie:rm -rf * akzeptieren würde passieren ! Gemäß dem Motto „Vorbeugen ist besser als heilen“ werden wir bei der Ausführung solcher kritischen Befehle bewährte Verfahren befolgen. Hier zeigen wir Ihnen, wie Sie solche versehentlichen Löschungen auf Ihren Linux-Rechnern vermeiden können. Wenn Sie dennoch Dateien gelöscht haben und diese wiederherstellen möchten, gehen Sie wie folgt vor: So können Sie gelöschte Daten abrufen !

1. Verwenden Sie niemals rm -rf ./* (empfohlen)

Verwenden Sie zur Übung anstelle von ./ am Anfang eines Pfads einfach *. Die Schrägstriche fügen dem Befehl wirklich keinen Wert hinzu und stiften nur Verwirrung. Der obige Befehl kann besser umgeschrieben werden als :

rm -rf *

2. Verwenden Sie „–preserve-root“ als Option für rm (empfohlen)

Der Befehl rm enthält eine Option „–preserve-root“, um das versehentliche Löschen des Stammverzeichnisses zu verhindern, aber dieses Verhalten ist nicht die Standardeinstellung bei älteren Computern. Fügen Sie also von nun an einfach Folgendes zu /etc/bashrc und /etc/profile hinzu:

alias rm=”rm -–preserve-root”

Hinweis:Wenn Sie dennoch / löschen möchten, können Sie –no-preserve-root attribute

verwenden

3. Möchten Sie verhindern, dass wichtige Verzeichnisse gelöscht werden? (Empfohlen)

Erstellen Sie eine Datei namens -i in diesem Verzeichnis und folgen Sie dazu dem folgenden Befehl:

touch -- -i or touch ./-i

Versuchen Sie jetzt rm -rf *:

Mon Oct 21>$pwd
/tmp/demo
Mon Oct 21>$touch {1..4}
Mon Oct 21>$touch -- -i
Mon Oct 21>$ls
1  2  3  4  -i
Mon Oct 21>$rm -rf *
rm: remove regular empty file `1'? y
rm: remove regular empty file `2'? y
rm: remove regular empty file `3'? y
rm: remove regular empty file `4'? y

Der obige Befehl übersetzt sich selbst zu:rm -rf -i *, wobei -i Dateien interaktiv löschen soll. Es fordert also bei jeder Dateilöschung auf!

4. Verwenden Sie safe-rm (empfohlen)

Safe-rm ist ein Sicherheitstool, das das versehentliche Löschen wichtiger Dateien verhindern soll, indem /bin/rm durch einen Wrapper ersetzt wird, der die angegebenen Argumente gegen eine konfigurierbare schwarze Liste von Dateien und Verzeichnissen prüft, die niemals entfernt werden sollten.

Benutzer, die versuchen, eine dieser geschützten Dateien oder Verzeichnisse zu löschen, können dies nicht tun und erhalten stattdessen eine Warnmeldung:

#rm -rf /etc
Skipping /etc

5. Wie in Windows können Sie ein Papierkorbverzeichnis erstellen und alle gelöschten Dateien in das Papierkorbverzeichnis verschieben. (Nicht empfohlen)

Dies ist keine gute Vorgehensweise, da sich diese Dateien/Ordner beim ständigen Löschen immer noch im Papierkorbverzeichnis ansammeln und Sie auch Zeit damit verbringen müssen, diese zu löschen. Wenn Sie es dennoch tun möchten, hier ist es:Erstellen Sie eine Datei del.sh mit folgendem Inhalt unter /usr/local/bin/.

#!/bin/bash
DIRECTORY="$HOME/.Trash";
if [ ! -d $DIRECTORY ] ; then
       echo "Directory $DIRECTORY doesn't exist";
       echo "Creating the .Trash directory.....";
       mkdir $DIRECTORY;
fi
mv "$@" $HOME/.Trash

Erstellen Sie einen Alias ​​für rm in Ihrer /etc/bashrc oder /etc/profile

alias rm="/usr/local/bin/del.sh"

6. Erstellen Sie ein Bash-Skript, das Sie warnt, wenn Sie den Befehl rm ausführen ? (Empfohlen)

Erstellen Sie eine Datei del.sh mit folgendem Inhalt unter /usr/local/bin/.

#!/bin/bash
# Copyright (c) 13th Aug 2014 Focus4Infotech
#           All Rights Reserved
# Function of this script is to avoid unknowing deletion
# of files, which is hard to recover. This script
# doesn't backup, instead it just warns and upon user
# confirmation, it removes the files. 
# Authors : Focus4infotech.com
echo " __   ___ _     ___ ___ _ _  _  ___     ___ _ _     ___  ___     ";
echo "|  \ |___ |    |___  |  | |\ | | __    |___ | |    |___ [__      ";
echo "|__/ |___ |___ |___  |  | | \| |__]    |    | |___ |___ ___] ....";

echo "           __   ___     ___  __   ___  ___  ___ _  _ _    ";
echo "          |__] |___    |    |__| |__/ |___ |___ |  | |    ";
echo "          |__] |___    |___ |  | |  \ |___ |    |__| |___ ";

echo "       ___  __  _  _ ___ _ _  _ _  _  ___    _   _   _  _ ";
echo "      |    |  | |\ |  |  | |\ | |  | |___     \_/  / |\ | ";
echo "      |___ |__| | \|  |  | | \| |__| |___      |  /  | \| ";

read -p "" choice
case "$choice" in
  y|Y ) rm "$@";;
  n|N ) echo "Exiting without any change.....";exit 0;;
  * ) echo "Exiting without any change......";exit 0;;
esac

Erstellen Sie einen Alias ​​für rm in Ihrer /etc/bashrc oder /etc/profile

alias rm="/usr/local/bin/del.sh"

Linux
  1. So verwenden Sie den Su-Befehl unter Linux

  2. [Linux] :So schließen Sie das Verzeichnis aus, wenn Sie den Shell-Befehl „tar“ verwenden

  3. Wie kann die versehentliche Ausführung des Befehls Rm -r * verhindert werden?

  4. Wie kann man beenden, wenn ein Befehl fehlgeschlagen ist?

  5. Verhindert, dass Benutzer versehentlich Leerzeichen zwischen rm und Wildcard eingeben

So verwenden Sie den Linux-SS-Befehl

So entfernen Sie ein Verzeichnis in Linux

So verwenden Sie den Linux-nohup-Befehl

So verfolgen Sie die Programmausführung mit dem Linux-Strace-Befehl

So verwenden Sie den PS-Befehl

So verwenden Sie den TOP-Befehl