Как очистить предыдущий вывод в терминале в 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. Просто добавьте новый ярлык для терминала с командой "очистить прокрутку". (Я использую CMD+L, потому что это похоже на CTRL+L чтобы очистить текущее содержимое экрана, не очищая буфер.)
Не уверен, как бы вы использовали это в скрипте (возможно, AppleScript, как указывали другие).
С Mac OS X Yosemite (10.10) используйте
Option + Command + K
очистить журнал в терминале.приложение.
или вы можете послать разрыв страницы (ASCII форма подачи), нажав:
CTRL+L
хотя это технически просто запускает новую страницу, это имеет тот же чистый эффект, что и все другие методы, хотя и намного быстрее (за исключением решения Apple+K, конечно).
и поскольку это команда управления ASCII, она работает во всех оболочках.
набрав следующее в терминале будет стереть ваша история (то есть с помощью стрелки вверх вы ничего не получите) - но не очистит экран:
history -c