LINUX.ORG.RU

Bash подсветка

 


0

4

Привет! Возникла такая трудность. Мне нужно сделать подсветку текста файла, при просмотре его в bash . Сам баш делает подсветку текста при выводе, таких данных \e[0;31m ТЕКСТ КРАСНОГО ЦВЕТА. А мне нужно, чтоб при просмотре файла с такимиже данными, запись типа \e[0;31m НУЖНО ЭТОТ ТЕКСТ ОТОБРАЗИТЬ КРАСНЫМ
выводилась указанным цветом. Как это сделать?

Deleted

а, тебе надо чтобы при открытии файла обрабатывались escape-последовательности с цветами баша?

ii343hbka ★★★
()
Ответ на: комментарий от zolden

Это есть... Простой просмотр через терминал - баш. Файла. Т.е. в баше, я ввожу к примеру «cat ./file» и мне баш выводит текст из этого файла. И мне нужно, чтоб баш данные из этого файла, подсвечивал также, как и при прямом выводе текста («\e[0;31m») на терминал.Т.е. если в баше ввести на вывод «\e[0;31m hello» то он выведет текст hello красным цветом. Однако, если в читаемом файле встречается текст \e[0;31m privet , то он интерпретируется терминалом как обычный текст, и выводится соответствующе. Однако мне нужно, чтоб терминал, интерпретировал текст из файла, также как и простой вывод в самом терминале. т.е. нужно чтоб при «cat ./file» , текст внутри файла также был подсвечен.

Deleted
()
Ответ на: комментарий от Deleted

честно говоря, я не знаю, как это сделать. Ну т.е. очевидное решение - echo -e «$(cat <filename>)», но это, имхо, как-то костыльно и дыряво
я спросил только чтобы следующим, кто придет было проще понять

ii343hbka ★★★
()
Последнее исправление: ii343hbka (всего исправлений: 2)
Ответ на: комментарий от anonymous

Точнее,

while IFS= read -r line; do
    printf -- "${line//%/%%}\n"
done < file
anonymous
()
Ответ на: комментарий от Deleted

Однако мне нужно, чтоб терминал, интерпретировал текст из файла, также как и простой вывод в самом терминале. т.е. нужно чтоб при «cat ./file» , текст внутри файла также был подсвечен.

дык запихай в файл ESC последовательность. В чём проблема-то?

Только учти, что подсвечивает терминал, bash тут вообще не при чём.

emulek
()
Ответ на: комментарий от Deleted
$ echo -e "\x1b[31mZZZ\x1b[0m" >/tmp/1
$ cat /tmp/1
ZZZ # красным
$ less -r /tmp/1 # less тоже в курсе
emulek
()

Всем СПАСИБО! проблема решена)

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.