PuTTY: очистить прокрутку из командной строки

27

Когда я подключаюсь к своему серверу через PuTTY, я могу очистить видимый экран с помощью clearкоманды.

Тем не менее, я все еще могу прокрутить назад в GUI PuTTY, чтобы увидеть старые вещи. Мне известна функция очистки прокрутки в PuTTY , но для этого нужно щелкнуть мышью.

Я хотел бы выполнить ту же самую операцию «Очистить прокрутку», но из командной строки.

Является ли это возможным?

Я прочитал этот сайт , который, кажется, указывает на это.

Однако мои эксперименты провалились. Например:

printf '\033[3J'

Ничего не делает для меня.

Я, возможно, не понимаю значение CSI 3 Jэтой второй ссылки, хотя ...

JWD
источник
Какую версию PuTTY вы используете? На странице указано, что функция работает в PuTTY 0.59 и выше. У меня есть PuTTY 0.60, и он работает для меня. Обратите внимание, что он очищает только буфер прокрутки, но не очищает экран. (Если у меня есть полоса прокрутки, которую я могу на самом деле прокручивать, затем используйте эту последовательность, я заметил, что полоса прокрутки отключилась, потому что внезапно ничего не доступно для прокрутки. Но отображаемый в данный момент экран остается на месте.)
Bavi_H
@Bavi_H: ах, спасибо - я не понимал, что это не повлияет на отображаемый в данный момент текст. Я вижу, это тоже работает. Полное решение, которое я хочу, это clear && printf '\033[3J'. Если вы сделаете ответ, я приму его.
JWD

Ответы:

32

CSI 3 JПоследовательность для очистки буфера прокрутки была добавлена в PuTTY 0.59. (На странице запроса пожеланий для этой функции см. Строку «исправлено» или перейдите на страницу изменений PuTTY и выполните поиск CSI 3 J.)

Как упоминалось в jwd, вы можете ввести printf '\033[3J'в командной строке эту последовательность в PuTTY. Имейте в виду, что это только очищает буфер прокрутки, но не очищает экран. Если у вас есть полоса прокрутки, которую вы можете прокрутить, используйте эту последовательность, и вы увидите, что полоса прокрутки отключена, потому что вдруг ничего не доступно для прокрутки. Но отображаемый в данный момент экран остается на месте.

Как упоминалось в jwd, вы можете очистить экран и буфер прокрутки, используя clear && printf '\033[3J'

Bavi_H
источник
И для тех, кто ищет легкое чтение о контрольных кодах: xfree86.org/4.8.0/ctlseqs.html (: этот находится вCSI P s J
jwd
11

Если вы привыкли, как и я, с использованием Ctrl+Lдля Reset terminalопции доступна в меню системы PuTTY, а затем вы можете найти его полезным включить Configuration -> Window -> Behavior -> "System menu appears on ALT-Space".

Затем, когда вы нажимаете Alt+Space, опция для "Clear scrollback"срабатывает L(строчные буквы; без сдвига). Таким образом, reset + clearстановится очаровательно-мнемонической комбинацией Ctrl+Lи Alt+Space Lбез всяких надоедливых размышлений или беспорядка в вашей истории раковины.

ConfexianMJS
источник
Работает и легко запоминается :)
Wyrmwood
Неплохо, однако, к вашему сведению: вы также можете предотвратить загромождение истории вашей оболочки, поставив перед командой префикс с пробелом.
JWD
6

Создайте файл сценария и поместите его в папку с включенным путем:

$cat > /usr/local/bin/cls
#!/bin/bash
clear
printf '\033[3J'

Нажмите CTRL + d, чтобы сохранить и выйти

Изменить разрешение на файл:

chmod a+x /usr/local/bin/cls

Теперь вы можете использовать cmd cls :-)

MrCalvin
источник
1

Решением для меня было передать символы \ 033 \ 143:

Е ( "\ 033 \ 143");

Это очистит экран терминала и вернет курсор в верхний левый угол.

eschick
источник
1
(1) Вопрос требует команды командной строки (т.е. оболочки). Это не команда оболочки, это строка кода на C; как таковой, это не ответ на этот вопрос. (2) Этот пост был бы немного более полезным, если бы вы сказали, что это за \143персонаж, и как он относится к этому вопросу, в идеале с цитатами.
Скотт
1
Для тех, кто интересуется, это соответствует управляющему коду «полный сброс» ( ESC c). ASCII cимеет значение, 99которое является восьмеричным 143. Это будет делать кучу других вещей в дополнение к очистке прокрутки, только к вашему сведению.
17
1

В putty есть опция, с помощью которой вы можете снять поведение прокрутки по умолчанию. Просто снимите флажок «Вставить стертый текст в прокрутку».

Изображение настроек Putty

После этого, когда вы выполните команду очистки, он сотрет экран и не поместит предыдущее содержимое экрана в прокрутку назад.

user3133668
источник