ubuntuusers.de

tput in bash

Status: Gelöst | Ubuntu-Version: Ubuntu MATE 18.04 (Bionic Beaver)
Antworten |

Feninic

Avatar von Feninic

Anmeldungsdatum:
10. August 2011

Beiträge: 43

Guten Morgen zusammen,

bis gestern hatte ich Kubuntu 18.04 laufen und bin auf Ubuntu Mate 18.04 umgestiegen. Meine Bash hatte ich in der .bashrc personalisiert. Unter anderem mit tput. Als ich jetzt mein personalisiertes .bashrc in meinen persönlichen Ordner kopiert habe, fehlte die Farbgebung. die .profile ist auch entsprechend geändert, dass ich dort automatisch die personalisierungen von der .bashrc bekomme. Danach habe ich die gebackupte originale .bashrc zurückgeholt und eben die Personalisierung erneut hineingeschrieben. Doch auch jetzt funktioniert der tput nicht. Sprich die Farbgebung fehlt. Auch die Farbendefinition ohne tput in eine Variable geschrieben funktioniert nicht. Ich vermute einfach, dass ich da irgendwo einen Fehler drin habe. Doch wo? Wenn ich die Wahl habe ob ich mit tput oder mit der anderen Farbgebungsmethode arbeiten will, wäre mir tput lieber.

Hat eventuell jemand eine Idee dazu? Herzlichen Dank schonmal im Voraus

Liebe Grüße Eure Feninic

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#Entweder Farbendefinition mit tput oder ohne tput.
#Entsprechend auskommentieren bitte!!!

#Farben Definition mit tput
Datum=$(tput setaf 21);
User=$(tput setaf 91);
Host=$(tput setaf 127);
Dir=$(tput setaf 51);
Prompt=$(tput setaf 40);
Zwtext=$(tput setaf 226);
Dollar=$(tput setaf 9);

#Farben Definition ohne tput
#Datum=$(\033[0;34m);
#User=$(\033[1;35m);
#Host=$(\033[0;35m);
#Dir=$(\033[1;36m);
#Prompt=$(\033[0;32m);
#Zwtext=$(\033[1;33m);
#Dollar=$(\033[0;31m);

#Aufbau
PS1='\n';   #Leerzeile am Anfang
PS1+='\[${Datum}\]\d \t ';    #Datum und Uhrzeit
PS1+='\[${User}\]\u ';    #Username
PS1+='\[${Zwtext}\]auf ';    #Zwischentext 1
PS1+='\[${Host}\]\h ';    #Hostname
PS1+='\[${Zwtext}\]in';    #Zwischentext 2
PS1+='\n';    #Zeilenwechsel
PS1+='\[${Dir}\]\w';    #Arbeitsverzeichnis
PS1+='\n';    #Zeilenwechsel
PS1+='\[${Dollar}\]\$ ';    #rootindikator
PS1+='\[${Prompt}\]';    #Prompt

#Ausgabe
export PS1;

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13166

Du verwendest beim Zusammenbauen von $PS1 einfache Quotes, so dass die Variablen nicht aufgelöst werden.

Feninic

(Themenstarter)
Avatar von Feninic

Anmeldungsdatum:
10. August 2011

Beiträge: 43

Dankeschön....

Ich probiere es mal mit den Anführungszeichen. Hoffentlich klappt es.

Liebe Grüße Eure Feninic

Feninic

(Themenstarter)
Avatar von Feninic

Anmeldungsdatum:
10. August 2011

Beiträge: 43

Habe direkt mal abgeändert und es klappt nicht

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#Entweder Farbendefinition mit tput oder ohne tput.
#Entsprechend auskommentieren bitte!!!

#Farben Definition mit tput
Datum=$(tput setaf 21);
User=$(tput setaf 91);
Host=$(tput setaf 127);
Dir=$(tput setaf 51);
Prompt=$(tput setaf 40);
Zwtext=$(tput setaf 226);
Dollar=$(tput setaf 9);

