1

Можно ли настроить терминал НЕ для прокрутки вниз до последней строки, когда текущая программа выводит данные на стандартный вывод?

У меня есть программа, которая работает и постоянно выводит данные на стандартный вывод, таким образом, обновляя терминал, и терминал автоматически прокручивается до последней строки и не позволяет мне читать данные, которые были выведены ранее или другие команды, которые я ранее выполнял.

2 ответа2

3

Зависит от используемой вами программы терминала. Вы должны быть в состоянии найти эту информацию в документации для него. Большинство основано на оригинальном xterm , который я использую, поэтому я отвечу на основании этого.

Для этого в интерактивном режиме в существующем xterm вы можете использовать меню кнопки "Управление средней мышью". В меню есть пункт "Прокрутить до конца при выводе TTY", который изначально установлен по умолчанию, вы просто щелкаете по нему, и он снимает галочку, и xterm больше не будет переходить вниз, когда есть вывод.

Если вы хотите, чтобы определенный xterm запускался таким образом, есть параметр командной строки -si который запускает его без проверки. Если вы хотите, чтобы это было значением по умолчанию для всех xterm , вы можете установить ресурс scrollTtyOutput (везде, где вы устанавливаете свои ресурсы X, и вы можете использовать структуру Xresource, чтобы она применялась только к некоторым xterm ).

Я знал, что все эти варианты существуют, и просто использовал man xterm прямо сейчас, чтобы получить детали. Одна из замечательных особенностей UNIX (по большей части в Linux) заключается в том, что вся документация прямо здесь. Вы просто должны посмотреть на это.

2

Вы можете временно запретить прокрутку, нажав CTRL-S на клавиатуре, что приостановит вывод, пока вы не нажмете CTRL-Q. Это позволит вам прочитать то, что в данный момент находится на экране, но также может помешать продолжению работы программы в зависимости от того, как она работает.

Я не знаю каких-либо фактических настроек для самой оболочки, которые будут препятствовать прокрутке экрана до последних выходных данных, но вы можете добиться эквивалентного результата, передавая выходные данные на меньшее. Что-то вроде

    my_command | less 

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .