Ändern Sie die Farbe eines bestimmten Buchstabens im Benutzernamen in der PS1 von bash

9

Ich möchte die Farbe eines bestimmten Buchstabens in meinem Benutzernamen ändern, der von PS1 in Bash angezeigt wird.

Beispiel: Wenn dies der Fall \uist rahul, möchte ich, dass der Buchstabe hblau und der Rest weiß ist.

Ich weiß, dass \usich dies auf den Benutzernamen bezieht und das Hinzufügen einer Farbe zu einer gesamten 'Entität' durch Hinzufügen von Tags wie: erfolgt [\033[38;5;15m\].

Wenn es möglich ist, kann ich bitte wissen, wie man das gleiche macht.

Rahul Bharadwaj
quelle

Antworten:

13

Wenn es Ihnen nichts ausmacht, die \uFlucht nicht zu nutzen , können Sie dies folgendermaßen tun:

PS1="\[\e[0;31m\]${USER:0:1}\[\e[m\]${USER:1} "

Dadurch wird die Eingabeaufforderung nur auf den Benutzernamen und ein Leerzeichen gesetzt. Das erste Zeichen des Benutzernamens ist rot. Dies funktioniert durch $USERzweimaliges Erweitern der Variablen mit einem bestimmten Bereich. Das erste Mal ist der Bereich nur von 0 bis 1. Das zweite Mal ist es von 1 (das zweite Zeichen) bis zum Ende.

Verwenden Sie Folgendes, um die von Ihnen angeforderte Eingabeaufforderung zu erhalten:

PS1="${USER:0:2}\[\e[0;34m\]${USER:2:1}\[\e[m\]${USER:3} "
Sebastian Stark
quelle
1
Sie können die Länge einfach weglassen , um die gesamte Zeichenfolge beginnend mit dem Versatz zu drucken : ${USER:1}für den gesamten Benutzernamen mit Ausnahme des ersten Zeichens. Schöne Lösung! Können Sie auch zeigen, wie Sie die Farbe des dritten Zeichens ändern können, wie es OP verlangt?
Nachtisch
1
Man kann solche Dinge testen mit echo -ezBecho -e "${USER:0:2}\e[0;34m${USER:2:1}\e[m${USER:3} "
Dessert
2
Muss dies mit verschiedenen Benutzernamen funktionieren (z. B. den 3. Buchstaben für alle hervorheben)? Wenn es nur für Sie ist, ist es einfacher, die Buchstaben Ihres Benutzernamens fest zu codieren, z. B. raanstelle von ${USER:0:2}usw.
Montag,
@egmont Hardcoding ist fast nie der beste Weg, aber zugegebenermaßen oft viel einfacher. Auf diese Weise können Sie den Code in einer globalen Konfigurationsdatei ablegen oder für andere freigeben. Und es behandelt den Fall, wenn Ihr Konto umbenannt wird.
Sebastian Stark
1
Persönlich teile ich meine eigene Shell-Konfiguration zwischen drei Konten mit unterschiedlichen Namen. Aber vielleicht sollten wir hier nicht in die Philosophie einsteigen :)
Sebastian Stark