Es gibt eine Reihe von Tutorials / Beiträgen online (zB http://www.cyberciti.biz/faq/bash-shell-change-the-color-of-my-shell-prompt-under-linux-or-unix/ ) Informationen zum Anpassen der Eingabeaufforderung in Bash durch Festlegen PS1
. Gibt es eine Möglichkeit, die Farbe / Fettdruck des von mir eingegebenen Befehls anzupassen?
Mit anderen Worten, lassen Sie uns als Beispiel sagen, dass ich eine grüne Eingabeaufforderung, einen fettblauen Befehl und dann eine Ausgabe in den Standardfarben wünschte. Im folgenden Beispiel " joe>
" kann ich bereits festlegen, ob die Einstellungen " " grün, blau oder fett sind PS1
. Aber gibt es eine Möglichkeit, wie ich git status
zum Beispiel eine mutige Show machen kann ?
joe> git status
# On branch master
# Your branch is ahead of 'origin/master' by 2 commits.
#
...
preexec() { printf '\e[0m' }
Antworten:
Sie müssten eine Farbe hinter der PS1 hinterlassen (starten Sie sie
>
in Ihrem Beispiel nach) und dann die Bash-DEBUG
Falle verwenden, um die Farbe zu löschen, bevor Ihr Befehl ausgeführt wurde (aber nachdem Sie die Eingabetaste in Ihrer Shell gedrückt haben. Versuchen Sie etwas in der Art :quelle
ls --color=always
gefärbt werden)?^[(B^[[m
). Es kommt jedoch nur auf einigen Systemen vor: Ich habe dies auf zwei Systemen getestet, auf denen Ubuntu 12.04 LTS ausgeführt wird und von denen nur eines die Störung hatte.Der Vollständigkeit halber wird hier beschrieben, wie Sie eine Eingabeaufforderungsfarbe und die Befehlszeilen-Eingabefarbe in Bash festlegen. Setzen Sie diese Zeilen in Ihre
.bashrc
.Die von Chris Down vorgeschlagene DEBUG-Trap wird zum Zurücksetzen der Textattribute verwendet. Es ist für das Debuggen gedacht, aber es ist auch nützlich, Code auszuführen, bevor der vom Benutzer eingegebene Befehl ausgeführt wird .
In der Aufforderungseinstellung:
\[…\]
wird um Escape-Sequenzen herum verwendet, um bash mitzuteilen, dass sie keine Bildschirmanzeige verbrauchen (ohne sie würde der Bildschirm verstümmelt, wenn bash die Eingabeaufforderung neu zeichnen muss).\e[…m
wo…
handelt es sich bei einer Zahl oder allgemeiner bei einer durch Semikolons getrennten Folge von Zahlen um Escape-Folgen, die an das Terminal gesendet werden, um die Farbe und andere Attribute des folgenden Texts zu beeinflussen. Setzt zum Beispiel1;34
fett blau;0;32
Setzt alle Attribute zurück und wechselt dann die Farbe zu Grün. Nach Geschmack anpassen.\w\$
Drucken Sie das aktuelle Verzeichnis und$
oder#
. Sie können dies natürlich nach Belieben ändern und Textattributänderungen dazwischen einfügen, wenn Sie möchten.quelle
Ich lerne gerade über BASH-Befehle und habe hier mit den Farbbefehlen in meiner Version gespielt. Ich fand diese Lösung heraus:
Mit diesem Befehl:
Dekonstruieren: PS1 =: Startet den PS1-Befehl
'': enthält den Befehl in einfachen Anführungszeichen (BASH glaubt nicht, dass es ein Befehl dafür ist)
\: jeder einzelne Befehl beginnt damit
[]: enthält jeden Befehl
\ e (kann auch ein ASCII-Escapezeichen sein): Startet einen Farbbefehl
Der Farbbefehl steht vor dem Objekt, auf das er angewendet wird.
[\ e [0; 36 m]: Cyan
\ h: Hostname
'>': Wird nach dem Hostnamen gedruckt
[\ e [0; 31 m]: rot
Anscheinend macht der rote Befehl am Ende die Eingabe rot. Ändern Sie einfach die Farben nach Ihren Wünschen und das ist, was Sie suchen.
Auch diese Seite hat mir ein wenig geholfen:
https://www.linuxnix.com/linuxunix-shell-ps1-prompt-explained-in-detail/
Meine Version: GNU bash, v. 4.2.46
Pass auf,
Wiesel
quelle