Wie stelle ich die Farbe der Eingabeaufforderung in Bash ein?

7

Das Durchsuchen der Ergebnisse des letzten Befehls in Bash ist etwas schwierig, da die Eingabeaufforderung und die Ergebnisse dieselbe Farbe haben. Dies macht es schwierig, die Ergebnisse aufeinanderfolgender Befehle zu trennen.

Wie ändere ich zum Beispiel die Farbe in Pink?

Yasser Zamani
quelle
1
Sie möchten der PS1-Variablen Farbe hinzufügen.
Rob
Ja, meine aktuelle PS1 ist PS1 = '\ u: \ w \ $', was ich nicht weiß, was bedeutet. Wie soll ich es ändern, um die Eingabeaufforderung auf Pink zu färben, ohne die aktuellen Einstellungen zu verlieren?
Yasser Zamani

Antworten:

9

@ Rob ist richtig; speziell, um zu hellrot zu wechseln (pink ist keine verfügbare Farbe):

PS1 = "\[\033[1;31m\]\u:\w\$\[\033[0m\] "
#      ^^^^^^^     ^^                    Begin/end ANSI escape
#             ^^^^^                      "light red foreground"
#                    ^^^^^^^             Your original prompt
#                           ^^^^^^^^^^^  Reset color back to default foreground

Sie müssen ANSI-Escape-Sequenzen (in diesem Fall 1;31mden Code für "hellroten Vordergrund") verwenden, die von \[\033[und eingeschlossen sind \].

Bearbeiten: Hellviolett ist möglicherweise näher an der gewünschten Farbe. Die PS1Änderung bleibt als Übung für den Leser.

Referenz @ das Linux-Dokumentationsprojekt

Alex Hirzel
quelle
1
Ich bin nicht besonders gut mit Ansi-Codes, also habe ich die Antwort jemand anderem überlassen.
Rob
ANSI-Escape-Sequenzen beginnen mit \033und gehen bis (einschließlich) m. Die Umgebung \[und \]Bash-spezifisch sind erforderlich und erforderlich, damit Bash verfolgen kann, wo sich der Cursor befindet (es wird erwartet, dass alles in diesen Markierungen den Cursor nicht vorschiebt).
Egmont
0

Wenn Sie eine alternative Lösung wünschen, können Sie ein kleines Skript zum Festlegen der PS1-Farben für die Terminalsitzung erstellen, ohne sie dauerhaft zu machen (es sei denn, Sie möchten dauerhafte Farben, folgen Sie der Lösung von Alex).

Wenn wir ein Verzeichnis erstellen yellow.shund in einem /usr/binVerzeichnis speichern und dann die Datei mit ausführbar machen chmod +x yellow.sh, können wir yellow.shden folgenden Code bearbeiten und hinzufügen:

#!/bin/bash
clear

# Yellow color variable
ylw='\x1b[93m'

echo -e "${ylw}"
clear

Wenn Sie dieses Skript ausführen, ändert sich Ihre Terminalfarbe in Gelb. Mit diesem Code kannst du deine PS1-Farbe auf die gleiche Weise zurücksetzen:

#!/bin/bash
clear

# Reset color to default
rst='\x1b[0m'

echo -e "${rst}"
clear

Hier ist eine kurze Liste einiger Farbcode-Variablen, die Sie verwenden können.

black=$'\x1b[90m' # Dark gray. Not used much.
red=$'\x1b[91m'
green=$'\x1b[92m'
yellow=$'\x1b[93m'
blue=$'\x1b[94m'
purple=$'\x1b[95m'
cyan=$'\x1b[96m'
pink=$'\x1b[97m'
default=$'\x1b[0m' # Reset to default color.

Verwendung für allgemeine Befehle in einfachen Skripten:

echo -e "${red} $(ls $1) ${default}" # Argument would be the directory you want to list.

Dies kann ziemlich schnell erfolgen, je nachdem, wie Sie Ihre zu verwendenden Farben einrichten. Die von mir angegebenen Farbcodes sind nicht alle. Abhängig davon, welche Farben Ihr Terminal unterstützt, können Sie einen Bereich von 256 Farben verwenden.

Yokai
quelle