E não diga " $TERM" - é sempre xterm.
Como um bashscript pode dizer em qual terminal está sendo executado, especificamente se é iTerm, Terminal.app ou, na verdade, um xterm?
Eu pergunto porque resetnão funciona fora da caixa no Terminal.app e iTerm2. O iTerm2, no entanto, reconhece uma sequência de escape para fazer um reset de terminal ( \x1b]50;ClearScrollback\x07), e se eu pudesse detectá-lo, eu poderia substituir resetpor um alias que fizesse a coisa certa. AFAICT, Terminal.app não possui uma sequência de reinicialização, e as pessoas recorrem à ridícula tom-hacker para descobrir isso .
Meu objetivo final aqui é ter reseto mesmo trabalho, seja trabalhando no OS X ou Linux, trabalhando local ou remotamente através do SSH. (Eu não quero ter que tentar lembrar qual, e é útil fazer reset && command-that-outputs-a-bunche ter up-enter funcionar.) Terminal.app e iTerm estão jogando uma chave neste plano, não implementando resetcorretamente.
Isso significa que simplesmente resetnão há nada: se estou em uma máquina Linux, ele precisa saber se estou usando o gnome-terminaliTerm para enviar a sequência de escape correta.
Existe alguma maneira (mesmo se eu precisar de um ioctl) para perguntar ao terminal o que realmente é?
ThePara os fins desta questão, a reinicialização deve limpar a tela, redefinir o cursor e limpar o buffer de rolagem.
reset, já que é o que meus dedos sabem.
resetcomando para limpar o conteúdo de rolagem traseira do emulador de terminal, mas isso não é garantido para fazer isso, porque scroll-back é um recurso específico do emulador de terminal, não realmente um parte de um terminal. No entanto, o Terminal suporta uma extensão da sequência de escape ED (Apagar na Exibição) para apagar o deslocamento de retorno ESC [ 3 J. Você pode limpar a tela, então use isso, por exemplo,reset && printf '\e[3J’
xterm(através de TERM=xterm) eu esperaria que você emula um superconjunto do XTerm, que limpa o seu retrocesso na reinicialização. (Assim como se você mandasse a seqüência de escape para "blue", você esperaria azul.) Concedido, meu xterm me diz isso Erase is backspace., o que eu sou grato mais nada faz; isso é simplesmente chato.
Terminal.appas configurações, a guia do terminal e definir as linhas de rolagem para 0? Isso desativa todo e qualquer texto acima da linha atual, ou qualquer coisa acima da parte superior da tela? Eu sei, não é exatamente o que você pediu, vale um tiro.