Ich möchte der MySQL-Eingabeaufforderung Farben hinzufügen.
Ich habe bisher in einem Skript (database.sh):
mysql -uroot -hlocalhost -A --prompt="\u@\h:\d> "
Ich möchte root
zu rot , @
zu blau , localhost
zu sein grün und database
sein Cyan :
root@localhost:database>
Kann ich das in meinem Skript machen?
Antworten:
Hören Sie nicht auf Leute, die sagen, dass Sie nicht können. Hier:
Dann:
quelle
$(foo)
führt das Ergebnis von foo aus, in diesem Fall die Ausgabe von echo. Das -e zum Echo erweitert das \ x1b zu einem Escapezeichen. \ X1b [31m ist ein Terminal-Steuercode, der die aktuelle Farbe auf Rot setzt. Und so weiter. \ x1b [0m setzt die Farbe auf die Standardfarbe des Terminals zurück.mysql --prompt="`echo -e '\033[01;32m\\d\033[01;34m >\033[00m '`"
\001
und\002
um die Sequenzen, um die richtigereadline
Unterstützung zu erhalten.$ alias colormysql=$(echo -e 'mysql --prompt="\001\x1B[31m\002\\u\001\x1B[34m\002@\001\x1B[32m\002\\h\001\x1B[0m\002:\001\x1B[36m\002\\d>\001\x1B[0m\002 "')
Es scheint mit einer Art von Rendering - Problem zu sein , das Kopieren und Einfügen , dass aus dem Browser, in dem der\002:\001
Teil des Befehls in die Zwischenablage wird gesetzt als\002:\<200c><200b>001
(wo<200c>
und<200b>
ist nicht druckbare Zeichen, wahrscheinlich die CR / NL von Wort- Verpackung).Exemplarische Vorgehensweise zum Einrichten einer farbigen MySQL-Eingabeaufforderung.
Schritt 1. Verstehen Sie, wie Sie sich mit einer festgelegten Eingabeaufforderung normal anmelden:
Schritt 2. Verstehen Sie, wie Sie einen interpretierten Ausdruck durch Echo an 'Alias' weiterleiten können:
Was genau dasselbe macht wie Schritt 1 oben:
Schritt 3. Verstehen Sie, wie echo -e den eingefärbten Ausdruck auswertet:
Dies färbt die "foobar>" - Eingabeaufforderung rot:
So was:
Schritt 4. Wenn Sie sich nicht sicher sind, was hier vor sich geht:
Schauen Sie sich den Ausdruck an:
\x1B[31mfoobar>\x1B[0m
Es besteht aus drei Teilen:
Schritt 4. Erweitert, Lässt die Eingabeaufforderung wirklich schön machen:
Wenn Sie sich nicht sicher sind, was dieser massive Code bewirkt:
Erläuterung:
Also wow. Viele Codes.
quelle
readline
damit Sie nicht über die Zeilenlänge und das Bearbeiten mehrerer Zeilen in dermysql
Befehlszeile verwirrt werden? (Versuchen Sie, mehrere Zeilen zu schreiben, und halten Sie dieIch wollte, dass die Eingabeaufforderung im Titel meiner Terminals enthalten ist. Dies ist im Wesentlichen das gleiche Problem wie die Angabe einer farbigen Eingabeaufforderung, nur eines anderen Escape-Codes. Kam darüber hinweg und fragte mich, ob ich es tun könnte, ohne mich an einen speziellen Alias wie den
colormysql
in den Antworten erwähnten usw. erinnern zu müssen .Ich habe Folgendes zu meinem hinzugefügt,
.bashrc
was den Trick auf meinem Computer bewirkt:export MYSQL_PS1=$(echo -e "\033]0;\u@\h [\d]\007\u@\h [\d]> ")
Damit werden
echo -e
die rohen Escape-Zeichen (und nicht die symbolischen) für dieMYSQL_PS1
Variable generiert . Dies sollte auch mit Farben funktionieren.quelle
Es ist eine ziemlich unglückliche Antwort, aber Sie können nicht.
In Bezug auf die Verwendung von ANSI-Escape-Sequenzen erlaubt MySQL nur Folgendes :
In Bezug auf die Antwort von cmjdmiller funktioniert grc nur, um die Ausgabe der MySQL-Shell über einen "Pager" anzuzeigen.
Das Beste , was Sie tun können , ist die Verwendung rlwrap wie folgt aus :
rlwrap -a -p'GREEN' mysql -uroot -hlocalhost -A --prompt="\u@\h:\d> "
. Dies gibt Ihnen jedoch keine feinkörnige Kontrolle, da es die gesamte Eingabeaufforderung färbt. Seien Sie auch vorsichtig, da das Kennwort im Klartext angezeigt wird.quelle