Ich habe die Farbe Rot mit tput definiert
red=$(tput setaf 1)
Warnungen in meinem Programm einzufärben. Das funktioniert gut:
printf '%sfail\n' "$red"
# prints 'fail' in red
Aber einmal möchte ich die Escape-Sequenz so ausdrucken, wie sie ist, so etwas wie:
\ E [31mfail
Wie würde ich das machen? Ich weiß, dass printf eine %q
Flagge hat, aber es entgeht anderen Dingen, die ich nicht will.
shell
escape-characters
printf
Hilfsmethode
quelle
quelle
\E
, oder andere Steuerzeichen?Antworten:
Klingt wie Sie das Gegenteil wollen , dass sie buchstäblich zu drucken, möchten Sie diese Escape - Zeichen in eine druckbare beschreibende Form umgewandelt wie
\E
oder\033
,^[
...Wenn es nur die ESC (0x1b) Zeichen , das Sie konvertieren möchten
\E
, dann mitksh93
,zsh
oderbash
( in der Regel die gleichen, die auch , dass die Nicht-Standard unterstützen%q
), können Sie tun:Oder Pfeife zu
sed $'s/\e/\\\\E/g'
Für einen allgemeineren Ansatz beim Konvertieren nicht grafischer Zeichen können Sie Folgendes verwenden:
quelle
Verwendung
od
,hexdump
,xxd
oder ähnliche binäre Daten in menschenlesbarer Form zu drucken. Zum Beispiel:quelle
Sie können
printf
direkt verwenden, zquelle