A chave de vinculação de tela requer a tecla Enter (RET) extra

1

Eu estava brincando com a configuração do GNU Screen e coloquei a seguinte configuração em ~/.screenrc :

bind l eval 'exec ls'

Agora, quando digito C-a l , ele executa ls no diretório atual. Tudo está bem e dândi até agora. Mas o problema é que eu tenho que pressionar a tecla Enter para sair do processo e voltar ao terminal novamente. Como posso evitar o pressionamento da tecla Enter adicional?

    
por Sibi 20.05.2015 / 00:38

1 resposta

1

Quando você digita C-a l , isso executa ls e exibe a saída na janela atual, independentemente do programa em execução na janela.

Se você fizer isso com um shell em execução na janela e o shell exibir seu prompt, a saída de ls será exibida após o prompt. O shell não está ciente do que aconteceu, pois ls é executado diretamente pela Tela. Se você estava digitando no prompt, o que você digitou até agora ainda está lá, esperando que você pressione Enter. Se você pressionar Enter após C-a l , isso executará o comando que você está digitando; se você não digitou nada no último prompt, isso é um comando vazio, o que faz com que o shell exiba um novo prompt.

No bash ou zsh, pressione Ctrl + L para reexibir o prompt e a linha de entrada atual.

Se você quiser evitar fazer isso, injete um ^L no aplicativo em execução na tela, na esperança de que seja um shell exibindo um prompt. Você precisa invocar um shell explicitamente desde que queira executar vários comandos. Você precisa passar ! como fdpat caso contrário, o ^L não irá para o shell.

bind l exec ! sh -c 'ls /; screen -X stuff ^L'

Este comando não é muito útil porque sempre executa ls no diretório atual da Tela, o que não muda quando você altera os diretórios no shell. Se você quiser que uma chave execute ls do shell, no diretório atual do shell, faça uma ligação de shell, não uma ligação de Tela.

    
por 21.05.2015 / 02:32

Tags