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