%3F.png)
Basicamente quero animar meu terminal, mas como o texto é muito longo, preciso de um pager. Digamos apenas que quero alterar a cor do meu texto periodicamente em menos. É possível?
Responder1
EDITARAs respostas porvonbrandeThomas Dickeysão tecnicamente mais precisos.
less
suporta escapes ANSI brutos quando a -r
opção é usada. Ele também suporta Apagar em linha.
Você não verá nenhuma animação. Por exemplo:
echo -e "foo\x1b[1G\x1b[2Kbar" > test.ansi
less -r test.ansi
Será impresso apenas bar
.
more
transmite escapes ANSI por padrão, mas não oferece suporte à edição de linha do que testei.
Veja tambémesta resposta do Stackoverflow sobre as diferenças de less
emore
most
.
Responder2
Limpar a linha tem apenas uma relação indireta com a alteração das cores dos terminais: se você alterar asfundocolor, então muitos terminais (console Linux, rxvt, xterm, bem como programas que imitam um deles) irão colorir a área limpa do fundo usando essa cor.
less
usa algumas operações de compensação, mas não \x1b[2K
. Lendo ofonte, ele usa vários recursos usando a interface termcap. As partes mais relevantes estão descritas noinformações do termo(5)página de manual:
clr_bol el1 cb Clear to beginning
of line
clr_eol el ce clear to end of line
(P)
Isto é, \x1b[K
e \x1b[K
, para el1
e el
, respectivamente. Não há capacidade termcap convencional el2
e (a menos que você diga less
para apenas passar o conteúdo de um arquivo usando a opção -r
ou ), não enviará um arquivo .-R
less
\x1b[2K
O mesmo é verdade para more
, por exemplo, como noutil-linux
pacote: usa apenas recursos do termcap. Ao contrário less
, more
não tem opção de enviar caracteres não imprimíveis diretamente para o terminal.
Se você usar a opção -r
ou de , deve ter em mente que é-R
less
limitado: less
não sabe (ou se importa muito) com o que essas fugas fazem. Depágina de manual:
-r
ou--raw-control-chars
Causas"cru"caracteres de controle a serem exibidos. O padrão é exibir caracteres de controle usando a notação circunflexa; por exemplo, um controle-A (octal 001) é exibido como "^A". Aviso: quando a-r
opção é usada,less
não podeacompanhe a aparência real da tela (já que isso depende de como a tela responde a cada tipo de caractere de controle). Assim, podem ocorrer vários problemas de exibição, como linhas longas divididas no lugar errado.
Responder3
O que reage às sequências de escape normalmente é o tty (a menos que o programa em execução o defina para não honrá-las, caso em que o próprio programa pode fazê-lo). more(1)
faz uma reescrita de tela bastante primitiva (é realmente suficiente escrever linhas de comprimento de tela e aguardar um pressionamento de tecla), então acho que apenas passa a entrada. less(1)
precisa fazer backup, por isso precisa de um controle mais detalhado da tela.