Korzystałem z polecenia:
reset
wyczyścić mój terminal. Chociaż jestem całkiem pewien, że nie to powinienem robić. Resetuj, jak sama nazwa wskazuje, resetuje cały terminal (zmienia wiele rzeczy). Oto czego chcę:
Zasadniczo chcę użyć polecenia clear
. Jeśli jednak wyczyścisz, a następnie przewiniesz w górę, nadal otrzymujesz tony rzeczy z przeszłości. Zasadniczo nie stanowi to problemu, ale patrzę na duże dzienniki, które są długie i chcę mieć pewność, że właśnie przeglądam najnowszy. Wiem, że mógłbym użyć more
lub coś takiego, ale wolę takie podejście.
clear && printf '\033[3J'
. Brak resetowania terminala, wystarczy wyczyścić tekst na ekranie. Zobacz ten post: superuser.com/questions/555554/…Odpowiedzi:
Bufor przewijania nie jest funkcją bash, ale programem terminalowym. Nie powiedziałeś, jakiego terminala używasz.
Jeśli używasz Xterm, możesz być w stanie wyczyścić zapisane linie przez echo ESC-c do terminala.
Może to działać lub nie działać na każdym używanym programie terminalowym.
Na Linuksie prawdopodobnie to zadziała:
na FreeBSD echo nie akceptuje -e, więc możesz spróbować:
źródło
echo ESC-c
?ESC
. Przeczytaj artykuły „Znak ucieczki” i „Znak sterujący” na Wikipedii -ESC
często używa się go do oznaczenia znaku ASCII 0x1B, który można wstawić, naciskając,^V
a następnieEsc
.\0143
zamiastc
?Użyj odpowiedniego narzędzia do każdego zadania:
Użyj,
clear
aby wyczyścić okno terminala.Służy
reset
do resetowania terminala, gdy zostanie on pomieszany przez sekwencje kontrolne.Używaj
cat
tylko wtedy, gdy chcesz przesyłać całą masę danych z jednego miejsca do drugiego bez przerwy .Użyj programu pager, takiego jak
less
lub,most
aby wyświetlić strony wyników.Służy
tail -f /var/log/foo.log /var/log/bar.log
do oglądania kilku różnych plików dziennika.tail
The-F
opcja jest lepsza, ponieważ może kontynuować po pliku, nawet jeśli pojawi się nowy plik na swoim miejscu, co jest powszechne dla plików dziennika.źródło
cat
czytaniu czegokolwiek, ale w przypadku małych plików ma to dlacat
nich sens zamiast używanialess
. Gdy plik zostanie zrzucony do terminala, możesz przeglądać / przewijać plik do tyłu tak często, jak chcesz, zamiast konieczności anulowania,less
zanim zrobisz cokolwiek innego.Wystarczy podać odpowiedź techniczną:
reset
ponownie zainicjuj terminal, tak jakby został ponownie otwarty od zera.stty sane
wykona wiele takich samych funkcji (bez resetowania). Jest to to samo, co^L
(Ctrl + L) (irc) itput clear
. Pomimo tego, co powiedział poprzedni plakat (@grawity),clear
nie wyświetla wielu nowych linii. WysyłaTERM
reset tak, jak zdefiniowano wterminfo
lubtermcap
, dla mnie, używającgnome-terminal
(xterm) jest to to samo co polecenieperl -e'print "\33[H\33[2J"'
.Jeśli chcesz po prostu wyczyścić bufor - w porównaniu z resetowaniem całego terminala, spróbuj tego
tput reset
. To powinno być bardzo szybkie, i rób co chcesz. (Chociaż naprawdę powinieneś czytać plikiless
)tput reset
, wysyła wartość terminfo do zresetowania - na moim terminalu (xterm) jest taka sama jakperl -e'print "\33c"'
źródło
clear
wyprowadza kilka nowych linii. Właśnie podałem polecenie jako alternatywę dla niego, ponieważclear
tylko czyści ekran, ale nie bufor przewijania. (Nie tylko w PuTTY ani Konsole.)clear
jako nazwę sygnału na sygnał, i drugą, która mapujereset
na sygnał - i tylko tę drugą. powoduje wyczyszczenie bufora przewijania.reset
wysyła to drugie, powyżej robiąc inne fajne rzeczy.clear
czy nie przywrócić jego przewijania. (ESC c
działa wxterm
i oparty na VTE, ale nie w PuTTY i Konsole.) On też nie chce używaćreset
, ponieważ resetuje więcej niż chce. (Nie wiem, którego terminala używa - ale porównujęstty
przed i potput reset
, który wysyła sygnał resetowania do terminala - bez faktycznej ponownej inicjalizacji tego terminu. "reset - Zamiast zgasić ciągi inicjalizacyjne, ciągi resetowania terminala zostaną wyprowadzone, jeśli są obecne (rs1, rs2, rs3, rf). Jeśli ciągi resetowania nie są obecne, ale ciągi inicjalizacji są, zostaną wyprowadzone ciągi inicjalizacji. W przeciwnym razie reset działa identycznie jak init. ” Tutaj mamy zresetowane ciągi, więc ciągi inicjujące nie są uruchamiane.tput reset
jest jednak dość powolna (taka sama jakreset
).printf '\033\143'
jest znacznie szybszy. Czy istnieje powód, dla którego metoda printf jest niebezpieczna / zła?Kolejnym terminalem jest iTerm2 i ma on nieco dziwną sekwencję ucieczki używaną do czyszczenia przewijania. W powłoce Bash używam czegoś takiego:
w skrypcie. Zasadniczo jest to znak ESC, po nim „
]50;ClearScrollback
”, a następnie znak BEL.źródło
clear
lubreset
nie. Nie jest to jednak najlepsza odpowiedź na pytanie. Myślę, że właściwą odpowiedzią na to pytanie jest wszystko, co oferuje aplikacja terminalowa, takie jak Command-K w iTerm2, control-K w innych itp.Prawdopodobnie najlepszym sposobem na wyczyszczenie wszystkiego jest użycie funkcji terminala:
W ten sposób oba bufory zostaną wyczyszczone, a stan terminala zostanie zresetowany do dokładnie tego, co był podczas uruchamiania (który może, ale nie musi być taki sam, jak użycie
reset
).źródło
gnome-terminal
w tej chwili nie mogę się użyć ) ... Spójrz na „Narzędzia” i inne menu.+F
służy do „śledzenia”, podobnego do,tail -f
ale umożliwia także przewijanie wstecz.Wszystkie terminale oparte na Vte (GNOME, Xfce's, Roxterm) i KDE Konsole umożliwiają przewijanie wewnątrz kółka przewijania
less
. Uważam to za dość wygodne.Alternatywa dla
clear
:źródło
W Mac OS X Terminal.app:
Widok -> Wyczyść przewijanie (lub command- K)
źródło
To nie jest problem „Bash”. To zależy od używanego terminala. Na przykład używam „iterm2” z komputerem Macbook, aby podłączyć zdalną maszynę z systemem Linux. Możesz użyć „Command + K”, aby wyczyścić bufor, lub w menu wybierz „Edytuj” -> „Wyczyść bufor”.
źródło
Aby wyczyścić ekran konsoli i bufor przewijania podczas uruchamiania PuTTY, działa to dla mnie:
To właściwie 2 sekwencje „Esc”, które działają niezależnie ... można ich użyć w dowolnej kolejności:
Za pomocą tego,
echo -en "\ec"
co resetuje, terminal może zmienić niektóre inne ustawienia terminala. Zamiast „Resetuj” możesz to zrobić:Możesz umieścić to w skrypcie powłoki i działa dobrze.
W przypadku niektórych zależności systemowych:
Używam PuTTY Connection Manager (wersja 0.7.1 BETA (kompilacja 136)) z PuTTY (wydanie 0.60).
Pisanie na maszynie:
raporty:
źródło
Aby wyczyścić bufor ekranu dla sprzętowego TTY we FreeBSD, możesz użyć „vidcontrol - narzędzie kontroli i konfiguracji konsoli systemowej” z parametrem -C Wyczyść bufor historii.
vidcontrol -C
polecenie wyczyści cały bufor ekranu dla bieżącej konsoli powyżej tego, co widzisz w tej chwili. Możesz najpierw „wyczyścić” lub nie - do ciebie.
źródło
Jeśli chcesz mieć pewność, że patrzysz na najnowsze wpisy w pliku dziennika, prawdopodobnie najlepiej jest użyć tail zamiast
clear
/cat
którego, jak zakładam, używasz.źródło
Hmmm. Myślę, że jeśli używasz konsoli, nie masz szczęścia. Kiedyś można było po prostu „wyczyścić przewijanie”. Konsole nie pozwoli ci już tego robić. Musisz go zresetować, aby zabijał każdy uruchomiony program. Chyba potrzebuję nowego programu terminalowego ......
źródło