Witam.
Jak przewijać linijki w konsoli w górę i w dół jeśli sporo danych jest wypisywanych? Przykładowo mamy do wypisania 100 linijek, a w konsoli załóżmy mieści się 50 linijek, więc widzimy na koniec wypisywania danych 50 ostatnich linijek, a nie widać 50 pierwszych. Jak przewinąć wypisane dane do pierwszej linijki? Jest jakiś sposób?
Można wprawdzie wypisywać dane po jednej linijce, i przesuwać iterator, ale chciałbym się dowiedzieć czy da się to inaczej zrobić.
Chodzi o przewijanie outputu programu czy treści jakiegoś pliku? I rozumiem, że przewijanie "klasyczne", tj. tym paskiem do przewijania nie wchodzi w grę, tak?
Tak. Chodzi o przewijanie outputu programu. Paska przewijania akurat brak u mnie, ale wolałbym przewijać strzałkami. Na przykład po jednej linijce w górę/w dół.
To musisz jakiś widok zaimplementować na te dane jeśli koniecznie mają to być strzałki (bo nie jest to standardowe zachowanie Linuxowej konsoli), i wtedy elegancko za pomocą biblioteki ncurses
sobie to wyświetlisz, lub jeśli twój program wypluwa 100 linii tekstu i kończy działanie, to przy uruchamianiu go po prostu przekieruj dane potokiem do more
, tak się robi zazwyczaj (./main | more
) wtedy przewijasz enterem w przód.
less
> more
, imo ;)
Shift + PageUp
@Biały Kaczor zakłądając, że to nie sytuacja w której bufor terminala ma 50 linii.
W najgorszym przypadku można zrobić komenda | tee log; less log
;)