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

Warum wird die Bash-Eingabeaufforderung fehlerhaft, wenn ich den Verlauf durchsuche?

Für diese Frage gibt es hier bereits Antworten :Terminal-Eingabeaufforderung wird nicht korrekt umbrochen

(9 Antworten)
Vor 3 Jahren geschlossen.

Wenn ich anfange, mir den Befehlsverlauf anzusehen, werden oft einige der Zeichen eines angezeigten Befehls nicht gelöscht, zum Beispiel:

Was passiert:

prompt$ some_command
prompt$ some_commanother_command

Was hätte passieren sollen:

prompt$ some_command
prompt$ another_command

Ich kann diese Zeichen nicht löschen und bash ignoriert sie beim Ausführen des Befehls. Sie verschwinden auch, wenn eine neue Eingabeaufforderung angezeigt wird (nachdem Sie Enter gedrückt haben zum Beispiel).

Ich habe andere Leute gefragt, die an meinem Arbeitsplatz mit Linux arbeiten, und sie sagten, dass sie dieses Problem manchmal auch haben, aber sie hatten keine Idee, wie sie dieses Problem lösen könnten.

Ich habe Ubuntu 11.10 und verwende Guake. Hier ist mein PS1 :

e[0;31mu A ${PWD##*/}e[0;32m$(parse_git_branch)e[0;31m$e[m

wobei parse_git_branch ist

parse_git_branch () {
    git name-rev HEAD 2> /dev/null | sed 's#HEAD (.*)# (1)#'
}

Soweit ich weiß, haben meine Kollegen dieses Problem auch mit weniger „schickem“ PS1.

Akzeptierte Antwort:

Verwenden Sie [...] um die Teile von PS1 herum, die die Länge 0 haben. Es hilft Bash, die Länge des Prompts richtig zu bekommen. Selbst mit dieser Maßnahme kann Ihre Befehlszeile bei der Verwendung von Multibyte-Zeichen beschädigt werden (zumindest meine). Drücken Sie Strg+L hilft auch in solchen Fällen (löscht aber gleichzeitig den Bildschirm).


Linux
  1. Bash-Tipps für den Alltag an der Kommandozeile

  2. Warum erkennt das Bash-Skript keine Aliase?

  3. Warum funktioniert das ~/.bash_profile nicht?

  4. Bash überschreibt die erste Zeile, Ps1 Bash Prompt?

  5. Warum wird das Bash-Skript nach der Ausführung nicht beendet?

Seltsames Zeichen in der Bash-Eingabeaufforderung?

Werden die ersten Zeichen des Befehls beim Beenden im Display wiederholt?

Retten Sie erfolgreich den Tag mit Bash-Verlaufsbefehlen

Warum reicht das Löschen des Bash-Verlaufs nicht aus?

Wie finde ich die Zeilennummer in Bash, wenn ein Fehler aufgetreten ist?

Seltsames Verhalten des Bash-Verlaufs beim Ausführen mehrerer Sitzungen