Bash, efektowne drukowanie tekstu na ekranie.
Autor: lukas, czwartek 24 Listopad 2011
komentarze 0

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






