Escapezeichen in Bash
Dieses Tutorial erklärt, was Escape-Zeichen sind, und bietet eine informative Liste von Escape-Zeichen.
Escape-Zeichen
Escape-Zeichen sind Zeichen, die eine andere Interpretation als sie selbst darstellen. Es gibt keine endgültige Liste mit allen Zeichen, die in der Bash maskiert werden müssen. Eine empfohlene allgemeine Regel lautet jedoch: Falls Sie Zweifel haben, vermeiden Sie es
.
Mit doppelten Anführungszeichen
Die Verwendung von doppelten Anführungszeichen um Escape-Zeichen behält ihre wörtliche Bedeutung bei.
Lassen Sie uns das Sternchen *
mit dem echo-Befehl verwenden, um dies zu demonstrieren. Wenn Sie auf dem Terminal echo *
eingeben, werden alle Dateien im aktuellen Verzeichnis angezeigt. Das Einschließen von *
in doppelte Anführungszeichen zeigt das Sternchen jedoch nur auf der Standardausgabe an.
echo "*"
Es zeigt die folgende Ausgabe an.
*
Mehr Escape-Zeichen in Bash
Es gibt keine endgültige Liste mit allen Zeichen, die in der Bash maskiert werden müssen. Sie können es herausfinden, indem Sie einige dieser Charaktere testen. Das folgende Bash-Skript gibt Aufschluss darüber, welche Zeichen maskiert werden müssen, sowie die Darstellung der maskierten Zeichen.
for x in {0..127} ;do
printf -v char \\%o $x
printf -v char $char
printf -v res "%q" "$char"
esc=Escape
[ "$char" = "$res" ] && esc=-
printf "%02X %s %-7s\n" $x $esc "$res"
done | sort
Das Skript zeigt die folgende Ausgabe an. Ich habe nur die ersten 11 Zeichen angezeigt. Das erste Feld hat den Hex-Wert von Byte, und die zweite Datei hat Escape
, wenn ein Zeichen maskiert werden muss, oder -
, wenn nicht. Der letzte Teil zeigt die Darstellung des Zeichens beim Entkommen.
00 Escape ''
01 Escape $'\001'
02 Escape $'\002'
03 Escape $'\003'
04 Escape $'\004'
05 Escape $'\005'
06 Escape $'\006'
07 Escape $'\a'
08 Escape $'\b'
09 Escape $'\t'
0A Escape $'\n'
0B Escape $'\v'
0C Escape $'\f'
0D Escape $'\r'
0E Escape $'\016'
0F Escape $'\017'
10 Escape $'\020'