Comando script Bash para pesquisar e realçar texto no buffer do terminal

0

Eu preciso simular a seleção (realce) do texto que está no buffer do terminal. É muito tempo depois stdout então todo o material do grep / awk / sed / redirection não é relevante AFAIK. Além disso, não quero que seja destacado durante a formatação do stdout. Eu preciso que ele vá para stdout sem destaque e, em seguida, destaque-o. Simulando a seleção.

Aqui está o cenário ...

Um script Bash chama "ls -1" e gera o seguinte para stdout e, em seguida, o buffer do terminal?

$ ls -1
a.txt
b.txt
c.txt

Agora eu preciso de um comando que eu possa colocar em um script Bash que encontre e destaque "b.txt".

Como:

$ termsearch b.txt
a.txt
[b.txt]
c.txt

Onde "termsearch" é um comando inventado, eu acho que preciso e ele converte b.txt em texto preto com fundo branco (realçado) e o restante do texto é branco em fundo preto. Eu acho que o problema é que você não pode realmente editar o buffer e mudar o estilo do texto assim.

Eu posso usar a tela interativamente para encontrar "b.txt", mas ela não é realçada (o objetivo principal) e não sei se é possível fazer comandos de tela de script de qualquer maneira. Então eu desisti da tela. O comando de script apenas copia o stdout para um arquivo, mas não quero pesquisar um arquivo. Eu preciso procurar o buffer do terminal e destacar os resultados na tela sem mais stdout. O que eu quero já está fora, só precisa ser destacado.

Eu estou pensando que ncurses é o caminho a seguir, mas eu nunca codifiquei e parece complicado. Então, antes de mergulhar, estou perguntando se alguém pode pensar em outra maneira de fazer isso e validar que as ncurses podem até fazer o que eu quero.

    
por user261502 21.11.2017 / 02:34

1 resposta

1

curto: não, você não pode

maior: a razão pela qual você não pode fazer isso é que os terminais, como regra, não permitem que os programas copiem o texto de da tela. É possível com um caminho tortuoso para obter uma aplicação GUI para selecionar texto a partir da tela de um terminal, e se você souber o que o texto é , e onde é, você poderia Em princípio, emita comandos no terminal para que repintem essa seção da tela usando qualquer cor. Mas isso é apenas hipotético (a menos que alguém tenha escrito recentemente um programa para fazer isso).

A propósito, uma vez que o texto é rolado para fora da tela visível, os terminais também não modificarão isso.

    
por 21.11.2017 / 02:50