Comando de script Bash para buscar y resaltar texto en el búfer del terminal

Comando de script Bash para buscar y resaltar texto en el búfer del terminal

Necesito simular la selección (resaltado) de texto que está en el búfer del terminal. Ya pasó la salida estándar, por lo que todo el material grep/awk/sed/redirection no es relevante AFAIK. Además, no quiero que se resalte durante el formateo de la salida estándar. Necesito que vaya a la salida estándar sin resaltar y luego resaltarlo. Simulando la selección.

Aquí está el escenario...

¿Un script Bash llama a "ls -1" y genera lo siguiente en la salida estándar y luego en el búfer del terminal?

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

Ahora necesito un comando que pueda poner en un script Bash que busque y resalte "b.txt".

Como:

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

Donde "termsearch" es un comando inventado que creo que necesito y convierte b.txt a texto negro con fondo blanco (resaltado) y el resto del texto es blanco sobre fondo negro. Creo que el problema es que realmente no se puede editar el búfer y cambiar el estilo del texto de esta manera.

Puedo usar la pantalla de forma interactiva para encontrar "b.txt", pero no resalta (el objetivo principal) y no sé si es posible escribir comandos de pantalla de todos modos. Así que me di por vencido en la pantalla. El comando de secuencia de comandos simplemente descarga la salida estándar en un archivo, pero no quiero buscar en un archivo. Necesito buscar en el búfer del terminal y resaltar los resultados en la pantalla sin más salida estándar. Lo que quiero ya está disponible, sólo hay que resaltarlo.

Creo que ncurses es el camino a seguir, pero nunca he codificado con él y parece complicado. Entonces, antes de sumergirme, pregunto si alguien puede pensar en otra forma de hacer esto y validar que ncurses pueda hacer lo que quiero.

Respuesta1

breve: no, no puedes

más tiempo: la razón por la que no puedes hacer esto es que los terminales, por regla general, no permiten que los programas copien texto.desu pantalla. Es posible con un camino tortuoso conseguir que una aplicación GUI seleccione texto de la pantalla de una terminal, y si luego sabes cuál es el textoes, ydóndeSi lo es, en principio podrías emitir comandos en el terminal para indicarle que vuelva a pintar esa sección de la pantalla usando cualquier color. Pero eso es sólo hipotético (a menos que alguien haya escrito recientemente un programa para hacer esto).

Por cierto, una vez que el texto se desplaza fuera de la pantalla visible, los terminales tampoco lo modificarán.

Respuesta2

Yo usaría vim.

Para tu caso particular yo haría

vim .

Luego vimme presentará una ventana con todos los archivos del directorio. Puedo buscar con /y abrir un archivo presionando Enter.

Solo asegúrese de que el resaltado de búsqueda esté habilitado con

:set hlsearch

Para diferentes comandos, tal vez esto sea suficiente:

echo "one\ntwo\nthree" | vim -

información relacionada