Как очистить предыдущий вывод в терминале в Mac OS X?

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

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

Ответ 1

Чтобы очистить терминал вручную:

+ K

Command + K для новых клавиатур

Чтобы очистить терминал из оболочки script;

/usr/bin/osascript -e 'tell application "System Events" to tell process "Terminal" to keystroke "k" using command down'

Ответ 2

Лучший способ очистить экран из скрипта...

Если вы используете приложение OSX Terminal (как указано в OP), лучшим подходом (благодаря https://apple.stackexchange.com/a/113168) является следующее:

clear && printf '\e[3J'

или более кратко (отзыв на https://stackoverflow.com/users/4834046/qiuyi):

printf '\33c\e[3J'

который очищает буфер прокрутки, а также экран. Есть и другие варианты, см. https://apple.stackexchange.com/a/113168 для получения дополнительной информации.

оригинальный ответ

Ответ AppleScript, данный в этой теме, работает, НО у него есть неприятный побочный эффект очистки ЛЮБОГО окна терминала, которое оказывается активным. Это удивительно, если вы запускаете скрипт в одном окне и пытаетесь выполнить работу в другом!

Вы можете избежать этого, улучшив AppleScript, чтобы очистить экран только в том случае, если он находится впереди, выполнив это (взято из https://apple.stackexchange.com/a/31887):

osascript -e 'if application "Terminal" is frontmost then tell application "System Events" to keystroke "k" using command down'

... но если это не текущее окно, вывод будет складываться до тех пор, пока снова не станет текущим, что, вероятно, не то, что вам нужно.

Ответ 3

Симпатичный способ: printf '\33c\e[3J'

Ответ 4

Поместите это в свой .bash_profile или .bashrc

function cls { 
osascript -e 'tell application "System Events" to keystroke "k" using command down' 
}

Ответ 5

В Mac OS X Terminal эта функциональность уже встроена в приложение терминала как View->Clear Scrollback (по умолчанию CMD + K).

Таким образом, вы можете переназначить это, как вам нравится, с помощью ярлыков Apple Keyboard. Просто добавьте новый ярлык для терминала с помощью команды "Очистить прокрутку". (Я использую CMD + L, потому что он похож на CTRL + L, чтобы очистить текущее содержимое экрана, не очищая буфер.)

Не знаете, как вы могли бы использовать это в script (возможно, AppleScript, как указывали другие).

Ответ 6

В Mac OS X Yosemite (10.10) используйте Option + Command + K для очистки прокрутки в Terminal.app.

Ответ 7

Или вы можете отправить разрыв страницы (фид формы ASCII), нажав:

CTRL+L

В то время как это технически только начинает новую страницу, это имеет тот же чистый эффект, что и все другие методы, хотя и намного быстрее (за исключением решения Apple + K, конечно).

И поскольку это команда управления ASCII, она работает во всех оболочках.

Ответ 8

clear && printf '\e[3J'

очищает все, хорошо работает и на osX. очень аккуратный

Ответ 9

Command + K очистит предыдущий вывод

Чтобы очистить введенный текст, сначала прыгните влево с помощью " Command + A ", затем очистите текст справа от указателя с помощью " Control + K ".

Визуальные примеры: enter image description here

Ответ 10

Делай правильно, делай правильно!

Очистить до предыдущей отметки: Command-L

Очистить до предыдущей закладки: Option-Command-L

Очистить, чтобы начать: Command-K

Помогите своим парням!

Ответ 11

Введя в терминал следующее, вы удалите свою историю (то есть стрелка вверх не даст вам ничего), но не очистит экран:

history -c

Ответ 12

Я не мог заставить любой из вышеперечисленных работать (на macOS).

Комбинация работала для меня -

IO.write "\e[H\e[2J\e[3J"

Это очищает буфер и экран

Ответ 13

Чтобы удалить только последний вывод:

+ L

Чтобы очистить терминал полностью:

+ K

Ответ 14

CMD + K, кажется, работает все время для меня.