Dlinyj (dlinyj) wrote,
Dlinyj
dlinyj

Categories:

Делаем скриптовую пасхалку на ESC-последовательностях

Вот читаю курс по программированию, а там как раз работа с консолью. Ну чем не применить свои знания на практике. Тут как раз выпала оказия: дал я один свой агрегат на фестиваль СС, а Линукс. Там надо было чуток подконфигурить, и чел (не буду палить имя) должен поковыряться потом в конфигах. Надо запускать скрипт. Решил я этим скриптом привет передать данному камраду, с юморком. Запускаешь скрипт "взрослый", а там пасхалка. Поскольку есть шанс, что данный псот прочтётся раньше запуска скрипта, я не буду раскрывать всех карт, а покажу свой вариант.




Для начала надо набить красивый текст. Можно воспользоваться готовой утилитой FIGlet, которая конвертирует текст в красивый аски текст, например вот так:

$ figlet HELLO DLINYJ 
 _   _ _____ _     _     ___    ____  _     ___ _   ___   __  _ 
| | | | ____| |   | |   / _ \  |  _ \| |   |_ _| \ | \ \ / / | |
| |_| |  _| | |   | |  | | | | | | | | |    | ||  \| |\ V /  | |
|  _  | |___| |___| |__| |_| | | |_| | |___ | || |\  | | | |_| |
|_| |_|_____|_____|_____\___/  |____/|_____|___|_| \_| |_|\___/ 



Но что-то результат мне не очень понравился. И я воспользовался сайтом.
Чувачка с тролфейсом рисовал сам, конечно же тоже нагуглил. Нашёл вот тут. Все конвертеры картинок в ASCII оказались... Не могу передать качество навоза.

Набросал текстовый файл, получилось так:



Осталось раскрасить сие дело! Но как? Да очень просто. Есть такой ништяк для управления терминалами, как ESC-последовательности. Все помнят BBS? Вот они ими и раскрашивались, с тех пор ничего не поменялось. Ностальгируем, плачем и читаем маны . В результате в начале файла у меня стала красоваться следующая последовательность (не надо боятся, что всё поплыло, она не влияет на общий результат):

\e[1m\e[41m\e[32m      ___          //и тут дальше часть надписи



Перевожу с ESC-последовательности на русский: сделать жирным (не во всех терминалах работает), подложку красным, текст зелёным. После надписи надо сбросить атрибуты текста, и задать новые. Плюс, чтобы краска "ровно" легла, без лесенок, надо сделать перенос каретки. В результате вторая последовательность будет такой (да, часть тыквы тролфейса):

\e[0m\n\e[103m\e[30m                    ░░░░░░▄▄▄▄▀▀▀▀▀▀▀▀▄▄▄▄▄▄▄



Перевожу: Сбрасываем атрибуты текста, переводим каретку, делаем фон ярко-жёлтым (не во всех терминалах будет работать), текст делаем чёрным (по умолчанию у меня белый).
В самом конце документа надо тоже сбросить атрибуты строчкой

\e[0m\n


При чём сделать надо обязательно с переводом каретки от картинки, а то будет лесенка цвета. В результате получается такой документ.

Дальше дело техники его вывести на экран. Выводится командой

echo -e "$(cat dlinyj)"



Если обзовёте как-то иначе, чем "dlinyj", то вообще не догадаешься что там и зачем. Дальше эту команду можно вставить в любой нужный bash-скрипт. Результ в заходнике.

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

Не так эффектно выглядит...
Tags: asciiart, Прикол, хулиганство
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 13 comments