Команда сценария Bash для поиска и выделения текста в буфере терминала

Мне нужно смоделировать выделение (выделение) текста в буфере терминала. Это давно прошло через stdout, поэтому весь материал grep / awk / sed / redirection не имеет отношения к AFAIK. Плюс я не хочу, чтобы он выделялся во время форматирования stdout. Мне нужно, чтобы он не выделил stdout, а затем выделил его. Моделирование выбора.

Вот сценарий ...

Сценарий Bash вызывает "ls -1" и выводит следующее на стандартный вывод, а затем в буфер терминала?

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

Теперь мне нужна команда, которую я могу вставить в сценарий Bash, который найдет и выделит «b.txt».

Примерно:

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

Где "termsearch" - это вымышленная команда, которая, как мне кажется, мне нужна, и она преобразует b.txt в черный текст с белым фоном (выделен), а остальной текст белый на черном фоне. Я думаю, проблема в том, что вы не можете редактировать буфер и изменять стиль текста вот так.

Я могу использовать screen в интерактивном режиме, чтобы найти «b.txt», но он не выделяет (основная цель), и я не знаю, можно ли в любом случае писать экранные команды по сценарию. Так что я сдался на экране. Команда сценария просто выгружает стандартный вывод в файл, но я не хочу искать файл. Мне нужно выполнить поиск в буфере терминала и выделить результаты на экране без дополнительного вывода. То, что я хочу, уже вышло, это просто нужно выделить.

Я думаю, что ncurses - это то, что нужно, но я никогда не программировал с его помощью, и это выглядит сложным. Итак, прежде чем я углублюсь, я спрашиваю, может ли кто-нибудь придумать другой способ сделать это и подтвердить, что ncurses может даже делать то, что я хочу.

0
21.11.2017, 03:34
1 ответ

Я бы использовал vim.

В вашем конкретном случае я бы сделал

vim.

Затем vimпредставит мне окно со всеми файлами в каталоге. Я могу искать с помощью /и открывать файл, нажимая Enter.

Просто убедитесь, что выделение при поиске включено с помощью

:set hlsearch

Для разных команд может и этого хватит:

echo "one\ntwo\nthree" | vim -
0
01.12.2020, 06:15

Теги

Похожие вопросы