Por que não consigo enviar seqüências de escape do teclado, mas posso fazê-lo de outro tty?

1

Estou tentando entender como o terminal funciona, fazendo truques diferentes, como escrever de um tty para outro, alterando as configurações tty1 de tty2 , etc. Além disso, tento essas coisas - altere a cor diretamente pela seqüência de escape, teclado. Ou seja, não através de echo -e '\e[0;31m' , mas pela entrada do teclado. Não funciona.

Eu faço estas etapas:

  1. Abra tty1 e tty2
  2. No tty2 put bash para o modo de suspensão, por sleep 10m . Digitando a palavra "um".

  • Ir para tty1 do echo -n ^[[0;31m > /dev/tty2 , Primeiro caractere ^[ obter desta forma Ctrl + v Esc
  • Retornar para tty2 , digitando a palavra "dois". Sim - a cor foi alterada para vermelho, de outro tty.
  • Repita os passos 3,4, mas com a cor verde e a palavra "três"
  • E, finalmente, tentando enviar a seqüência de escape diretamente do teclado, não outro tty , digitando ^[[0;37m no tty2 . Eu faço tudo da mesma maneira - Esc ( Ctrl + v não é necessário, porque readline está dormindo), então [0;37m , mas veja isto:
  • Pergunta: Por que isso funciona dessa maneira? Todos os caracteres são iguais, o terminal é o mesmo, mas em um caso, o terminal obtém a seqüência de escape e, em outro caso, não.

        
    por MiniMax 07.06.2017 / 23:07

    1 resposta

    2

    Quando você executa echo , você está enviando saída para o terminal. O terminal interpreta as seqüências de escape, como a que muda as cores na saída que é enviada para ele. Essas seqüências de escape devem ser enviadas por aplicativos, por isso elas são reconhecidas na saída que vem do aplicativo em execução no terminal. Normalmente, o aplicativo em execução no terminal é aquele iniciado pelo emulador de terminal (seu shell) e os iniciados por este, por sua vez, mas se você executar echo … >/dev/tty2 , então echo estará efetivamente “executando no terminal” (no sentido que sua saída está indo para o terminal, que é o que importa aqui).

    Quando você pressiona Esc [ etc., você está enviando entrada para o terminal. O terminal não interpreta as seqüências de escape, como a que altera as cores na entrada que recebe. O terminal interpreta as seqüências de escape na entrada, mas para um propósito completamente diferente: elas são uma maneira de codificar as teclas de função.

    Como funcionam as entradas de teclado e texto? tem algum histórico relevante.

        
    por 08.06.2017 / 01:24