Bash-Eingabeaufforderung: Aktuelles Verzeichnis am Ende der Zeile anzeigen

Bash-Eingabeaufforderung: Aktuelles Verzeichnis am Ende der Zeile anzeigen

Wie kann ich erreichen, dass meine Bash-Eingabeaufforderung etwas anzeigt?Endeder Zeile (mit dem Cursor wie üblich am Anfang derselben Zeile)? Genauer gesagt möchte ich eine verkürzte Eingabeaufforderung mit einem einzelnen Zeichen wie $oder anzeigen >, nach der ich meinen Befehl eingeben kann. Aber ich möchte das aktuelle Arbeitsverzeichnis am Ende der Zeile sehen können, wo es mir nicht „auffallend“ auffällt.

Es ist mir egal, was passiert, wenn ich einen wirklich langen Befehl eingebe. Er kann das aktuelle Arbeitsverzeichnis oder was auch immer sonst dort in meiner Eingabeaufforderung angezeigt wird, überschreiben.

Alternativ stört es mich nicht, wenn die Eingabeaufforderung dazu führt, dass das aktuelle Arbeitsverzeichnis oben rechts oder oben links oder unten rechts/links auf dem Bildschirm angezeigt wird. Ich möchte es einfach nicht ständig vor Augen haben, aber ich möchte, dass es sichtbar ist.

Antwort1

Ich konnte PS1 so einstellen, dass der aktuelle Pfad am Ende der Eingabeaufforderungszeile ausgedruckt wird:

PS1='\[$(for ((i=1; i < COLUMNS - ${#PWD} - 3; ++i)) ; do printf " " ; done ; printf "$PWD")\]'

Es gibt jedoch mehrere Probleme, die ich nicht lösen konnte:

  1. Der Pfad verschwindet, wenn Sie drückenBackspace
  2. Obwohl der gesamte Ausdruck in Markierungen mit der Breite Null eingeschlossen ist , bewegt sich der Cursor ganz nach rechts, wenn Sie auch das oder \[...\]drucken .$>

Ich habe Leute gesehen, die PROMPT_COMMAND=pwdstattdessen verwendet haben, um den Pfad anzuzeigen, aber es reduziert die Anzahl der Zeilen mit Ihren Befehlen im Terminal.

Eine andere Möglichkeit besteht darin, Ihr Terminal oder Ihren Bildschirm/tmux so zu konfigurieren, dass der Pfad irgendwo angezeigt wird. In xterm funktioniert beispielsweise Folgendes:

PS1='\[\e[m\e]0;\W\a\]$ '

Die Sequenz \e[m\e]0;...\alegt den Titel des Fensters fest. Auf dem Bildschirm ist dies "\033k\033\0134\033kTITLE\033\0134".

verwandte Informationen