И не говори " $TERM
" - это всегда xterm
.
Как bash
скрипт может сказать, в каком терминале он работает, в частности, это iTerm, Terminal.app или на самом деле xterm?
Я спрашиваю, потому reset
что не работает из коробки на Terminal.app и iTerm2. iTerm2, однако, распознает escape-последовательность для выполнения перезагрузки терминала ( \x1b]50;ClearScrollback\x07
), и если бы я мог ее обнаружить, я мог бы переопределить reset
псевдоним, который делает правильные вещи. На самом деле, Terminal.app не хватает последовательности сброса, и люди прибегают к нелепым хакерским действиям, чтобы взломать это .
Моя конечная цель здесь - reset
работать одинаково, работаю ли я на OS X или Linux, работаю локально или удаленно через SSH. (Я не хочу пытаться вспомнить, какие именно, и это полезно делать reset && command-that-outputs-a-bunch
и начинать работу.) Terminal.app и iTerm вносят рывок в этот план из-за reset
неправильной реализации .
Это означает, что просто переопределение reset
не совсем так: если я на машине с Linux, он должен знать, использую ли я gnome-terminal
или iTerm, чтобы отправить правильную escape-последовательность.
Есть ли способ (даже если мне нужно ioctl
) спросить терминал, что это на самом деле ?
¹ Для целей этого вопроса сброс должен очистить экран, сбросить курсор и стереть буфер прокрутки.
reset
, так как это то, что знают мои пальцы.
reset
команда очистит содержимое прокрутки в эмуляторе терминала, но это не гарантировано, потому что прокрутка назад является специфичной для эмулятора терминала функцией, а не часть терминала. Тем не менее, терминал поддерживает расширение escape-последовательности ED (Erase in Display) для удаления прокрутки назад ESC [ 3 J
. Вы можете очистить экран, а затем использовать это, например,reset && printf '\e[3J’
xterm
(сквозным TERM=xterm
), я бы ожидал, что вы эмулируете расширенный набор XTerm, который очищает его прокрутку при перезагрузке. (Точно так же, как если бы вы послали escape-последовательность для «blue», вы бы ожидали синего цвета.) Конечно, мой xterm говорит мне об этом Erase is backspace.
, что, я благодарен, больше ничего не делает; это просто раздражает.
Terminal.app
настройки, вкладку терминала и установите для строк прокрутки значение 0? Отключает ли это какой-либо текст над текущей строкой или что-нибудь над верхней частью экрана? Я знаю, это не совсем то, что вы просили, стоит попробовать.