As an addendum, the other answers don't make completely clear the relationship between letters and control-characters
The ASCII character set can be displayed in a table like this
NUL SP @ `
SOH ! A a
STX " B b
ETX # C c
EOT $ D d
ENQ % E e
ACK & F f
BEL ' G g
BS ( H h
HT ) I i
LF * J j
VT + K k
FF , L l
CR - M m
SO . N n
SI / O o
DL 0 P p
DC1 1 Q q
DC2 2 R r
DC3 3 S s
DC4 4 T t
NAK 5 U u
SYN 6 V v
ETB 7 W w
CAN 8 X x
EM 9 Y y
SUB : Z z
ESC ; [ {
FS < \ |
GS = ] }
RS > ^ ~
US ? _ DEL
You may know that the control character named TAB can be inserted into a document by pressing the keyboard key labelled TAB. You may also be aware that you can achieve the same thing by holding down the CTRL key and pressing I. The control key labelled CTRL exists as a way of entering ASCII control characters.
You can see from the table above that the "I" character is on the same row as the HT (Horizontal Tabulation, i.e. TAB) character.
Nowadays we might write this character as CTRL+I but in the past it was more common to abbreviate this as ^I
From the table you can also see that "@" is on the same line as "NUL" and so ^@
represents NUL, the null character 0x00.
The arrangement in the table illustrates that the numeric value ("code point") assigned to these characters in ASCII is such that each of the letters is 0x40 plus the value of the corresponding control character.
cat -A <<< $'\\0\a\b\t\n\v\f\rÉÖÈ'
in bash (where in the input$'string'
the content ofstring
is interpreted as ANSI C would: with special characters as backslash notation), one can see outputs in the caret notation.