Как очистить предыдущий вывод в терминале в 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'
... но, как и когда это не текущее окно, вывод будет складывайте, пока он снова не станет текущим, что, вероятно, не то, что вы хотите.
положите это в свой .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, она работает во всех оболочках.
набрав следующее в терминале будет стереть ваша история (это означает, что с помощью стрелки вверх вы ничего не получите) - но не очистит экран:
history -c
Я не мог заставить ни один из вышеперечисленных работать (на macOS).
комбинация сработала для меня -
IO.write "\e[H\e[2J\e[3J"
это очищает буфер и на экране