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

8

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

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

например, нормальный вид терминала выглядит так:

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

cd127
источник

Ответы:

5

Я нашел один хороший совет, с которого вы можете начать. Вы должны играть с 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)

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

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

Смотрите также:

Раду Рэдяну
источник
я думаю, что это так же, как мой ответ
NUX
@nux Ты думаешь, но это не так. Это ответ Денниса Уильямсона , как я указал в моем источнике;)
Раду Рэдяну
хорошо, не бери в голову, я редактирую это так, чтобы @cd мог копировать и вставлять в свой терминал, чтобы проверить, что он может сделать.
Nux
Я должен был принять этот ответ действительно из-за ссылки! Но спасибо и NUX!
cd127
4

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

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

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

Ссылочный сайт

Nux
источник
4

Другой трюк состоит в том, чтобы передать вывод вашей команды, 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очень полезно для такого рода вещей.

terdon
источник
Мне нравится тач - не знал об этом. К сожалению, как вы сами сказали, у него есть некоторые ограничения. И это не устанавливает командную строку в верхней части оболочки!
cd127
@ cd127 нет, нет, я не понял, что ты тоже хотел переместить приглашение.
тердон