Linux, Bash.
Bash usa stderr (descritor de arquivo 2
) para imprimir seu prompt de comando e linha de comando. Use tmux
para exibir duas conchas uma acima da outra (ou apenas coloque duas janelas da GUI, emuladores de terminal um acima do outro). No inferior, invoque tty
. Não use o shell inferior diretamente a partir de agora. No superior, um descritor de arquivo de redirecionamento 1
para o tty do descritor de baixo (por exemplo, exec 1>/dev/pts/2
).
Ctrl + L limpa a parte superior, clear
limpa a parte inferior. Cada porção é multi-linha. Graças aos recursos do tmux
, você pode redimensioná-los (ou seja, mover a borda para cima e para baixo).
Use isso para fazer com que os comandos apareçam também na parte inferior da tela:
trap 'printf "%s\n" "-----$ $BASH_COMMAND"' DEBUG
Eu testei a solução e em algum momento minha janela de terminal ficou assim:
kamil@foo:~$ ls -l /proc/$$/fd
kamil@foo:~$ uname -r
kamil@foo:~$ cat /etc/issue
kamil@foo:~$ █
──────────────────────────────────────────────────────────────────────
-----$ ls --color=auto -l /proc/$$/fd
total 0
lrwx------ 1 kamil kamil 64 Sep 9 20:42 0 -> /dev/pts/3
l-wx------ 1 kamil kamil 64 Sep 9 20:42 1 -> /dev/pts/2
lrwx------ 1 kamil kamil 64 Sep 9 20:42 2 -> /dev/pts/3
lrwx------ 1 kamil kamil 64 Sep 9 21:13 255 -> /dev/pts/3
-----$ uname -r
4.15.0-33-generic
-----$ cat /etc/issue
Ubuntu 18.04.1 LTS \n \l
(Nota: --color=auto
apareceu porque meu ls
é um alias).
Espere que ferramentas interativas (como editores de texto) se comportem mal, por isso é melhor reverter a alteração enquanto as chama. Exemplo:
1>&2 nano
Alguns shells (por exemplo, zsh
) usam um descritor de arquivo 10
separado para a linha de comando. Isso permite que você redirecione o stderr para o menor (ou ainda outro, terceiro) tty, mantendo a linha de comando na linha superior.