Ich habe ein ksh-Skript, das sowohl unter Linux als auch unter Solaris funktionieren muss. Ich versuche, die Ausgabe bestimmter Befehle einzufärben. Es funktioniert unter Linux (speziell RHEL6), aber nicht unter Solaris (SunOS 5.10).
Befehl unter Linux (die Ausgabe "test" ist richtig rot gefärbt):
[amartin@linuxbox:~]$ echo "test" | sed 's,.*,\x1B[31m&\x1B[0m,'
test
Befehl auf Solaris (die Ausgabe "Test" ist nicht gefärbt):
[amartin@sunbox:~]$ echo "test" | sed 's,.*,\x1B[31m&\x1B[0m,'
x1B[31mtestx1B[0m
Gibt es eine Möglichkeit, diesen Befehl so zu gestalten, dass die Ausgabe rot ist, ohne die Rohcodes in der Ausgabe? Ich kann den Befehl 'echo' nicht ändern, da dies nur die Eingabe des Befehls ist, den ich gerade ausführe.
cat |sed
zu thx einzufärben!Es wäre einfacher zu bedienen
tput
oder
Dadurch wird der Vordergrund auf Rot gesetzt.
somecommand
Anschließend wird die Ausgabe in Rot angezeigt und die Farbsequenz gelöscht. Das funktioniert zumindest mitbash
,zsh
undksh
.Siehe
tmux(1)
undterminfo(5)
für weitere Informationen darüber, was Sie damit machen könnentput
.quelle
Bei einigen Terminals (wie z. B. Bash in Iterm für mich) können Sie die Tasten "Strg-V" gefolgt von "Strg + [" drücken, und das Escape-Zeichen wird in die Eingabezeichenfolge eingefügt. Wenn es funktioniert, werden Sie wahrscheinlich die Zeichen "^ [" auf dem Bildschirm sehen, aber wenn Sie den Cursor darüber bewegen, wird es als ein Zeichen behandelt, da es sich wirklich hinter den Kulissen befindet.
Um zu verstehen, was passiert (und um zu testen, ob dies möglich ist), können Sie Strg + v gefolgt von Strg + i eingeben. Sie sollten sehen, dass das Tabulatorzeichen in Ihre Eingabeaufforderungszeichenfolge eingefügt wurde. Es gibt CS Geschichte, warum dies der Fall ist : aber es stellt sich heraus , dass wirklich alte Tastatur ctrl hatte + ich hart verdrahtet das Tab - Zeichen zu senden; und die Tabulatortaste senden dasselbe elektrische Signal.
Aus diesem Grund interpretiert Bash für viele Terminals immer noch bestimmte Strg-Codes, um sie denselben Zeichen zuzuordnen.
Strg + I ist einem Tabulatorzeichen zugeordnet, und Strg + [stimmt zufällig mit dem ASCII-Escapezeichen überein.
quelle