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.