
Preciso simular a seleção (destaque) do texto que está no buffer do terminal. Já passou do stdout, então todo o material grep/awk/sed/redirection não é relevante para o AFAIK. Além disso, não quero que seja destacado durante a formatação do stdout. Preciso que ele vá para o stdout sem destaque e depois destaque-o. Simulando seleção.
Aqui está o cenário...
Um script Bash chama "ls -1" e gera o seguinte para stdout e depois para o buffer do terminal?
$ ls -1
a.txt
b.txt
c.txt
Agora preciso de um comando que 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 que acho que preciso e converte b.txt em texto preto com fundo branco (destacado) e o restante do texto é branco sobre fundo preto. Acho que o problema é que você realmente não pode editar o buffer e alterar o estilo do texto assim.
Posso usar screen interativamente para encontrar "b.txt", mas ele não destaca (o objetivo principal) e não sei se é possível criar scripts de comandos de tela de qualquer maneira. Então desisti da tela. O comando de script apenas despeja stdout em um arquivo, mas não quero pesquisar um arquivo. Preciso pesquisar o buffer do terminal e destacar os resultados na tela sem mais stdout. O que eu quero já saiu, só precisa ser destacado.
Estou pensando que ncurses é o caminho a seguir, mas nunca codifiquei com ele e parece complicado. Então, antes de começar, pergunto se alguém pode pensar em outra maneira de fazer isso e validar que ncurses podem até fazer o que eu quero.
Responder1
curto: não, você não pode
mais: a razão pela qual você não pode fazer isso é que os terminais, via de regra, não permitem que programas copiem textodesua tela. É possível, com um caminho tortuoso, fazer com que um aplicativo GUI selecione texto na tela de um terminal e, se você souber o que o textoé, eondeé assim, você poderia, em princípio, emitir comandos no terminal para solicitar que ele repintasse aquela seção da tela usando quaisquer cores. 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 irão modificá-lo.
Responder2
Eu usaria vim
.
Para o seu caso particular, eu faria
vim .
Então vim
irá me apresentar uma janela com todos os arquivos do diretório. Posso pesquisar /
e abrir um arquivo pressionando Enter
.
Apenas certifique-se de que o destaque de pesquisa esteja ativado com
:set hlsearch
Para comandos diferentes, talvez isso seja suficiente:
echo "one\ntwo\nthree" | vim -