Мне нужно смоделировать выделение (выделение) текста в буфере терминала. Это давно прошло через 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 может даже делать то, что я хочу.
Я бы использовал vim
.
В вашем конкретном случае я бы сделал
vim.
Затем vim
представит мне окно со всеми файлами в каталоге. Я могу искать с помощью /
и открывать файл, нажимая Enter
.
Просто убедитесь, что выделение при поиске включено с помощью
:set hlsearch
Для разных команд может и этого хватит:
echo "one\ntwo\nthree" | vim -