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


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

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

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

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


7
2018-03-09 19:37


происхождения




ответы:


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

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

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

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


4
2018-03-09 19:57



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


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

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

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

Справка сайт


3
2018-03-09 19: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.

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


3
2018-03-09 20:27



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