Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: Как раскрасить вывод cowsay и fortunes в терминале?  (Прочитано 1276 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн sotvm

  • Автор темы
  • Новичок
  • *
  • Сообщений: 9
    • Просмотр профиля
    • Фсякая Х-ень для X-периментов
Как раскрасить вывод cowsay и fortunes в терминале?

ссылка на скрин
Умный поймёт,а дураку и так всё равно.

Оффлайн EvangelionDeath

  • Администратор
  • Старожил
  • *
  • Сообщений: 3487
  • Ubuntu 22.04 х64
    • Просмотр профиля
Re: Как раскрасить вывод cowsay и fortunes в терминале?
« Ответ #1 : 26 Сентября 2017, 23:56:42 »
ruby -v
# если нет руби - ставим
sudo gem install lolcat
fortune | cowsay | lolcat
HP Pro 840 G3: Intel i5-6300U, 32GB DDR4 2133MHz, Intel 520, Intel Pro 2500 180GB/Ubuntu 22.04
Dell Latitude 5590: Intel i5-8350U, 16GB DDR4 2400MHz, Intel 620, Samsung 1TB/Ubuntu 22.04

Оффлайн sotvm

  • Автор темы
  • Новичок
  • *
  • Сообщений: 9
    • Просмотр профиля
    • Фсякая Х-ень для X-периментов
Re: Как раскрасить вывод cowsay и fortunes в терминале?
« Ответ #2 : 27 Сентября 2017, 11:32:33 »
ruby -v
# если нет руби - ставим
sudo gem install lolcat
fortune | cowsay | lolcat
хотелось бы
текст fortune выводить в одном,определённом цвете
а псевдографику(картинку) cowsay в другом.
если пишу в ~/.bashrc
fortune | cowsay | lolcat -a -s 1000 -F 3.0001  ;echo " ";sleep 4s ;clear ;
то у меня раскрашивает всё ,
(Нажмите, чтобы показать/скрыть)
#хотел попробовать сделать вот так ,НО тоже не догоняю  ㋛
#сначала всё пишем в файл (иногда бывает нужно скопировать прикол.
fortune | cowsay > /tmp/cowsay;

# НЕ ЗНАЮ КАК ЗДЕСЬ ВЫВЕСТИ ПЕРВЫЕ СТРОКИ ИСКЛЮЧАЯ 20 ПОСЛЕДНИХ ???
# т.е. это текст fortune

#далее выводим последние 20 строк (т.е. сама картинка cowsay без текста fortune )
#+анимация -a -s 500
#+ раскраска  -F 3
#+ пустая строка
#+ждём 4сек и очищаем консоль
tail -n 20  /tmp/cowsay | lolcat -a -s 500 -F 3  ;echo " ";sleep 4s ;clear ;


P.S.
РЕШИЛ вот так
  :uglystupid2:  Спасибо EvangelionDeath,

в ~/.bashrc пишем :
if [ -x /usr/bin/mint-fortune ]; then
fortune | cowsay  >  /tmp/cowsay ;
NUMS=$(cat /tmp/cowsay | wc -l)
let HEAD=$NUMS-20
head -n $HEAD /tmp/cowsay | lolcat -F 0.0033  ;
tail -n 20  /tmp/cowsay | lolcat -a -s 500 -F 3 ;echo " ";sleep 4s ;clear ;
fi



ps.
можно ещё проще (выделить всё исключая последние 20 строк
head -n -20но если использовать рандомные картинки(я использую одну),то у них высота в строках разная,
поэтому можно/нужно так :в ~/.bashrc
if [ -x /usr/bin/mint-fortune ]; then
fortune | cowsay > /tmp/cowsay ;
grep -e '----------$' /tmp/cowsay -B50 -A0 | lolcat -F 0.0033 ;# грепаем по последним символам ,последней строки fortune ,т.е по рамке.
grep -e '----------$' /tmp/cowsay -B0 -A50 | | lolcat -a -s 500 -F 3 ;echo " " ; sleep 4s ; clear ;
fi


а можно ещё прикольнее
ставим xcowsay
sudo apt-install xcowsay
создаём файл конфига ~/.config/xcowsay ,в него пишем (читаем man xcowsay)
at_x = 100 # координаты вывода изображения в пикселях от левого верхнего угла
at_y = 160 #
alt_image=.icons/douel_head.png # так можно задать путь к своей картинке (не понимает путь с $HOME и ~/)
display_time = 4000 #время отображения в мс.
собствено кидаем картинку по указанному раее пути (у меня это ~/.icons/douel_head.png )
в ~/.bashrc добавил/изменил строки
if [ -x /usr/bin/mint-fortune ]; then
     fortune | xcowsay
fi
в итоге имеем вот такую говорящюю голову  ;D



« Последнее редактирование: 28 Сентября 2017, 05:41:32 от sotvm »
Умный поймёт,а дураку и так всё равно.

Оффлайн Haron Prime

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 11313
  • Нетолерантный социопат
    • Просмотр профиля
Re: Как раскрасить вывод cowsay и fortunes в терминале?
« Ответ #3 : 27 Сентября 2017, 11:40:55 »
если есть желание и минимальные знания регулярок, то можно установить grc и написать конфиг-файл для раскрашивания вывода этой утилиты
потом прописать в ~/.bashrc что-то типа
alias progname='grc --colour=auto progname'особых сложностей быть не должно

P.S> искаропки там уже есть два десятка конфигов для раскрашивания вывода различных команд
можно посмотреть, как там это реализовано

к примеру, конфиг для раскрашивания вывода blkid
# Blk
regexp=^(/dev/)(.+):\s
colours=default,green,bright_green
======
# Blk mapper
regexp=^/dev/(mapper/)(.+):\s
colours=unchanged,underline green,bright_green
======
# UUID
regexp=\sUUID="([^"]+)
colours=default,blue
======
# TYPE
regexp=TYPE="([^"]+)
colours=default,cyan
======
# LABEL
regexp=LABEL="([^"]+)
colours=default,bright_cyan
======
# PARTUUID
regexp=PARTUUID="([^"]+)
colours=default,magenta

« Последнее редактирование: 27 Сентября 2017, 11:51:08 от Haron Prime »

Оффлайн EvangelionDeath

  • Администратор
  • Старожил
  • *
  • Сообщений: 3487
  • Ubuntu 22.04 х64
    • Просмотр профиля
Re: Как раскрасить вывод cowsay и fortunes в терминале?
« Ответ #4 : 27 Сентября 2017, 12:22:49 »
NUMS=$(cat /tmp/cowsay | wc -l)
let HEAD=$NUMS-20
head -n $HEAD /tmp/cowsay
tail -n 20 /tmp/cowsay | lolcat
HP Pro 840 G3: Intel i5-6300U, 32GB DDR4 2133MHz, Intel 520, Intel Pro 2500 180GB/Ubuntu 22.04
Dell Latitude 5590: Intel i5-8350U, 16GB DDR4 2400MHz, Intel 620, Samsung 1TB/Ubuntu 22.04

Оффлайн sotvm

  • Автор темы
  • Новичок
  • *
  • Сообщений: 9
    • Просмотр профиля
    • Фсякая Х-ень для X-периментов
Re: Как раскрасить вывод cowsay и fortunes в терминале?
« Ответ #5 : 27 Сентября 2017, 16:31:42 »
NUMS=$(cat /tmp/cowsay | wc -l)
let HEAD=$NUMS-20
head -n $HEAD /tmp/cowsay
tail -n 20 /tmp/cowsay | lolcat
Спасибо
Умный поймёт,а дураку и так всё равно.

Оффлайн Zedokko

  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Re: Как раскрасить вывод cowsay и fortunes в терминале?
