So wie meine Bash-Eingabeaufforderung derzeit konfiguriert ist, wird der gesamte Pfad zum aktuellen Verzeichnis angezeigt. Das ist ärgerlich, wenn ich tief in einem Verzeichnisbaum bin, da die Eingabeaufforderung so lang wird, dass jeder Befehl in die nächste Zeile umgebrochen wird. Wie kann ich festlegen, dass nur der letzte Teil des Pfades angezeigt wird?
Das habe ich in meinem .bashrc
:
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
# If this is an xterm set the title to user@host:dir
case "$TERM" in
xterm*|rxvt*)
PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}: ${PWD/$HOME/~}\007"'
;;
*)
;;
esac
quelle
case
Aussage es außer Kraft setzt, wenn ich auf einem X-Term bin, und das Problem scheint mit demPWD
in derPROMPT_COMMAND
Zeile zu sein. Weißt du was ich da hinstellen soll?\w
(Kleinbuchstaben) setzt es auf vollen Pfad,\W
(Großbuchstaben) schneidet auf das letzte Bit. Der PROMPT_COMMAND setzt den Fenstertitel in einem xterm. Überprüfen Sie Ihre TERM-Variable. wenn es nicht beginnen mit „xterm“ oder „rxvt“ dann wird PROMPT_COMMAND nicht einmal laufen zu bekommen.Der einfache Bash-Ersetzungsbefehl lautet
Zum Anzeigen des letzten Verzeichnisses können Sie einfach
${PWD/*\//}
etwas vorher suchen und das letzte '/
' einfügen und durch nichts ersetzen.Auf meinem Ubuntu-Rechner verwende ich:
quelle
Meine Lösung besteht darin, die oberen drei und unteren 2 Verzeichnisse anzuzeigen, wenn mehr als 5 vorhanden sind
Meine Eingabeaufforderung (die auch andere Informationen enthält) sieht also so aus:
wenn mein pwd eigentlich ist
Meine PS1-Eingabeaufforderung wird wie folgt eingerichtet:
git_branch
ist eine Funktion, die den aktuellen Git-Zweig anzeigt, ich behalte ihn in meinen Punktedateien, es ist:quelle
Meine Lösung für dieses Problem unterscheidet sich geringfügig in Bezug darauf, wie ich es exportiere.
Erstellen Sie eine weitere Eingabeaufforderungsvariable. PS5 und exportieren Sie die folgende Zeichenfolge in Ihre
.profile
/.bash_profile
-Datei:Nun, wann immer Sie die Kurzschrift-PS verwenden müssen, führen Sie einfach Folgendes aus:
eval $PS5
Oder noch besser, erstelle einen Alias in deiner
.bash_aliases
Datei: (danke an @muru )source
wieder, und jetzt können Sie einfach tippenPS5
, um zu wechseln.quelle
Die meisten anderen Lösungen funktionierten nicht unter allen Betriebssystemen, die meine Punktedateien gemeinsam nutzen: AIX, Windoze und Linux. Die bash - Ports waren alte Versionen , die nicht bestimmte Konstrukte unterstützt haben und ich wollte keinen weiteren Prozess Gabel (dh
sed
,awk
usw.) , die deutlich teurer unter Cygwin ist.Das Folgende ist lang, aber performant:
Ich möchte, dass es ausspuckt:
Beachten Sie das Fehlen eines führenden Schrägstrichs in der letzten Zeile, so wie es mir gefällt. Sie können auch die letzten 3 Verzeichnisse ausspucken, indem Sie das Argument in ändern
DIR_LAST
.Ich habe auch versucht, dies mit einer Regex zu tun,
BASH_REMATCH
aber Bash V3 schien die Parens nicht zu mögen und ich konnte nicht herausfinden, wie ich ihnen richtig entkommen konnte. Seufzer.quelle
Ich glaube, diese Option ist viel einfacher, wenn Sie einfach Folgendes tun:
Weisen Sie dies der PS1-Variablen in Ihrer .bashrc-Datei zu:
quelle
Fügen Sie den folgenden Code am Ende Ihres ~ / .bashrc hinzu
quelle