Existe uma maneira de ligar uma chave a uma seqüência de controle no bash?

0

No meu arquivo .bashrc , estou tentando ligar uma chave de seqüência de escape personalizada a uma seqüência de controle.
O que eu tenho é: bind -x '"\eJD0C": "^C"'
E não executa a seqüência de controle do shell ^C , que cancela a execução de um processo.

Então, há uma maneira de fazer isso?
Ou isso não é possível?
Se não for possível, que alternativas devo analisar?

    
por John DeBord 14.04.2018 / 01:58

1 resposta

0

Isso não é uma sequência de controle de shell.

É um caractere especial , reconhecido pela disciplina de linha quando está no modo de entrada canônica .

Três coisas militam contra você:

  • A disciplina de linha não está no modo canônico quando o shell Bourne Again está usando a biblioteca GNU Readline para ler linhas de entrada interativamente. Está no modo não canônico, e todo o reconhecimento especial de caracteres pela disciplina de linha é desativado.
  • A biblioteca GNU Readline não é responsável pela entrada quando o shell Bourne Again está fazendo algo diferente de ler uma linha de entrada interativamente, e mapeamentos configurados para a biblioteca Readline são irrelevantes em esses pontos . Quando você insere o caractere especial enquanto o shell está aguardando o término de um processo filho, isso é tratado pela disciplina de linha.
  • A disciplina de linha só pode reconhecer caracteres únicos como especiais, e não sequências de vários caracteres que os terminais usam para codificar as teclas de edição e de função. A API do terminal para definir caracteres especiais funciona apenas em termos de caracteres únicos.
por 14.04.2018 / 13:37

Tags