« Ответ #6 : 27 Сентября 2017, 17:05:21 »
Удачно темку создали. Вопрос тоже по cowsay, только не про цвет и строки, а про выравнивание. Каким образом можно организовать выравнивание в окне терминала по центру? Я себе алгоритм представляю, но реализацию слабо. Считаем длинну самой широкой строки, затем из количества местосимволов окна терминала вычитаем полученную длинну и делим все на два. Получаем кол-во пробелов, которые нужно вставить перед выводом. Но при этом остается вопрос с ресайзом окна.

Оффлайн EvangelionDeath

  • Администратор
  • Старожил
  • *
  • Сообщений: 3487
  • Ubuntu 22.04 х64
    • Просмотр профиля
Re: Как раскрасить вывод cowsay и fortunes в терминале?
« Ответ #7 : 27 Сентября 2017, 18:05:57 »
Удачно темку создали. Вопрос тоже по cowsay, только не про цвет и строки, а про выравнивание. Каким образом можно организовать выравнивание в окне терминала по центру? Я себе алгоритм представляю, но реализацию слабо. Считаем длинну самой широкой строки, затем из количества местосимволов окна терминала вычитаем полученную длинну и делим все на два. Получаем кол-во пробелов, которые нужно вставить перед выводом. Но при этом остается вопрос с ресайзом окна.
Вообще-то cowsay - программа на руби. Так что выравнивание надо писать на руби)
На Python:
Код: (python) [Выделить]
#!/usr/bin/python3                                                                                                                                                                                                             
import shutil
import sys

width = shutil.get_terminal_size().columns

maxwidth = 0
lines = []

for line in sys.stdin :
    line = line.rstrip("\n")
    maxwidth = len(line) if len(line) > maxwidth else maxwidth
    lines = lines + [line]

sprintf="%-"+str(maxwidth)+"s"

for line in lines :
    buf = sprintf % (line)
    print(buf.center(width))
Ну или примерно так)
Даем права на испольнение и пробуем
запуск
fortune | cowsay | <наш python файл>
« Последнее редактирование: 27 Сентября 2017, 18:56:34 от EvangelionDeath »
HP Pro 840 G3: Intel i5-6300U, 32GB DDR4 2133MHz, Intel 520, Intel Pro 2500 180GB/Ubuntu 22.04
Dell Latitude 5590: Intel i5-8350U, 16GB DDR4 2400MHz, Intel 620, Samsung 1TB/Ubuntu 22.04

Оффлайн soarin

  • Старожил
  • *
  • Сообщений: 1850
  • ubuntu 20.04
    • Просмотр профиля
Re: Как раскрасить вывод cowsay и fortunes в терминале?
« Ответ #8 : 27 Сентября 2017, 18:24:39 »
Можешь сразу использовать ponysay - они более цветные

Оффлайн EvangelionDeath

  • Администратор
  • Старожил
  • *
  • Сообщений: 3487
  • Ubuntu 22.04 х64
    • Просмотр профиля
Re: Как раскрасить вывод cowsay и fortunes в терминале?
« Ответ #9 : 27 Сентября 2017, 18:52:28 »
Можешь сразу использовать ponysay - они более цветные
А можно и самому разукрасить темплейты для cowsay
HP Pro 840 G3: Intel i5-6300U, 32GB DDR4 2133MHz, Intel 520, Intel Pro 2500 180GB/Ubuntu 22.04
Dell Latitude 5590: Intel i5-8350U, 16GB DDR4 2400MHz, Intel 620, Samsung 1TB/Ubuntu 22.04

Оффлайн ReNzRv

  • Старожил
  • *
  • Сообщений: 2648
    • Просмотр профиля
Re: Как раскрасить вывод cowsay и fortunes в терминале?
« Ответ #10 : 27 Сентября 2017, 22:04:12 »
Например русские буквы зеленым:
вывод | sed -r 's/([А-Яа-я]+)/'$(echo -en '\033[1;32m')'\1'$(echo -en '\033[0m')'/g'
(Нажмите, чтобы показать/скрыть)

 

Страница сгенерирована за 0.285 секунд. Запросов: 23.