Gibt es eine Möglichkeit, eine Warnung einzurichten, bevor einige Befehle im Terminal ausgeführt werden?

Gibt es eine Möglichkeit, eine Warnung einzurichten, bevor einige Befehle im Terminal ausgeführt werden?

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

rmhat 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" rmwie 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.

verwandte Informationen