Existe uma maneira padrão de reverter a ordem de saída de uma saída do terminal, ou seja:
~/Developer $ command0
-bash: comman0: command not found
~/Developer $ command2
-bash: command2: command not found
~/Developer $ command3
-bash: command3: command not found
~/Developer $
seria exibido como:
~/Developer $
-bash: command3: command not found
~/Developer $ command3
-bash: command2: command not found
~/Developer $ command2
-bash: comman0: command not found
~/Developer $ comman0
Eu sinto que sempre ter sua solicitação na parte inferior é contra-intuitiva, uma maneira mais eficaz de apresentar a saída seria inverter a ordem de saída. Como posso implementar isso? Especificamente em que parte da saída do programa do terminal OSX foi definida?
bash
).Respostas:
No bash, isso exibirá o prompt / comando atual na parte superior e sua saída abaixo, mas sem rolagem ou comandos anteriores:
Esta função colocará comandos anteriores abaixo, mas você precisará canalizar todos os comandos individualmente. Infelizmente,
exec > >(f)
não posso ajudar com isso, pois ele redireciona todo o bash, não comandos individuais. Aqui está a função:Em seguida, execute todos os comandos como:
Ele salva a saída, cria um número de linhas em branco iguais ao comprimento + 1 e coloca a saída novamente. Você pode marcar uma linha no final que exibirá um prompt falso ou regra horizontal, se desejar. Por exemplo
Como uma alternativa ruim, mas automática, para toda essa função, podemos adicionar um comando ao final de nosso $ PROMPT_COMMAND anterior que limpa 11 linhas um tanto arbitrárias:
Você também pode usar
tput -S
para evitar várias chamadas binárias.Eu tenho a
$PROMPT_COMMAND
partir https://github.com/swirepe/alwaysontop .fonte
Infelizmente, isso será bastante difícil. O protocolo entre os aplicativos e o terminal OS-X é uma variante do protocolo de controle de terminal VT100 / ANSI , especificamente o protocolo XTerm .
Isso inclui um monte de suposições sobre a posição da tela, etc., que seriam difíceis de remapear para um mundo em que a exibição foi revertida.
Pior ainda, tudo o que seu emulador de terminal obtém é uma sequência de comandos do tipo "coloque esse personagem nesta posição". Não há distinção entre o prompt de comando e a saída de um comando executado por ele; portanto, você não pode fazer uma coisa para ambas as partes - pelo menos, não sem a cooperação do shell abaixo.
O shell e os programas assumem que a tela prossegue para cima - novos dados na parte inferior e continua para sempre.
Você poderia, pelo menos teoricamente, modificar o emulador de terminal para exibir as linhas na ordem inversa - a linha "inferior" primeiro e assim por diante até a linha "superior" na parte inferior da tela.
Isso reverteria a ordem das linhas na saída do comando, portanto, o restante do conteúdo também retornaria. Se você deseja que os comandos (por exemplo, sl, cat) sejam executados "abaixo", mas solicite a subida, a vida é mais difícil.
Não conheço nenhum software que implemente isso. (... mas veja o comentário do JdeBD sobre isso para obter um link para um.) :)
fonte
Embora isso não inverta exatamente a saída, ele manterá seu prompt no topo:
https://github.com/swirepe/alwaysontop
Para usá-lo, execute:
Se você decidir que gosta, basta fonte-lo no seu .bash_profile com algo como:
fonte