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

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

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

11 ответов


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

+K

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

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

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

лучшую сторону...

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

clear && printf '\e[3J'

который очищает буфер прокрутки. И это быстрее, чем запуск AppleScript. Есть и другие варианты, см. 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'

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


довольно путь printf 'c\e[3J'


положите это в свой .bash_profile или .bashrc и

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

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

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

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


С Mac OS X Yosemite (10.10) используйте Option + Command + K очистить журнал в терминале.приложение.


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

CTRL+L

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

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


clear && printf '\e[3J'

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


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

history -c

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

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

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

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


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