GNU/Linux >> Linux Esercitazione >  >> Linux

[Linux]:come prevenire l'esecuzione accidentale del comando "rm -rf".

Come esseri umani dovremmo accettare errori come:rm -rf * accadrebbe ! Dicendo "Prevenire è meglio che curare", seguiremo le migliori pratiche durante l'esecuzione di tali comandi critici. Qui ti mostreremo come evitare tali cancellazioni accidentali sulle tue macchine Linux. Tuttavia, se hai eliminato i file e desideri recuperarli, segui: come recuperare i dati eliminati !

1. Non usare mai rm -rf ./* (consigliato)

In pratica, invece di ./ all'inizio di un percorso usa semplicemente *. Le barre in realtà non aggiungono alcun valore al comando e creeranno solo confusione. Il comando sopra può essere riscritto meglio come:

rm -rf *

2. Usa "–preserve-root" come opzione per rm (consigliato)

Il comando rm include un'opzione “–preserve-root” per impedire la cancellazione accidentale della directory principale, ma questo comportamento non è l'impostazione predefinita nelle macchine meno recenti. Quindi aggiungi semplicemente quanto segue a /etc/bashrc e /etc/profile d'ora in poi:

alias rm=”rm -–preserve-root”

Nota:se desideri ancora eliminare / puoi utilizzare l'attributo –no-preserve-root

3. Se si desidera impedire l'eliminazione di directory importanti? (Consigliato)

Crea un file chiamato -i in quella directory e per farlo segui il comando seguente:

touch -- -i or touch ./-i

Ora prova 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

Il comando precedente si traduce in:rm -rf -i *, in cui -i è per eliminare i file in modo interattivo. Quindi richiede l'eliminazione di ogni file!

4. Usa safe-rm (consigliato)

Safe-rm è uno strumento di sicurezza inteso a prevenire la cancellazione accidentale di file importanti sostituendo /bin/rm con un wrapper, che controlla gli argomenti forniti rispetto a una lista nera configurabile di file e directory che non dovrebbero mai essere rimossi.

Gli utenti che tentano di eliminare uno di questi file o directory protetti non potranno farlo e verrà invece mostrato un messaggio di avviso:

#rm -rf /etc
Skipping /etc

5. Come in Windows, puoi creare una directory cestino e spostare tutti i file eliminati nella directory cestino. (Non consigliato)

Questa non è una buona pratica, poiché continui a eliminare, questi file/cartelle vengono ancora accumulati nella directory del cestino e devi dedicare tempo all'eliminazione anche di quelli. Tuttavia, se desideri farlo, eccolo qui:Crea un file del.sh con il seguente contenuto in /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

crea un alias per rm nel tuo /etc/bashrc o /etc/profile

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

6. Crea uno script bash per avvisarti quando esegui il comando rm? (Consigliato)

Crea un file del.sh con il seguente contenuto in /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

crea un alias per rm nel tuo /etc/bashrc o /etc/profile

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

Linux
  1. Come usare il comando Su in Linux

  2. [Linux]:come escludere la directory quando si utilizza il comando shell "tar".

  3. Come pianificare un comando Rsync?

  4. Come prevenire l'esecuzione accidentale del comando Rm -r *?

  5. Come uscire se un comando fallisce?

Come utilizzare il comando SS di Linux

Come rimuovere una directory in Linux

Come usare il comando nohup di Linux

Come tracciare l'esecuzione del programma utilizzando il comando Strace di Linux

Come usare il comando PS

Come usare il comando TOP