compreende a saída de stty -a e altera o backspace ctrl para apenas backspace

3

Estou trabalhando no bash shell em um ambiente Solaris e sempre que eu digito "backspace" ele limpa toda a linha.

Você tem alguma sugestão para eu mudar o backspace limpando toda a linha para apenas um personagem que é o comportamento esperado dele?

E também, por favor, me guie também sobre como eu interpreto a saída do comando stty -a em meu ambiente cygwin local:

$ stty -a <br/>
speed 38400 baud; rows 34; columns 125; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = ^Z; start = ^Q; stop = ^S;
susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts
-ignbrk brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc ixany imaxbel
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -tostop echoctl echoke
    
por Avinash 18.04.2014 / 10:32

1 resposta

2

A partir do texto da sua pergunta, estou assumindo que você está usando o cygwin para acessar uma máquina Solaris.

stty -a exibe todas as configurações atuais do terminal. Eu não vou passar por cada um. Mas você pode ler o que cada um faz nas páginas do manual .

Mas, em particular, seu problema é erase = ^?; . ^? é o Caractere de Controle ASCII para DEL (delete). O que você quer é o caractere de controle para BS (backspace).

Na linha de comando, você pode digitar o seguinte:

stty erase ^H

Mas note que o ^H é um caractere de controle e não ^ H . Então eu acredito que o jeito que você digitaria é o seguinte:

Ctrl + v retrocesso

E isso deve resultar na impressão de ^H na tela.

Isso deve mudar o comportamento de backspace para o que você deseja. Mas duraria apenas a sessão atual.

De acordo com este blog da Oracle , você pode alterar permanentemente a configuração abrindo /kernel/drv/options.conf e procurando pelo linha seguinte:

ttymodes="2502:1805:bd:8a3b:3:1c:7f:15:4:0:0:0:11:13:1a:19:12:f:17:16";

Altere o 7f para 8 para remapear permanentemente o backspace de DEL para BS . Isso exigirá uma reinicialização para entrar em vigor.

    
por 18.04.2014 / 15:39