GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Was ist -bash:!:Ereignis nicht gefunden

Lösung 1:

! ist ein Sonderzeichen für Bash, es wird verwendet, um auf vorherige Befehle zu verweisen; zB

!rm

ruft den letzten Befehl ab, der mit der Zeichenkette „rm“ und

begann, und führt ihn aus
!rm:p

wird den letzten Befehl, der mit der Zeichenkette "rm" begann, abrufen, aber nicht ausführen. bash interpretiert das Ausrufezeichen in echo "reboot your instance!" als "ersetzen Sie hier den letzten Befehl, der mit dem/den Zeichen unmittelbar nach dem Ausrufezeichen begann ", und grummelt Sie an, dass es kein Ereignis (Befehl) in Ihrem Verlauf finden kann, das mit einem einfachen doppelten Anführungszeichen begann.

Versuchen Sie es

echo reboot your instance\!

um das Ausrufezeichen vor bash zu schützen (escapen).

Lösung 2:

Sie können die Protokollersetzung mit set +H deaktivieren .

Lösung 3:

Um Ihr ursprüngliches Problem zu lösen, versuchen Sie es mit einfachen Anführungszeichen anstelle von doppelten Anführungszeichen. Bei letzterem versucht die bash, bestimmte Zeichen zu expandieren, bevor sie das Ergebnis an den Befehl (in diesem Fall echo) weitergibt. Mit einfachen Anführungszeichen übergibt bash den gesamten String unverändert.

! wird in Befehlen verwendet, um auf den Befehlszeilenverlauf zu verweisen. Siehe:http://tldp.org/LDP/abs/html/abs-guide.html#HISTCOMMANDS für einen vollständigen Satz. Mit dem obigen Beispiel versucht bash, !" zu erweitern als Verweis auf ein Ereignis, bevor Echo einen Blick darauf wirft, daher der Fehler.

Beachten Sie, dass in Skripten all der Verlaufsbefehle sind deaktiviert, da sie nur in einer interaktiven Shell sinnvoll sind.

Die einzige, die ich regelmäßig verwende, ist !$ . Es wird bis zum letzten Argument des vorherigen Befehls erweitert. Es ist stellenweise eine nützliche Abkürzung.

Lösung 4:

Setzen Sie einfach ein Leerzeichen zwischen ! und " als es funktioniert.

Lösung 5:

Ja, ! ist ein Sonderzeichen für Bash, es wird verwendet, um auf vorherige Befehle zu verweisen.

Einige der Möglichkeiten, wie Sie mit der Situation umgehen können

Das Folgende gibt die Zeichenfolge so aus, wie sie ist

echo 'Reboot your instance!'

Das Folgende führt den Befehl aus und verkettet die Zeichenfolge

echo 'escaping #'" adding `which python` to the string"
echo '#!'`which python`

Linux
  1. [Behoben] bash:sudo:Befehl nicht gefunden

  2. Befehl nicht in Bash gefunden behoben

  3. ifrename:Befehl nicht gefunden

  4. ln:Befehl nicht gefunden

  5. Postgresql -bash:psql:Befehl nicht gefunden

Fehlerbehebung „Bash:Command Not Found“-Fehler in Linux

aws-shell:Befehl nicht gefunden

rm:Befehl nicht gefunden

mv:Befehl nicht gefunden

bash sh - Befehl nicht gefunden

bash - make-Befehl nicht gefunden