
Kürzlich ist mir aufgefallen, dass Echos, in denen ich viele "!" einfüge, zu merkwürdigen Ergebnissen führen. Zum Beispiel: echo !!
gibt mir:
echo rm -r * 1000
rm -r * 1000
( rm -r *
war der letzte Befehl, den ich vor der Eingabe ausgeführt habe). Warum passiert das und gibt es eine Möglichkeit, es zu deaktivieren?
Antwort1
Sie sind auf Folgendes gestoßen shell expansion
: Die Shell analysiert Ihren Befehl und ersetzt spezielle Platzhalter durch andere Informationen. Versuchen Sie echo '!!'
(einfache Anführungszeichen), um zu verstehen, was Shell-Erweiterungen und Anführungszeichen bewirken können.
Weitere Informationen zur Shell-Erweiterung finden Sie auf der man
Seite zu bash
. Beachten Sie die Abschnitte zuGeschichte Erweiterung, in dem event designators
ähnliche Dinge besprochen werden !!
, undErweiterung, in dem andere Formen der Schalenerweiterung erörtert werden. Der Abschnitt überzitierenerläutert das Verhalten der Anführungszeichenmechanismen von Bash und den Unterschied zwischen der Auswertung von Zeichenfolgen in einfachen und doppelten Anführungszeichen.