Разноцветное поздравление с НГ в терминале
Вашему вниманию предлагаю интересный bash-скрипт, выводящий в окно терминала цветное поздравление с Новым годом.
Чтобы раскрасить текст, будем использовать управляющие последовательности символов — инструции по выполнению какого-либо действия в shell. Управляющая последовательность обозначается
\e (или \033). Следом за \e идет код, определяющий цвет.
Вдаваться в подробности, какой код за какой цвет отвечает, я не буду. В файле colors находится три переменных, которые нам пригодятся:
#!/bin/bash
red='\e[0;31m' # red
white='\e[1;37m' # white
green='\e[1;32;5m' # green
clear='\e[0m' # no color
Теперь составим само поздравление. Я решил сделать так:
11111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111100111110011100000000011100000000011100000000011100111111001111111
11111111111111001111100111001111100111001111100111001111100111001111110011111111
11111111111110011111001110011111001110011111001110011111001111001111001111111111
11111111111100000000011100000000011100000000111100000000111111000000111111111111
11111111111001111100111001111100111001111111111001111111111111100111111111111111
11111111110011111001110011111001110011111111110011111111111111001111111111111111
11111111100111110011100111110011100111111111100111111111111110011111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111100111111111001110000000011100111111111110011111111111111111111111
11111111111111000111111110011100111111111001111111111100111111111111111111111111
11111111111110011011111100111001111111110011111111111001111111111111111111111111
11111111111100111101111001110000000011100111100011110011111111111111111111111111
11111111111001111110110011100111111111001110000011100111111111111111111111111111
11111111110011111111000111001111111110011001110011001111111111111111111111111111
11111111100111111111001110000000011110000111110000111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111
11100111111001110000000011100000000011100000001111111111111111111111111111111111
11001111110011100111111111001111100111001111001111111111111111111111111111111111
11001111001111001111111110011111001110011110011111111111111111111111111111111111
11000000111110000000011100000000011100000011111111111111111111111111111111111111
11100111111100111111111001111100111001111001111111111111111111111111111111111111
11001111111001111111110011111001110011111001111111111111111111111111111111111111
10011111110000000011100111110011100111111001111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111
Тогда наш скрипт будет заменять 1 на пробел, а 0 на "карандаш", в роли которого выступает #.
А теперь сам скрипт:
#!/bin/bash
# include file with color codes
. colors
# checking for arguments
if [ $# -eq 1 ]
then
fname=$1
else
echo "Incorrect argument"
exit
fi
# clear screen
clear
i=0
while read line
do
if [ $i -lt 9 ] ; then
COLOR1=${red} ; CLEAR=${clear}
elif [ $i -gt 9 -a $i -lt 19 ] ; then
COLOR1=${white} ; CLEAR=${clear}
elif [ $i -gt 19 -a $i -lt 28 ] ; then
COLOR1=${green} ; CLEAR=${clear}
fi
newline=`echo "$line" | tr '10' ' #' `
printf "$COLOR1$newline $CLEAR"
let i++
sleep 0.1
done < $fname
read
Для эффектности добавил очистку экрана перед стартом программы и ожидание 0.1 секунду перед прорисовкой новой строки.
Даем скрипту права на исполнение и запускаем из терминала так: ./script.sh newyear.txt
С Новым 2011 годом вас!



Комментарии: