Иногда экран терминала man ls
портится , и когда мы используем для чтения справочные страницы или нажимаем стрелку ВВЕРХ для перехода к предыдущим командам в истории, на экране будут отображаться символы не в нужном месте. (например, трактуйте конец экрана как середину экрана).
Команда reset
опробована, и она не будет работать. Один из способов, который работает, - выйти из системы или закрыть окно и сначала изменить его размер, а затем сделать это ssh
(или закрыть эту вкладку и изменить размер окна, а затем открыть новую вкладку, чтобы получить новую оболочку).
Но таким образом мы потеряем все, что делали ранее, например, запустили консоль виртуальной машины и т. Д. Итак, если мы не закроем оболочку, есть ли способ решить эту проблему?
(это происходило раньше прямо в Fedora, а также для Macbook ssh
в коробке RHEL 5.4).
Обновление: теперь я помню, как это произошло в Fedora: я открыл терминал и создал FreeVM для использования консоли виртуальной машины (оболочки). Я думаю, что это был размер 80 x 25, а затем через некоторое время я изменил размер терминала примерно до 130 x 50, а затем «внутренняя оболочка» (виртуальной машины) начала вести себя странно).
reset
не решить проблему.^Jreset^J
, где^J
означает нажимctrl-J
. Или (на графических терминалах) вы можете попробоватьReset
кнопку. Кроме того, некоторые программы просто не готовы к изменению размеров терминала под ними (да, древнее программное обеспечение живо и работает) или просто плохо себя ведут, когда терминал становится слишком маленьким.Ответы:
Если вы используете bash, проверьте, активирована ли опция "checkwinsize" в вашей сессии, используя
Если вы не получите
затем активируйте его
Bash документация говорит для атрибута "checkwinsize":
Если вам нравится настройка, вы можете активировать
checkwinsize
в своем~/.bashrc
.shopt -s checkwinsize
shopt -u checkwinsize
источник
Вы можете попробовать Ctrl+ L. Он очищает и / или перерисовывает экран терминала в зависимости от программы.
источник
добавление этих опций в docker exec, похоже, решило мою проблему
источник
У меня была та же проблема, и ни один из вышеперечисленных рецептов не сработал для меня, потому что я считаю, что мой bash никогда не получает
SIGWINCH
сигналы, которые перехватываются его родительским процессом.Я наконец нашел решение. Я добавил в мой
.bashrc
:Теперь каждый раз, когда я получаю новое приглашение, мое окно перестраивается.
Спасибо UKmonkey за улучшение PROMPT_COMMAND.
источник
export PROMPT_COMMAND="resize &>/dev/null; $PROMPT_COMMAND"
тем, чтобы старая команда подсказки, какой бы она ни была, будет сохраненаЯ просто хотел добавить к тому, что Аркадьен уже упоминал. Включение checkwinsize делает свое дело, но мне нужно было сбросить размер окна, чтобы оно работало должным образом. Я полагаю, что размер контрольного размера должен был устранить это, но все же, стоит попробовать. Просто попробуйте изменить размер окна или не максимизировать и развернуть его, опубликуйте эту опцию.
источник
Время от времени я сталкиваюсь с одной и той же проблемой, используя zsh на macOS. Простой вызов
reset
команды снова настраивает терминал на мой вкус.источник
reset
это не работает для них, и это было на самом деле суть вопроса ....reset
работал в этом случае. Я добавил этот ответ, чтобы помочь любому, кто сталкивается с той же проблемой на MacOS и не знает оreset
команде.reset
работает на Windows Putty с Ubuntu 16.04!У меня была та же проблема, что и у вас, и это то, что я сделал: у
меня есть
.profile
настройки в моем пользователе, так что именно здесь я делаю все свои изменения.Есть пакет,
xterm
который называется через которыйapt-get
я не знаюyum
. Но я сделал локальную установку из источника, так как у меня нет прав на установку. ССЫЛКА: http://invisible-island.net/xterm/#downloadЯ экспортировал путь в своем профиле и вызвал его в том же месте
Так что теперь каждый раз, когда я вхожу, размер терминала устанавливается соответственно изменением размера.
источник
Ну, это общая проблема, и должно быть простое решение.
Если другие меры, такие как Ctrl + A, Ctrl + L не работают, попробуйте использовать
stty
:Или: выйдите из экрана (Ctrl + AD, чтобы отсоединиться) и выйдите из сеанса SSH.
stty -a | grep rows
: Получить количество строк и столбцов.Пример:
speed 38400 baud; rows 33; columns 133; line = 0;
stty
Выход должен быть различным.Пример:
speed 38400 baud; rows 47; columns 177; line = 0;
stty rows N
иstty columns N
где N - «реальное» число (вне экрана). Пример:$ stty rows 33; stty columns 133
Если вы используете терминатор , вы можете пропустить первые три шага, потому что он показывает количество столбцов и строк в верхней части.
Вам не нужно изменять размеры окон терминала, чтобы столкнуться с этим. Администраторы обычно входят в систему с разных компьютеров, и когда подключенные мониторы различаются по размеру (разрешению), развернутое окно будет иметь разный размер на каждом компьютере. На самом деле довольно сложно не сталкиваться с этим часто.
И результат не только в том, что некоторые справочные страницы не отображаются должным образом. Это почти все, что использует пейджер - первые несколько строк часто отсутствуют (например). И даже не думайте об использовании VIM в таком смещенном терминале. Вы хотите выделить строку 3 (V), чтобы заменить ее, но когда вы это сделаете, выделенный текст будет текстом другой строки.
источник
Попробуй
stty sane
. это должно делать то, что вам нужно.источник