Ответ 1
Чтобы очистить терминал вручную:
⌘ + K
Command + K для новых клавиатур
Чтобы очистить терминал из оболочки script;
/usr/bin/osascript -e 'tell application "System Events" to tell process "Terminal" to keystroke "k" using command down'
Я знаю команду clear
, которая "очищает" текущий экран, но делает это просто путем печати большого количества новых строк - очищенное содержимое просто прокручивается.
Есть ли способ полностью стереть весь предыдущий вывод с терминала, чтобы я не смог достичь его даже при прокрутке?
⌘ + K
Command + 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'
или более кратко (отзыв на 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'
... но если это не текущее окно, вывод будет складываться до тех пор, пока снова не станет текущим, что, вероятно, не то, что вам нужно.
Симпатичный способ: printf '\33c\e[3J'
Поместите это в свой .bash_profile или .bashrc
function cls {
osascript -e 'tell application "System Events" to keystroke "k" using command down'
}
В Mac OS X Terminal эта функциональность уже встроена в приложение терминала как View->Clear Scrollback
(по умолчанию CMD + K).
Таким образом, вы можете переназначить это, как вам нравится, с помощью ярлыков Apple Keyboard. Просто добавьте новый ярлык для терминала с помощью команды "Очистить прокрутку". (Я использую CMD + L, потому что он похож на CTRL + L, чтобы очистить текущее содержимое экрана, не очищая буфер.)
Не знаете, как вы могли бы использовать это в script (возможно, AppleScript, как указывали другие).
В Mac OS X Yosemite (10.10) используйте Option + Command + K
для очистки прокрутки в Terminal.app.
Или вы можете отправить разрыв страницы (фид формы ASCII), нажав:
CTRL+L
В то время как это технически только начинает новую страницу, это имеет тот же чистый эффект, что и все другие методы, хотя и намного быстрее (за исключением решения Apple + K, конечно).
И поскольку это команда управления ASCII, она работает во всех оболочках.
clear && printf '\e[3J'
очищает все, хорошо работает и на osX. очень аккуратный
Command + K очистит предыдущий вывод
Чтобы очистить введенный текст, сначала прыгните влево с помощью " Command + A ", затем очистите текст справа от указателя с помощью " Control + K ".
Делай правильно, делай правильно!
Очистить до предыдущей отметки: Command-L
Очистить до предыдущей закладки: Option-Command-L
Очистить, чтобы начать: Command-K
Помогите своим парням!
Введя в терминал следующее, вы удалите свою историю (то есть стрелка вверх не даст вам ничего), но не очистит экран:
history -c
Я не мог заставить любой из вышеперечисленных работать (на macOS).
Комбинация работала для меня -
IO.write "\e[H\e[2J\e[3J"
Это очищает буфер и экран
⌘ + L
⌘ + K
CMD + K, кажется, работает все время для меня.