Terminal z wyjściem przewijanym w dół

8

Obecnie zdecydowałem się przetestować moje podwójne monitory w konfiguracji pionowej i natknąłem się na problem, którego nigdy wcześniej nie miałem: linia wejściowa na moim terminalu jest zbyt daleko w dół ekranu!

Zastanawiałem się, czy istnieje sposób na przewijanie wyjścia w dół, tak aby linia wejściowa pozostała na górze.

np. normalny widok terminala wygląda następująco:

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

i zamiast tego chciałbym mieć coś takiego:

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.

Nie mogłem znaleźć żadnej takiej dokumentacji ani pytania na forach. Jeśli ktoś ma pomysł, daj mi znać! (także jeśli uważasz, że to niemożliwe)

Dzięki!

PS: Używam Ubuntu 12.04

cd127
źródło

Odpowiedzi:

5

Znalazłem jedną fajną wskazówkę, od której możesz zacząć. Musisz grać w bash:

Aby skonfigurować:

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

Naciśnij Enter jeszcze raz i jest gotowy do wypróbowania. Czasami dane wyjściowe i monity są niesprawne i mogą występować inne dziwności, ale jest to rodzaj interesującej rzeczy do wypróbowania.

Źródło: Odwrócone okno Terminal / Command line .

Zobacz też:

Radu Rădeanu
źródło
myślę, że to jest moja odpowiedź
nux
@nux Myślisz, ale nie jest. To odpowiedź Dennisa Williamsona , jak
podałem
ok, nieważne, edytuję go, aby @cd mógł skopiować i wkleić w swoim terminalu, aby przetestować, co może zrobić.
nux,
Rzeczywiście musiałem zaakceptować tę odpowiedź ze względu na odniesienie! Ale dzięki nux też!
cd127
4

Po wyszukaniu tego dobrego pytania znalazłem te polecenia i mam nadzieję, że może ci pomóc, więc może pomóc skupić się na górnej części terminala podczas pisania polecenia.

W terminalu spróbuj:

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

Witryna referencyjna

nux
źródło
4

Inną sztuczką może być przekazanie danych wyjściowych polecenia, przez tacco jest jak, catale drukuje w odwrotnej kolejności:

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.

Zauważ, że musiałem podać maksymalną liczbę pingów ( -c 5), ponieważ w przeciwnym razie pingpolecenie nie wyjdzie, a potok się zepsuje. W każdym razie tacjest to bardzo przydatne do tego typu rzeczy.

terdon
źródło
Lubię tac - nie wiedziałem o tym. Niestety, jak sam powiedziałeś, ma pewne ograniczenia. I nie ustawia wiersza poleceń na szczycie powłoki!
cd127
@ cd127 nie, nie, nie zdawałem sobie sprawy, że chciałeś również przenieść monit.
terdon