
Ich habe vor einiger Zeit gelesen (kann die Referenz nicht finden), dass die Verwendung eines solchen Alias alias rm="rm -i"
sehr schlecht sei.
Gibt es dafür historische Beweise oder eine vernünftige Erklärung?
Ich könnte mir vorstellen, dass sich ein Benutzer dadurch die schlechte Angewohnheit aneignet, sich bei der Überprüfung seines Befehls auf die Bestätigungsaufforderung zu verlassen, was zu Katastrophen führen könnte, wenn er dies mit einem anderen Profil tut, das nicht über den Alias verfügt.
Antwort1
Sie haben Recht.
Das ist schlecht, weil man sich daran gewöhnt. Wenn Sie ein System verwenden, das es nicht hat, und Sie rm
, beginnt es sofort mit dem Löschen und Sie fragen sich, was los ist.
Viele Benutzer sind es gewohnt, sich per SSH mit verschiedenen Systemen zu verbinden. Daher kommt es häufig vor, dass sie viele verschiedene Systeme verwenden, manchmal ohne dass personalisierte Benutzerkonten (einschließlich Aliasnamen) eingerichtet sind.
Verwenden Sie stattdessen eg alias rmi='rm -i'
und lernen Sie, dieses zu verwenden. Wenn dies auf einem anderen System nicht eingerichtet ist, haben Sie nicht versehentlich Dateien gelöscht und können jederzeit auf die Eingabe des vollständigen Befehls zurückgreifen.
Antwort2
Wie @Daniel sagte, ist es an und für sich nicht schädlich, außer dass es Sie darauf trainiert, dass es da ist. Tatsächlich ist es die Standardeinstellung auf CentOS-Maschinen (und damit auch auf RHEL, nehme ich an – es ist zu lange her, seit ich eines verwendet habe).und es ist ein riesiger Schmerz im Hintern. Für den Rest meiner Zeit bei diesem Auftritt habe ich /bin/rm eingegeben, um das Setup „Linux für Leute, die keinen Root-Zugriff haben sollten“ zu vermeiden.
Antwort3
Ich denke, die große Gefahr besteht darin, dass sich die Leute auf so etwas verlassen, um einen Glob zu filtern. Stellen Sie sich vor, Sie möchten einige Bilder aus einem Verzeichnis löschen, aber nicht alle:
rm -i pics/*.jpg
Sie könnten das verwenden, um den Glob manuell zu filtern, was völlig sinnvoll wäre. Aber wenn Sie es mit einem Alias versehen und verwendet hätten rm
und zufällig in einer Shell ohne diesen Alias gelandet wären und es ausprobiert hätten ... hätten Sie gerade alle Ihre Bilder gelöscht, ups!
Ich persönlich finde auch, dass dieser Alias meinem Blutdruck schadet ;). Aber das ist nur meine Meinung.
Antwort4
Das istvielweniger schädlich, basierend auf meiner Erfahrung aus der Arbeit mit Hunderten von Benutzern in der Vergangenheit:
rm () # must be a function, must require single answer for all targets
{
ls -FCsd "$@"
local reply ; echo -n 'remove[ny]? ' ; read reply
if [ "_$reply" = "_y" ] ; then
/bin/rm -rf "$@" ; else echo '(cancelled)'
fi
}
- Benutzer werden darin geschult, Platzhalter richtig zu verwenden, nicht nur „*“, und sich dann auf die J/N-Eingabeaufforderungen zu verlassen, um Dateien auszuwählen.
- Die Konditionierung zur Verwendung korrekter Platzhalter rettete sie häufig vor einer Katastrophe, wenn sie
rm
in einem anderen Kontext verwendet wurden, in dem entweder diese Funktion oder derrm -i
Alias fehlte. - Ich habe weniger Zeit damit verbracht, Dateien wiederherzustellen, bei denen der Benutzer einmal zu oft „y“ eingegeben hat
- Benutzer müssen nur einmal antworten - was ein klares positives Feedback für ihre Nutzung darstellt
- Control-c unterbricht die Arbeit und meldet, dass nichts geschieht
- Kein Skript, daher
rm
bleibt die Realität unberührt und andere Programme werden nicht beeinträchtigt.
Der Codestil ist größtenteils sh-kompatibel (außer bei Verwendung echo .... | tr -d '\012'
für Pre-Bash-Shells). Sie können Ihren eigenen Stil gerne bash-spezifischer gestalten. Ich poste nicht, um den Code selbst zu teilen, sondern um dieBenutzererfahrungVeränderung, die damit einhergeht.