7

Недавно я перешел с Mac на ПК с Windows 10 и экспериментирую с новой подсистемой Linux от Microsoft (она называется "Bash на Ubuntu на Windows"). Самое большое раздражение, которое я испытываю при ежедневном использовании, - это очистка большой стены текста. Может быть, другие могут жить с их экранами, забитыми текстом, но это сводит меня с ума. Я могу иметь дело только с командами, которые оставляют большие дампы текста по одной за раз, то есть я предпочитаю просто прокручивать вверх, чтобы увидеть, где начинается весь вывод последней команды, а затем, когда я закончу с ней Я очищаю его и перехожу к следующей команде. Мне не нравится искать по нескольким дампам вывода команд, чтобы найти, где начинается вывод последней выполненной команды. Да, я знаю, что это не так сложно, я думаю, что я испорчен использованием приложения Mac OS X Terminal, где я мог бы нажать Ctrl+K, чтобы очистить все сразу.

В приложении Windows Bash/Ubuntu. Ближайшая вещь к очистке текста - Ctrl+L, но она очищает только видимый в данный момент экран текста, но не очищает весь прокрутку. Использование только одной команды "сброс" не работает. Я должен прокрутить вверх, сделать Ctrl+L, затем ввести "сброс", чтобы избавиться от всего текста. Это достаточно раздражает, но, кроме того, команда "reset" всегда делает окно уже, чем мои предпочтения, устанавливая его шириной 80 столбцов. Мои настройки, установленные нажатием на значок приложения, а затем "Свойства", относятся к 145 столбцам ширины. Я даже пытался зайти в "По умолчанию" и установить его на 145, но "сброс" все равно делает его 80. Это должно быть что-то настроенное в подсистеме Ubuntu где-то. Эта ширина слишком узка для меня.

Топ проголосовали ответ здесь предлагается использовать терминал GNOME , как это позволяет отображать "сброса и очистки" ярлык, но спрашивающий использовал полномасштабную Ubuntu, а не подсистемы Windows , Ubuntu, поэтому я немного скептически. Будет ли это работать на последнем? Возможно, мне придется посмотреть, выполнимо ли это. Второй ответ предлагает сделать псевдоним "cls" примерно так:

alias cls="echo -ne '\033c'"

Но, увы, это не сработало. Я попытался запустить содержимое псевдонима по отдельности, и это тоже ничего не сделало, то же самое для замены "echo -ne" на "printf".

Моя последняя надежда - третий ответ на этой странице: "установите буфер в 0 строк". Я предполагаю, что это конфигурация в подсистеме Ubuntu, которую я должен изменить, или, может быть, файл конфигурации, который я должен разместить в своем домашнем каталоге (я хотел бы, чтобы они объяснили, что именно они имели в виду). В любом случае, зайти в "Свойства" приложения Windows и поработать с настройками буфера не помогло.

Что касается того, какая терминальная программа используется, отображение $ TERM дает мне "xterm". Да, и версия Ubuntu 14.04. (Я слышал, что следующее крупное обновление Windows 10 даст вам возможность перейти на более новую версию Ubuntu, но мне не хочется прыгать в установку "предварительного просмотра" Windows Insider.)

3 ответа3

5

Самая надежная и переносимая команда, которую я нашел 1 :

printf '\033c\e[3J'

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

alias cls="printf '\033c\e[3J'"

Это включит псевдоним в текущей оболочке. Если вы хотите, чтобы он всегда был в вашем распоряжении при каждом открытии нового терминала, добавьте эту строку в ваш файл .bashrc в вашем домашнем каталоге.


1. Ранее я предлагал использовать clear && echo -en "\e[3J" , как объяснялось в Stack Overflow , но для некоторых пользователей это не работает, поэтому я обновил свой ответ.

2

У меня нет ответа на стандартный терминал Windows Ubuntu. Судя по ссылке DavidPostill, команда разработчиков знает об этой проблеме, поэтому я предполагаю, что она будет исправлена в следующем выпуске. Тем временем я просто переключился на использование MinTTY для WSL (https://github.com/mintty/wsltty). Команда "reset" прекрасно работает в этом терминале, она полностью очищает весь текстовый вывод, оставляя размеры окна в покое.

0

Вы можете создать пакетный файл, чтобы сделать это, когда вы вводите exit в Bash

@ эхо выключено
powershell while (1) {bash ~; ЦБС}

Сохраните файл как файл .bat и запустите его, чтобы закрыть его, закройте окно или нажмите Alt+F4

Я также создал файл .bat и преобразовал его в файл .exe , загрузка доступна на моем Google Диске здесь.

Я проверил это около 4 раз, работает без нареканий.

Если загрузка не работает, пожалуйста, сообщите мне.

Вы можете изменить ссылку в стартовом меню на этот файл bat или exe, отредактировав свойства в C:\Users\usernamehere\AppData\Roaming\Microsoft\Windows\Start Menu\Programs

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