Es gibt einige Terminalbefehle, mit denen sich große Datenmengen sehr effizient zerstören lassen. Zum Beispiel: sudo rm -rf /*
oder rm -rf /*
. Ich möchte eine Warnung einrichten, die angezeigt wird, wenn diese zerstörerischen Befehle eingegeben werden. Etwa so:
sudo rm -rf /*
Are you sure you want to remove all files from your root
directory recursively? This operation will remove all files from the root
directory, any mounted filesystems attached to it and essential operating
system files.
Are you sure you want to proceed? [Y/n]
rm -rf /*
Are you sure you want to remove all files owned by $USER
recursively? This operation will remove all your files on the root
filesystem and any filesystems mounted to it.
Are you sure you want to proceed? [Y/n]
Wie schreibt man ein Skript, das dies tut?
Antwort1
rm
hat die Option -i
, die jedes Mal fragt, bevor eine Datei entfernt wird. Ich denke, das ist nicht das, was Sie wollen, weil es fragtJEDENZeit vor dem Entfernen einer Datei, was oft viele Hunderte von Bestätigungen nach sich ziehen würde, wenn Sie beispielsweise ein Git-Repo rekursiv löschen möchten.
Was Sie wollen, ist wahrscheinlich ein einfaches Skript, das "ersetzt" rm
wie dieses
#!/bin/bash
if [ "$(ls -l $1 | wc -l)" = "1" ]; then
rm $1 $@
else
echo "You are going to delete these ($(ls -l $1 | wc -l)) files/directories via shell globbing"
ls $1
read -p "Do you really want to delete these files? [y/n]" yn
if [ $yn = [Yy] ]; then
rm $1 $@
fi
fi
Hinweis: Sie müssen das Skript wie „rm FILE ARGUMENTS“ verwenden.
Dieses Skript prüft, ob Sie mit Shell-Globbing mehr als eine Datei (Verzeichnis) auswählen, entfernt die Datei jedoch, wenn es nur eine ist.