Como manter o prompt da linha de comando na primeira linha do terminal?

4

Eu preciso manter a linha de comando na parte superior da tela e ver a saída de qualquer comando abaixo dela. Como posso conseguir isso usando quaisquer ferramentas disponíveis em qualquer plataforma?

Atualmente, em todos os emuladores de terminal com os quais trabalhei, se você executar ls foo -l , o resultado será:

$ ls foo -l
hi.txt
bye.txt
$ command prompt is here

Em gostar de ver isso:

$ command prompt is here
$ ls foo -l
hi.txt
bye.txt
    
por PHPst 09.09.2018 / 03:47

1 resposta

0

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.

    
por 09.09.2018 / 21:38