Czasami ekran terminala jest zawalony, a kiedy używamy man ls
do czytania stron podręcznika lub naciskamy strzałkę W GÓRĘ, aby przejść do poprzednich poleceń w historii, ekran wyświetla znaki niewłaściwe. (na przykład potraktuj koniec ekranu jak miejsce w środku ekranu).
Polecenie reset
zostało wypróbowane i nie zadziałało. Jednym ze sposobów, który działa, jest wylogowanie się lub zamknięcie okna, a następnie zmiana rozmiaru okna, a następnie zrobienie ssh
(lub zamknięcie tej karty i zmiana rozmiaru okna, a następnie otwarcie nowej karty, aby uzyskać nową powłokę).
Ale w ten sposób stracimy wszystko, co wcześniej zrobiliśmy, takie jak uruchomienie konsoli maszyny wirtualnej itp. Więc jeśli nie zamkniemy powłoki, czy istnieje sposób na rozwiązanie tego problemu?
(stało się to wcześniej w Fedorze, a także w przypadku Macbooka ssh
w pudełku RHEL 5.4).
Aktualizacja: Teraz pamiętam, jak to się stało w Fedorze: otworzyłem terminal i wykonałem FreeVM, aby użyć konsoli maszyny wirtualnej (powłoki). Myślę, że był to rozmiar 80 x 25, a potem po pewnym czasie zmieniłem rozmiar terminalu w przybliżeniu na 130 x 50, a potem „wewnętrzna powłoka” (VM) zaczęła się dziwnie zachowywać).
reset
nie rozwiązuje problemu.^Jreset^J
, gdzie^J
oznacza prasowaniemctrl-J
. Lub (na terminalach graficznych) możesz wypróbowaćReset
przycisk. Ponadto niektóre programy po prostu nie są przygotowane na zmiany rozmiarów terminali pod nimi (tak, starożytne oprogramowanie żyje i kopie) lub po prostu źle się zachowuje, gdy terminal staje się zbyt mały.Odpowiedzi:
Jeśli używasz bash, sprawdź, czy opcja „checkwinsize” jest aktywowana w sesji przy użyciu
Jeśli nie dostaniesz
następnie aktywuj za pomocą
Dokumentacja Bash mówi o atrybucie „checkwinsize”:
Jeśli podoba Ci się to ustawienie, możesz je aktywować
checkwinsize
w swoim~/.bashrc
.shopt -s checkwinsize
shopt -u checkwinsize
źródło
Możesz spróbować Ctrl+ L. Czyści i / lub przerysowuje ekran terminala, w zależności od programu.
źródło
dodanie tych opcji do exec dockera wydawało się rozwiązać mój problem
źródło
Miałem ten sam problem i żaden z powyższych przepisów nie działał dla mnie, ponieważ uważam, że mój bash nigdy nie odbiera
SIGWINCH
sygnałów, które są uwięzione przez proces macierzysty.W końcu znalazłem rozwiązanie. Dodałem do mojego
.bashrc
:Teraz za każdym razem, gdy pojawia się nowy monit, moje okno jest ponownie dostosowywane.
Dzięki UKmonkey za ulepszenie PROMPT_COMMAND.
źródło
export PROMPT_COMMAND="resize &>/dev/null; $PROMPT_COMMAND"
tym, aby stare szybkie polecenie, cokolwiek by to było, zostanie zachowaneChciałem tylko dodać do tego, o czym Arcadien już wspomniał. Włączenie checkwinsize załatwia sprawę, ale dla mnie konieczne było zresetowanie rozmiaru okna, aby działało poprawnie. Myślę, że checkwinsize miał to wyeliminować, ale nadal warto spróbować. Po prostu spróbuj zmienić rozmiar okna lub un-maksymalizować i maksymalizować to po tej opcji.
źródło
Od czasu do czasu mam ten sam problem, używając Zsh na MacOS. Proste wywołanie
reset
polecenia ponownie ustawia terminal zgodnie z moimi upodobaniami.źródło
reset
to nie działało dla nich, i to było w istocie pytanie…reset
pracowałem w tej sprawie. Dodałem tę odpowiedź, aby pomóc każdemu, kto napotyka ten sam problem na MacOS i nie jest świadomyreset
polecenia.reset
działa na Windows Putty z Ubuntu 16.04!Miałem ten sam problem co ty i właśnie to zrobiłem:
mam
.profile
konfigurację w moim użytkowniku, więc tutaj dokonuję wszystkich zmian.Istnieje pakiet o nazwie,
xterm
który jest dostępny przezapt-get
, o którym nie wiemyum
. Ale zrobiłem lokalną instalację ze źródła, ponieważ nie mam uprawnień do instalacji. LINK: http://invisible-island.net/xterm/#downloadWyeksportowałem ścieżkę do mojego profilu i wywołałem ją w tym samym miejscu
Więc teraz za każdym razem, gdy się loguję, rozmiar terminala jest odpowiednio ustawiany przez zmianę rozmiaru.
źródło
To jest powszechny problem i powinno być proste rozwiązanie.
Jeśli inne miary, takie jak Ctrl + A Ctrl + L, nie działają, spróbuj użyć
stty
:Lub: Opuść ekran (Ctrl + AD, aby odłączyć) i wyloguj się z sesji SSH.
stty -a | grep rows
: Uzyskaj liczbę wierszy i kolumn.Przykład:
speed 38400 baud; rows 33; columns 133; line = 0;
stty
powinien być inny.Przykład:
speed 38400 baud; rows 47; columns 177; line = 0;
stty rows N
istty columns N
gdzie N to „rzeczywista” liczba (poza ekranem). Przykład:$ stty rows 33; stty columns 133
Jeśli używasz Terminatora , możesz pominąć pierwsze trzy kroki, ponieważ pokazuje on liczbę kolumn i wierszy u góry.
Nie musisz zmieniać rozmiaru okien terminala, aby na to wpaść. Administratorzy zwykle logują się z różnych komputerów, a gdy podłączone monitory różnią się rozmiarem (rozdzielczością), maksymalizowane okno będzie miało inny rozmiar na każdym komputerze. Naprawdę trudno jest nie wpaść na to często.
W rezultacie nie tylko niektóre strony podręcznika nie wyświetlają się poprawnie. To prawie wszystko, co korzysta z pagera - często brakuje kilku pierwszych wierszy (na przykład). I nawet nie myśl o użyciu VIM w tak źle wyregulowanym terminalu. Chcesz podświetlić wiersz 3 (V), aby go zastąpić, ale kiedy to zrobisz, podświetlony tekst jest tekstem z innego wiersza.
źródło
Spróbować
stty sane
. powinien zrobić to, czego potrzebujesz.źródło