Fazer reset no Mac como reset no Linux

1

No Mac, o comando reset no terminal quase faz o mesmo que clear . No Ubuntu Linux, e talvez em outras versões do Linux, o comando reset realmente "redefine" o terminal para que você não possa rolar para cima ou ver os comandos de entrada anteriores rolando. Existe uma maneira de fazer o comando reset no Mac agir / fazer a mesma coisa que o reset no Linux? Se sim, como posso fazer isso?

    
por StrangeRanger 23.12.2017 / 00:33

2 respostas

5

Na verdade (no MacOS), não é exatamente a mesma coisa (a descrição da página de manual para " clear " é diferente de " reset " ).

O MacOS vem com ncurses 5.7 ( 9 anos), com algumas atualizações no banco de dados do terminal. Se você quiser algo mais novo, a instalação do MacPorts permite que você atualize ncurses para a versão atual (menos alguns meses).

A propósito, isso seria mais recente que o Ubuntu, que geralmente fica com versões de desenvolvimento de 6 meses a 2 ou mais anos.

    
por 23.12.2017 / 00:44
1

Este é um pouco de artefato histórico. No alvorecer do Unix time_t , os computadores eram as grandes caixas no datacenter e os terminais eram peças separadas de hardware que eram usadas para se comunicar com eles. Um terminal não vinha necessariamente do mesmo fabricante que o computador, e cada fabricante e modelo de terminal tinha seu próprio conjunto de recursos extras e peculiaridades que precisavam ser levados em conta.

curses e seu sucessor posterior ncurses são bibliotecas que ocultam todas as especificações dos terminais dependentes do modelo e fornecem maneiras padrão de realizar operações de controle de terminal, como "limpar a tela" ou "redefinir a terminal para configurações padrão sane ". Essas bibliotecas usam a variável de ambiente TERM para decidir qual conjunto de seqüências de controle deve ser usado.

Comandos como clear e reset usam essas bibliotecas para traduzir a operação solicitada pelo usuário em seqüências de controle específicas do modelo de terminal e enviá-las para o terminal. Essas sequências de controle específicas do modelo são armazenadas em termcap ou terminfo arquivos - termcap é o estilo antigo e terminfo é o que é usado por ncurses .

Hoje, é muito comum que o "terminal" seja, na verdade, um emulador de terminal que é executado no mesmo hardware físico do computador real. Mas ainda é controlado como se fosse uma peça separada de hardware.

Isso deixa o programador do emulador de terminal com um certo grau de liberdade para escolher como os recursos específicos devem ser implementados. Por exemplo, o programador pode fazer com que a reinicialização do terminal limpe o buffer de deslocamento de rolagem - ou ele pode escolher o contrário, se ele / ela acha que o buffer de rolagem "pertence" ao usuário e nenhum aplicativo deve tem o poder de limpá-lo.

Como alternativa, o programador do emulador de terminal pode ter fornecido diferentes seqüências de controle para redefinir o terminal, seja com ou sem limpar o buffer de rolagem. Nesse caso, a pessoa que empacota as bibliotecas de controle de terminal para uma distribuição de SO terá a opção a fazer: o comando reset deve limpar o pergaminho por padrão ou não? Dependendo da escolha, ele / ela pode armazenar uma seqüência de controle diferente no local apropriado nos arquivos de dados usados pelas bibliotecas de controle do terminal.

Sempre foi possível ao administrador do sistema adicionar novos conjuntos de sequências de controle de terminal aos arquivos termcap ou terminfo ou modificar os existentes. Talvez algum site tivesse um modelo de terminal que não fosse amplamente conhecido, ou talvez uma definição padrão exigisse apenas alguns ajustes para corresponder a um caso de uso específico. Se a sequência de controle padrão usada pelo comando reset na verdade for "reinicializar o terminal sem limpar a rolagem", você poderá substituí-lo por um código "reset terminal and scrollback" nos arquivos.

    
por 23.12.2017 / 18:49