Картинка в терминале
Несколько лет назад программа «айТерм2» (iTerm2, терминал для «Мака») обзавелась поддержкой графики в командной строке. Сильной необходимости в ней нет, но иногда это удобно — можно посмотреть картинку на удалённом сервере, не выкачивая её себе.
Вообще уже очень давно существует формат «Сиксел», рождённый в незапамятные времена компанией «ДЭК» (DEC), его даже поддерживают некоторые терминалы, но он значительно сложнее придуманного авторами «айТерма2».
Я это знаю, так как
В общем виде тот и другой форматы представляют собой управляющие последовательности, после которых передаётся закодированная картинка.
Мне тут подумалось, что было бы интересно попробовать вставить внутрь настоящей картинки её закодированную копию, чтобы при попытке вывода её в консоль в виде текста, в терминал попадали управляющие коды и на экран выводился не бинарный мусор, а картинка.
Для этого я нарисовал небольшой ГИФ и вставил закодированную картинку после изображения следующей командой:
cat test.gif \
<(echo -ne "\033[3F\033[J\033]1337;File=inline=1:") \
<(base64 test.gif) \
<(printf "\a")\
> test2.gifЕстественно, так как бинарный код изображения идёт первым, при выводе на экран его так же будет видно, поэтому я добавил другие управляющие конструкции (большинство терминалов их поддерживают), возвращающие курсор на место и вычищающие бинарщину.
В данном случае я сначала двигаю курсор на три строки вверх (столько занимает бинарный мусор на экране), потом произвожу очистку от курсора до конца экрана.
Теперь буду пугать наших системных администраторов картинкой, которую видно сразу и в терминале, при выводе командой cat, и в графическом интерфейсе.
Комментарии 4
1. Повтор:
2. Мне показалось, или на картинке HELP? :D
Это задумывалось как шутка и тест на внимательность :)
Да, я на него натыкался :)