Bash, efektowne drukowanie tekstu na ekranie.

Autor: lukas, czwartek 24 Listopad 2011 ciekawe programowanie programy
komentarze 0

bash
Pamiętacie pierwszą lekcję „Włatcy Móch”? Odcinek, w którym Czesław wita nas słowami „Dzieńdobry! Nazywam sie Czesio i opowiem wam bajke…”? Efekt drukowanych znaków spotkać można również w filmach wojennych, sci-fi, produkcjach gdzie wykorzystuje się techniki komputerowe. Pomyślałem, że pomęczę moje szare komórki i napiszę kilka linijek kodu, który da podobny efekt. Stworzyłem dwa programy powłoki. Jeden wyświetla podstawowe informacje o systemie i użytkowniku, drugi czyta wybrany tekst (można wczytać własny) w oknie systemowego terminala.

Program powłoki SysInfo

#!/bin/bash
 
for INFO in SYS_NAME DISTR_NAME SYS_VER FULL_NAME HOSTNAME USER HOME
do
 
 case $INFO in
 
 SYS_NAME)
	INFO='System operacyjny:'
	OS=$( uname )
	;;
 DISTR_NAME)
	INFO='Nazwa dystrybucji:'
	OS=$( lsb_release -si )
	;;
 SYS_VER)
	INFO='Wersja:'
	OS=$( lsb_release -sr )
	;;
 FULL_NAME)
	INFO='Pełna nazwa:'
	OS=$( lsb_release -sd )
	;;
 HOSTNAME)
	INFO='Nazwa komputera w sieci:'
	OS=$( hostname )
	;;
 USER)
	INFO='Zalogowany użytkownik:'
	OS=$( echo $USER )
	;;
 HOME)
	INFO='Katalog użytkownika'
	OS=$( echo $USER: $HOME )
	;;
 
 esac
 
 for TXT in $( echo $INFO | tr -s '[ ]' '[/]' | sed -e 's/[a-x A-X 0-9]/ &/g' )
 do
	echo -e -n "\E[32m$TXT\E[0m" | tr '/' ' '
	sleep 0.06
 done
 
 echo -e "\E[33m $OS\E[0m"
done
sleep 1

Program powłoki ReadText

#!/bin/bash
 
while true
do
 
 echo	-e '\n|1| Litwo Ojczyzno.'
 echo	   '|2| Stanisław Lem.'
 echo	-e '|3| Albert Einstein.\n'
 echo	-e '|q| Exit.\n'
 
 read -p 'Wybierz treść do przeczytania: ' wybor
 
 case $wybor in
 
   '1') TXT='Litwo Ojczyzno'
    ;;
   '2') TXT='Stanisław Lem'
    ;;
   '3') TXT='Albert Einstein'
    ;; 
   q|Q) exit 0
    ;;
   *) TXT=$( echo "$wybor" )
    ;;
 
 esac
 
 cat "$TXT" 2> /dev/null | tr -s '[ ]' '[/]' | sed -e 's/[a-x A-X 0-9]/ &/g' | \
 while read line
 do
 
	for text in $line
	do
		echo -n "$text" | tr '/' ' '
		sleep 0.08
	done
 
 echo ''
 done
 
done

Miłej zabawy ;) Dwonload

Zostaw Komentarz