#Farben Definition ohne tput
#Datum=$(\033[0;34m);
#User=$(\033[1;35m);
#Host=$(\033[0;35m);
#Dir=$(\033[1;36m);
#Prompt=$(\033[0;32m);
#Zwtext=$(\033[1;33m);
#Dollar=$(\033[0;31m);

#Aufbau
PS1="\n";   #Leerzeile am Anfang
PS1+="\[${Datum}\]\d \t ";    #Datum und Uhrzeit
PS1+="\[${User}\]\u ";    #Username
PS1+="\[${Zwtext}\]auf ";    #Zwischentext 1
PS1+="\[${Host}\]\h ";    #Hostname
PS1+="\[${Zwtext}\]in";    #Zwischentext 2
PS1+="\n";    #Zeilenwechsel
PS1+="\[${Dir}\]\w";    #Arbeitsverzeichnis
PS1+="\n";    #Zeilenwechsel
PS1+="\[${Dollar}\]\$ ";    #rootindikator
PS1+="\[${Prompt}\]";    #Prompt

#Ausgabe
export PS1;

Gibt es noch andere Ideen?

Liebe Grüße Eure Feninic

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11243

Wohnort: München

Der export von PS1 ist IMHO überflüssig, weil die Konfigurationsdateien von der jeweiligen shell gesourced werden. Was erhoffst du dir von den eckigen Klammern um die Escape-Codes für die Farben herum? So sollte es funktionieren:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
Datum=$(tput setaf 21);
User=$(tput setaf 91);
Host=$(tput setaf 127);
Dir=$(tput setaf 51);
Prompt=$(tput setaf 40);
Zwtext=$(tput setaf 226);
Dollar=$(tput setaf 9);

PS1="\n";   #Leerzeile am Anfang
PS1+="${Datum}\d \t ";    #Datum und Uhrzeit
PS1+="${User}\u ";    #Username
PS1+="${Zwtext}auf ";    #Zwischentext 1
PS1+="${Host}\h ";    #Hostname
PS1+="${Zwtext}in";    #Zwischentext 2
PS1+="\n";    #Zeilenwechsel
PS1+="${Dir}\w";    #Arbeitsverzeichnis
PS1+="\n";    #Zeilenwechsel
PS1+="${Dollar}\$ ";    #rootindikator
PS1+="${Prompt}";    #Prompt

Feninic

(Themenstarter)
Avatar von Feninic

Anmeldungsdatum:
10. August 2011

Beiträge: 43

Dankeschön für die Überarbeitung

Wegen der eckigen Klammern, ich dachte das müsse so, weil die Farben ja auch in diesen geschrieben werden. Mit dem export von PS1, dass der IMHO überflüssig ist, wusste ich noch nicht. Danke für die Info...

Habe den überarbeiteten Code mal so kopiert und in eine neue .bashrc eingefügt. Die alte .bashrc in ein Backupordner kopiert. Aber leider ändert sich mit dem überarbeiteten Code nichts am Ergebnis. Die Bildschirmausgabe im Terminal von den einzelnen Teilen ist immer noch alles in diesem weißlichen Grau...

Vielleicht gibt es noch weitere Ansätze, woran es liegen könnte?

Liebe Grüße Eure Feninic

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11243

Wohnort: München

Wie sieht denn die neue ~/.bashrc jetzt aus, was passiert wenn du einen neue Shell öffnest bzw. source ~/.bashrc ausführst und mit welchem Terminal Emulator arbeitest du?

Dakuan

Avatar von Dakuan

Anmeldungsdatum:
2. November 2004

Beiträge: 6479

Wohnort: Hamburg

Wegen der eckigen Klammern, ich dachte das müsse so, weil die Farben ja auch in diesen geschrieben werden.

Die öffnende eckige Klammer ist Teil der Escape-Sequenz. Und wenn du genau hinsiehst, findest du bei den Farben auch keine schließende Klammer.

Feninic

(Themenstarter)
Avatar von Feninic

Anmeldungsdatum:
10. August 2011

Beiträge: 43

