Terminal con salida desplazándose hacia abajo

8

Actualmente he decidido probar mis monitores dobles en la configuración vertical, y me encontré con un problema que nunca había tenido antes: ¡la línea de entrada en mi terminal está demasiado abajo en la pantalla!

Me preguntaba si hay una manera de hacer que la salida se desplace hacia abajo, de modo que la línea de entrada permanezca en la parte superior.

por ejemplo, una vista de terminal normal se ve así:

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:~$ 

y en su lugar me gustaría tener algo como esto:

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.

No pude encontrar ninguna documentación o pregunta en los foros. Si alguien tiene una idea, ¡hágamelo saber! (también si crees que no es posible)

¡Gracias!

PD: estoy usando Ubuntu 12.04

cd127
fuente

Respuestas:

5

Encontré un buen consejo desde el que puedes comenzar. Debes jugar con bash:

Para configurarlo:

$ 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)

Presione enter una vez más y estará listo para probar. A veces, la salida y el mensaje están fuera de servicio y puede haber otras rarezas, pero es algo interesante intentarlo.

Fuente: Ventana de línea de comando / terminal invertida .

Ver también:

Radu Rădeanu
fuente
creo que es justo como mi respuesta
nux
@nux Crees, pero no lo es. Es la respuesta de Dennis Williamson , como especifiqué en mi fuente;)
Radu Rădeanu
ok no importa, lo edito para que @cd pueda copiar y pegar en su terminal para probar lo que puede hacer.
nux
¡Tuve que aceptar esta respuesta de hecho debido a la referencia! Pero gracias nux también!
cd127
4

Después de buscar esta buena pregunta, encontré estos comandos y espero que pueda ayudarlo, por lo que puede ayudarlo a centrarse en la parte superior del terminal al escribir un comando.

En la prueba de terminal:

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

Sitio de referencia

nux
fuente
4

Otro truco sería pasar la salida de su comando a través de la taccual se catimprime en orden inverso:

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.

Tenga en cuenta que tuve que especificar un número máximo de ping ( -c 5) porque de lo contrario el pingcomando no saldrá y la tubería se romperá. De todos modos, taces muy útil para este tipo de cosas.

terdon
fuente
Me gusta el tac, no lo sabía. Lamentablemente, como usted mismo dijo, tiene algunas limitaciones. ¡Y no establece la línea de comando en la parte superior del shell!
cd127
@ cd127 no, no, no me había dado cuenta de que también quería mover el mensaje.
terdon