Pergunta extremamente simples. Na imagem anexa, a maioria das opções parece envolver a digitação ^
e outro caractere ao mesmo tempo. O problema é que, para digitar, ^
preciso pressionar Shift + 6
, momento em que estou realmente digitando ^
antes de ter a chance de pressionar o segundo caractere, por exemplo ^T
.
^O
é uma representação de um caracter , aquele normalmente enviado pelo seu terminal ao pressionar Ctrl+ o, não uma tecla. Nos terminais, os aplicativos obtêm entrada lendo um fluxo de bytes de um/dev/tty*
ou/dev/pt*
arquivo de dispositivo, não manipulando eventos de teclado, e esses bytes são enviados para lá pelo seu terminal quando você pressiona alguma tecla ou combinação de teclas.Com um terminal baseado em ASCII usado em sistemas baseados em ASCII (a norma atualmente, embora a maioria dos sistemas/terminais o estenda para suportar caracteres não americanos), quando você digita para , o terminal envia o abyte z97 a 122 (ou
0x60 | letter
), os que representam os caracteresa
toz
em ASCII; se você fizer o mesmo enquanto segura a Shifttecla, eles enviam os bytes 65 a 90 (0x40 | letter
),A
paraZ
em ASCII.Com Ctrl, eles enviam os bytes de 1 a 26 (
0x00 | letter
¹).Já os bytes 0 a 31 são caracteres de controle , não possuem glifos, representações de fontes. Eles têm nomes (consulte Recursos
man ascii
). Como 9 (como enviado em Ctrl+ iou ⭾) é tabulação, 10 é nova linha (enviado em Ctrl+ j), 13 é retorno de carro (enviado em Ctrl+ mou Enter, embora tenha cuidado, pois o driver do terminal geralmente o traduz para uma nova linha).O caractere enviado em Ctrl+ oé o caractere de controle de mudança de posição . Se
nano
tivesse<shift-in> Write Out
em vez de^O Write Out
, aposto que a maioria das pessoas não saberia como enviar esse caractere de controle.^A
...^Z
(e^[
^\
^]
^^
^_
para 27..31, e^@
para 0,^?
para 127¹) às vezes chamados de notação de chapéu são representações visuais comuns desses caracteres. Você descobrirá que também é usado porcat -vt
ou pela disciplina de linha terminal apósstty echoctl
.Outras notações incluem
\CA
ou\C-A
. Alguns caracteres de controle têm representações em strings C, como\n
para^J
/newline,\a
para^G
/BEL.Mas os
^A
/\C-A
são mais úteis para indicar como você pode gerá-los com um teclado.¹
@
sendo 0x40 em ASCII e?
0x3f, então o^X
caractere é obtido com0x40 ^ X
, que é o valor do byte de X com o segundo bit mais significativo invertido. Você também encontrará a representaçãoM-^X
eM-X
para os bytes 0x80 a 0x9f e 0xa0 a 0xff que os terminais somente ASCII costumavam enviar para Meta+ Ctrl+ Xe Meta+ X, embora hoje em dia eles enviem ESC (^[
) seguido por^X
/X
já que o 8º bit é usado para caracteres não ASCII e eu esperarianano
que hoje em dia esperasse^[U
que o byte 0xd5 significasseM-U Undo
que o byte 0xd5 também é encontrado como o primeiro byte da codificação UTF-8 de caracteres armênios U+0540 a U+057F ou estáÕ
em ISO8859 -1 (também conhecido como latin1)