Терминал с прокручивающим вниз выводом

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

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

например, нормальное терминальное представление похоже на это:

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

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

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.

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

Спасибо!

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

8
задан 9 March 2014 в 23:37

3 ответа

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

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

 $ bash # попробуйте это в подоболочке, поскольку ^ C, кажется, заставляет его выйти
 $ f () {sed "1s / ^ / $ (tput cup 0 0) /; s / ^ / $ (tput il1) /";  }
 $ PROMPT_COMMAND = 'tput чашка 0 0; tput il1;  эхо '
 $ exec>> (е)
 

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

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

См. также:

5
ответ дан 16 November 2019 в 16:54

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

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

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

Ссылка Сайт

4
ответ дан 16 November 2019 в 16:54

Еще один трюк - передать вывод вашей команды через tac , который похож на cat , но печатает в обратном порядке:

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.

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

4
ответ дан 16 November 2019 в 16:54

Другие вопросы по тегам:

Похожие вопросы: