Terminal avec sortie défilant

8

J'ai actuellement décidé de tester mes doubles moniteurs en configuration verticale, et je suis tombé sur un problème que je n'avais jamais rencontré auparavant: la ligne d'entrée sur mon terminal est trop loin en bas de l'écran!

Je me demandais s'il y avait un moyen de faire défiler la sortie vers le bas, afin que la ligne d'entrée reste en haut.

par exemple, une vue de terminal normale ressemble à ceci:

PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_req=1 ttl=46 time=28.3 ms
64 bytes from 8.8.8.8: icmp_req=2 ttl=46 time=13.7 ms
64 bytes from 8.8.8.8: icmp_req=3 ttl=46 time=19.1 ms
64 bytes from 8.8.8.8: icmp_req=4 ttl=45 time=20.8 ms
64 bytes from 8.8.8.8: icmp_req=5 ttl=45 time=15.6 ms
64 bytes from 8.8.8.8: icmp_req=6 ttl=46 time=15.3 ms
64 bytes from 8.8.8.8: icmp_req=7 ttl=46 time=15.3 ms
64 bytes from 8.8.8.8: icmp_req=8 ttl=45 time=14.3 ms
64 bytes from 8.8.8.8: icmp_req=9 ttl=45 time=14.3 ms
64 bytes from 8.8.8.8: icmp_req=10 ttl=45 time=15.5 ms
64 bytes from 8.8.8.8: icmp_req=11 ttl=45 time=16.9 ms
64 bytes from 8.8.8.8: icmp_req=12 ttl=45 time=16.3 ms
64 bytes from 8.8.8.8: icmp_req=13 ttl=45 time=20.0 ms
^C
--- 8.8.8.8 ping statistics ---
13 packets transmitted, 13 received, 0% packet loss, time 12017ms
rtt min/avg/max/mdev = 13.773/17.391/28.343/3.812 ms
me@my_computer:~$ 

et à la place j'aimerais avoir quelque chose comme ça:

me@my_computer:~$ 
rtt min/avg/max/mdev = 13.773/17.391/28.343/3.812 ms
13 packets transmitted, 13 received, 0% packet loss, time 12017ms
--- 8.8.8.8 ping statistics ---
^C
64 bytes from 8.8.8.8: icmp_req=13 ttl=45 time=20.0 ms
64 bytes from 8.8.8.8: icmp_req=12 ttl=45 time=16.3 ms
64 bytes from 8.8.8.8: icmp_req=11 ttl=45 time=16.9 ms
64 bytes from 8.8.8.8: icmp_req=10 ttl=45 time=15.5 ms
64 bytes from 8.8.8.8: icmp_req=9 ttl=45 time=14.3 ms
64 bytes from 8.8.8.8: icmp_req=8 ttl=45 time=14.3 ms
64 bytes from 8.8.8.8: icmp_req=7 ttl=46 time=15.3 ms
64 bytes from 8.8.8.8: icmp_req=6 ttl=46 time=15.3 ms
64 bytes from 8.8.8.8: icmp_req=5 ttl=45 time=15.6 ms
64 bytes from 8.8.8.8: icmp_req=4 ttl=45 time=20.8 ms
64 bytes from 8.8.8.8: icmp_req=3 ttl=46 time=19.1 ms
64 bytes from 8.8.8.8: icmp_req=2 ttl=46 time=13.7 ms
64 bytes from 8.8.8.8: icmp_req=1 ttl=46 time=28.3 ms
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.

Je n'ai pas pu trouver une telle documentation ou question sur les forums. Si quelqu'un a une idée, faites-le moi savoir! (aussi si vous pensez que ce n'est pas possible)

Merci!

PS: j'utilise Ubuntu 12.04

cd127
la source

Réponses:

5

J'ai trouvé un bon conseil à partir duquel vous pouvez commencer. Vous devez jouer avec bash:

Pour le configurer:

$ bash    # try this in a subshell since ^C seems to cause it to exit
$ f () { sed "1s/^/$(tput cup 0 0)/;s/^/$(tput il1)/"; }
$ PROMPT_COMMAND='tput cup 0 0;tput il1; echo'
$ exec > >(f)

Appuyez sur Entrée une fois de plus et c'est prêt à essayer. Parfois, la sortie et l'invite sont hors service et il peut y avoir d'autres bizarreries, mais c'est une chose intéressante à essayer.

Source: Fenêtre Terminal / Ligne de commande inversée .

Voir également:

Radu Rădeanu
la source
je pense que c'est juste comme ma réponse
nux
@nux Vous pensez, mais ce n'est pas le cas. C'est la réponse de Dennis Williamson , comme je l'ai précisé dans ma source;)
Radu Rădeanu
ok tant pis, je le modifie pour que @cd puisse copier et coller dans son terminal pour tester ce qu'il peut faire.
nux
J'ai dû accepter cette réponse en raison de la référence! Mais merci nux aussi!
cd127
4

Après avoir recherché cette bonne question, j'ai trouvé ces commandes et j'espère que cela peut vous aider, afin qu'il puisse vous aider à vous concentrer sur le haut du terminal lors de l'écriture d'une commande.

Dans le terminal, essayez:

 f () { sed "1s/^/$(tput cup 0 0)/;s/^/$(tput il1)/"; }
 PROMPT_COMMAND='tput cup 0 0;tput il1; echo'
 exec > >(f)

Site de référence

nux
la source
4

Une autre astuce serait de passer la sortie de votre commande tacqui ressemble à catmais imprime dans l'ordre inverse:

terdon@oregano ~ $ ping -c 5 8.8.8.8 | tac
rtt min/avg/max/mdev = 88.906/91.678/94.948/2.129 ms
5 packets transmitted, 5 received, 0% packet loss, time 4005ms
--- 8.8.8.8 ping statistics ---

64 bytes from 8.8.8.8: icmp_seq=5 ttl=42 time=88.9 ms
64 bytes from 8.8.8.8: icmp_seq=4 ttl=42 time=92.8 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=42 time=90.0 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=42 time=91.5 ms
64 bytes from 8.8.8.8: icmp_seq=1 ttl=42 time=94.9 ms
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.

Notez que j'ai dû spécifier un nombre de ping maximum ( -c 5) car sinon la pingcommande ne se terminera pas et le tube se cassera. Quoi qu'il en soit, tacest très utile pour ce type de chose.

terdon
la source
J'aime le tac - je ne le savais pas. Malheureusement, comme vous l'avez dit vous-même, cela a certaines limites. Et cela ne place pas la ligne de commande en haut du shell!
cd127
@ cd127 non, je ne m'étais pas rendu compte que vous vouliez également déplacer l'invite.
terdon