Wie sieht denn die neue ~/.bashrc jetzt aus, was passiert wenn du einen neue Shell öffnest bzw. source ~/.bashrc ausführst und mit welchem Terminal Emulator arbeitest du?

Also

zu 1) die neue ~/.bashrc enthält den von Dir bearbeiteten Code und sonst nichts

zu 2) bei source ~/.bashrc ändert sich auch nichts, die Terminalausgabe hat immer noch ein und die selbe Standardfarbe

zu3) ich arbeite mit dem Standard Terminal von Ubuntu Mate 18.04 Das nennt sich MATE-Terminal

Feninic

(Themenstarter)
Avatar von Feninic

Anmeldungsdatum:
10. August 2011

Beiträge: 43

Dakuan schrieb:

Wegen der eckigen Klammern, ich dachte das müsse so, weil die Farben ja auch in diesen geschrieben werden.

Die öffnende eckige Klammer ist Teil der Escape-Sequenz. Und wenn du genau hinsiehst, findest du bei den Farben auch keine schließende Klammer.

Ah Dankeschön...wieder etwas mehr dazu gelernt Liebe Grüße

Vain

Avatar von Vain

Anmeldungsdatum:
12. April 2008

Beiträge: 2503

Wie ist die Ausgabe von echo $TERM?

Die eckigen Klammern um die Codes herum waren übrigens notwendig. Die Teilen der Shell mit, dass darin Zeichen sind, die nicht zur Länge des sichtbaren Prompts beitragen. Ohne diese Klammern wirst du seltsame Artefakte beim Betätigen von Backspace oder der Eingabe von langen Zeilen haben.

Feninic

(Themenstarter)
Avatar von Feninic

Anmeldungsdatum:
10. August 2011

Beiträge: 43

Vain schrieb:

Wie ist die Ausgabe von echo $TERM?

Die eckigen Klammern um die Codes herum waren übrigens notwendig. Die Teilen der Shell mit, dass darin Zeichen sind, die nicht zur Länge des sichtbaren Prompts beitragen. Ohne diese Klammern wirst du seltsame Artefakte beim Betätigen von Backspace oder der Eingabe von langen Zeilen haben.

OK Dankeschön, also lag ich mit meinem Zweiten gar nicht so verkehrt. Habe die eckigen Klammern wieder gesetzt, so wie sie da waren.

Die Ausgabe von echo $TERM zeigt das selbe an.

Liebe Grüße Eure Feninic

Vain

Avatar von Vain

Anmeldungsdatum:
12. April 2008

Beiträge: 2503

Feninic schrieb:

Die Ausgabe von echo $TERM zeigt das selbe an.

Huch? Dasselbe wie was? 😀

Feninic

(Themenstarter)
Avatar von Feninic

Anmeldungsdatum:
10. August 2011

Beiträge: 43

Vain schrieb:

Feninic schrieb:

Die Ausgabe von echo $TERM zeigt das selbe an.

Huch? Dasselbe wie was? 😀

UPS....habe das echo davor vergessen 😳

Also $ echo TERM zeigt an xterm

Liebe Grüße Feninic

Vain

Avatar von Vain

Anmeldungsdatum:
12. April 2008

Beiträge: 2503

Feninic schrieb:

Also $ echo TERM zeigt an xterm

Das ist das Problem. Die Variable wird von tput ausgewertet, um zu „erkennen“, welches Terminal du benutzt. Die angefragten Farben werden allesamt nicht von einem nackten xterm unterstützt, also gibt tput jeweils nur leere Ausgaben raus.

Wahrscheinlich hattest du in deiner alten Installation im Terminal konfiguriert, dass als $TERM sowas wie xterm-256color gesetzt ist. Das solltest du jetzt auch machen können, denn das MATE-Terminal benutzt im Hintergrund VTE, welches mit xterm-256color „hinreichend“ kompatibel ist.

(XTerm hat so viele Features, viele davon arkan und uralt, dass man da nicht wirklich von „ist kompatibel“ sprechen kann. Aber es ist für den Alltag kompatibel genug.)

Antworten |