Терминал с прокруткой вывода

7

В настоящее время я решил проверить свои двойные мониторы в вертикальной конфигурации, и я столкнулся с проблемой, которой у меня никогда не было: линия ввода на моем терминале слишком далеко по экрану!

Мне было интересно, есть ли способ сделать вывод прокрутки вниз, так что входная строка останется наверху.

например, обычный вид терминала выглядит следующим образом:

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
[email protected]_computer:~$ 

, и вместо этого я хотел бы иметь что-то вроде этого:

[email protected]_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.

Я не мог найти такую ​​документацию или вопрос на форумах. Если у кого-то есть идея, пожалуйста, дайте мне знать! (также если вы считаете, что это невозможно)

Спасибо!

PS: Я использую Ubuntu 12.04

    
задан cd127 09.03.2014 в 19:37
источник

3 ответа

4

Я нашел один хороший совет, с которого вы можете начать. Вы должны играть с bash:

  

Чтобы настроить его:

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

Нажмите одно дополнительное время, и оно будет готово к попытке. Иногда вывод   и подсказка вышла из строя, и может быть другая странность, но   это интересная вещь, чтобы попробовать.

Источник: Окно перевернутого терминала / командной строки .

См. также:

ответ дан Radu Rădeanu 09.03.2014 в 19:57
источник
3

После поиска этого хорошего вопроса я нашел эти команды и надеюсь, что он может вам помочь, поэтому он может помочь вам сосредоточиться на верхней части терминала при написании команды.

В терминале попробуйте:

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

Ссылка Сайт

    
ответ дан nux 09.03.2014 в 19:54
3

Другим трюком было бы передать выход вашей команды через tac , который похож на cat , но печатает в обратном порядке:

[email protected] ~ $ 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.

Обратите внимание, что мне нужно было указать максимальное число пинга ( -c 5 ), потому что иначе команда ping не выйдет и труба сломается. В любом случае, tac очень полезно для этого типа вещей.

    
ответ дан terdon 09.03.2014 в 20:27