Mein Terminal hat ein Standard-Eingabeaufforderungsformat wie dieses:
Benutzername @ Boxname / Pfad / zu / aktuelles / Verzeichnis $
Der Code, der es erzeugt, sieht folgendermaßen aus: (es hat auch einige Farbdefinitionen)
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[01;34m\] \w \$\[\033[00m\]'
Wenn der Pfad zum aktuellen Verzeichnis zu lang wird, wird es unangenehm, mit dem Terminal zu arbeiten, da Sie ständig Zeilenumbrüche vornehmen. In solchen Fällen würde ich ein Format bevorzugen, das eine kürzere Zeichenfolge wie diese erzeugt:
Benutzername @ Boxname aktueller_Verzeichnisname $
Der Code, der es erzeugt, würde so aussehen (wieder mit Farbe):
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[01;34m\] $(basename ${PWD}) \$ \[\033[00m\]'
Weiß jemand, wie ich das Format des aktuellen Terminalfensters einfach von einem Stil zum anderen umschalten kann, indem ich einfach Folgendes eingebe : prompttoggle
?
bash
gnome-terminal
Rotareti
quelle
quelle
PROMPT_DIRTRIM=0
undPROMPT_DIRTRIM=1
scheint einfacher zu sein als das Umschalten zwischen verschiedenen Werten fürPS1
und das Ergebnis ist fast das gleiche. Danke für die Information!PROMPT_DIRTRIM
one kann dem Befehl auch Argumente hinzufügen. Wenn Sie kein Argument übergeben, wechseln Sie zwischenPROMPT_DIRTRIM=0
und,PROMPT_DIRTRIM=1
und wenn Sie eine Zahl als Argument übergeben, setzen SiePROMPT_DIRTRIM
sie.promptlen
wäre dann ein passenderer Name für den Befehl.Antworten:
Speichern Sie sowohl Ihre langen als auch Ihre kurzen
PS1
Variablen unter einem anderen Namen:Stellen Sie zunächst sicher, dass
PS1
einer von ihnen eingestellt ist:Dann können Sie einen Alias wie diesen erstellen, um zwischen den beiden PS1-Werten umzuschalten:
Durch Hinzufügen aller vier Zeilen zu Ihrer
~/.bashrc
Datei wird der in Ihren Bash-Sitzungen verfügbare Befehl ausgeführt. Hier sind sie erneut, um das Kopieren zu vereinfachen:quelle
Sie können eine winzige
bash
Funktion verwenden:Die obige Funktion stimmt überein, wenn der Strom
$PS1
enthältbasename
, wenn ja, dann ist dasPS1
ohnebasename
gesetzt, andernfalls ist das mitbasename
gesetzt.Fügen Sie die Funktion in Ihre ein
~/.bashrc
, um sie in allen interaktiven Sitzungen verfügbar zu machen.Beispiel:
quelle
Oder ... machen Sie zwei sehr kleine Funktionen und fügen Sie am Ende Ihrer hinzu
~/.bashrc
Geben Sie für eine verkürzte Eingabeaufforderung Folgendes ein,
promptshort
um zum vollständigen Pfad zurückzukehrenpromptlong
\W
zeigt nur das aktuelle Arbeitsverzeichnis an, also$(basename ${PWD})
ist Overkill imhoSie könnten zu einer Funktion kombinieren, aber "lang" und "kurz" sind beschreibend und beide haben weniger Tastenanschläge als "umschalten";)
Anstatt eine Zeile hinzuzufügen, um PS1 zu überschreiben, bevorzuge ich es, den Code zu optimieren, der sie festlegt (z. B.
force_color_prompt=yes
die Zeile danach auskommentieren und bearbeiten[ "$color_prompt" = yes ]; then
).quelle
Hier ist eine
~/.bashrc
Funktionsdefinition, die ich persönlich verwende, um meine Eingabeaufforderung von der regulären Eingabeaufforderung auf einfach zurückzusetzen / umzuschalten$
. Passen Sie es nach Bedarf an Ihre Bedürfnisse an.quelle
Dies ist eine Antwort auf Ihr Problem (lange Verzeichnisse unterbrechen die Befehlszeile) und nicht speziell auf Ihre Frage (wie Sie die Eingabeaufforderung im laufenden Betrieb ändern können).
Ich habe dieses Problem vor Jahren mit dieser Eingabeaufforderung gelöst:
Was dies tut:
Dies gibt Ihnen den gesamten Platz, den Sie für Ihren Befehl benötigen, verschiebt ihn nicht nach rechts, wenn Sie sich in einer tiefen Verzeichnisstruktur befinden, verstümmelt die Eingabezeile nicht mit Farbcodes (vermeidet seltsame Fehler, die manchmal auftreten) und gibt Ihnen dennoch die Farbe Hinweis, wo die Ausgabe eines Befehls endete und der nächste begann:
quelle