Esto que les voy a mostrar no es mas que una curiosidad y un poco de diversion.
Un pequeño script que hara caer nieve en la consola de linux.
Los pasos a seguir son:
- Crear un archivo llamado ‘nieve’ con el contenido que les muestro
- En la consola escribir chmod +x nieve
- Y luego ejecutar asi: sh nieve
Aqui el script
#!/bin/bash LINES=$(tput lines) COLUMNS=$(tput cols) declare -A snowflakes declare -A lastflakes clear function move_flake() { i=”$1″ if [ "${snowflakes[$i]}” = “” ] || [ "${snowflakes[$i]}” = “$LINES” ]; then snowflakes[$i]=0 else if [ "${lastflakes[$i]}” != “” ]; then printf “\033[%s;%sH \033[1;1H " ${lastflakes[$i]} $i fi fi printf “\033[%s;%sH❄\033[1;1H" ${snowflakes[$i]} $i lastflakes[$i]=${snowflakes[$i]} snowflakes[$i]=$((${snowflakes[$i]}+1)) } while : do i=$(($RANDOM % $COLUMNS)) move_flake $i for x in “${!lastflakes[@]}” do move_flake “$x” done sleep 0.1 done
Si no les llega a funcionar es casi seguro que el problema son las comillas. Escribanlas a mano a todas.
Curioso verdad?
me marca el siguiente error a la hora de correr el archivo
nieve: 6: declare: not foundnieve: 7: declare: not foundnieve: 11: Syntax error: «(» unexpected
simplemente copie y pegue
me dice lo mismo :S
nieve: 6: declare: not foundnieve: 7: declare: not foundnieve: 11: Syntax error: «(» unexpected
bueno no pude resolver el problema pero vi en otra página {http://www.climagic.org/coolstuff/let-it-snow.html} que había un script para pegarlo en la consola directamente:
clear;while :;do echo $LINES $COLUMNS $(($RANDOM%$COLUMNS));sleep 0.1;done|gawk ‘{a[$3]=0;for(x in a) {o=a[x];a[x]=a[x]+1;printf «33[%s;%sH «,o,x;printf «33[%s;%sH*33[0;0H»,a[x],x;}}’
en el cual se pone como requisito instalar gawk:
sudo apt-get install gawk
el cual probe y funcionó :)
Luego de cambiarle las comillas (buscándolas) me di cuenta que hay tres diferentes “ ” y ″. Ya cambiadas, en Ubuntu la instrucción $sh nieve no funcionó (nieve: 11: Syntax error: «(» unexpected). Pero ya que se le dio que fuera ejecutable con chmod, probé con $./nieve y listo. Muy curioso. Lo único malo fue que se generaron unas líneas un tanto aleatorias. Por otro lado, decir para cualquier novato aventurero (como yo), que una forma de pararlo es Ctrl-c. Y para limpiar la terminal con $clear
Todos los errores que han tenido son por las comillas. Deben escribirlas a mano
Interesante! Otro script que puedo usar de screensaver para la consola :)
Saludos!
si alguien quiere el script ya con las comillas reemplazadas:
#!/bin/bashLINES=$(tput lines)COLUMNS=$(tput cols)declare -A snowflakesdeclare -A lastflakesclearfunction move_flake () {i=»$1″if [ «${snowflakes[$i]}»= «» ] || [ «${snowflakes[$i]}» = «$LINES» ]; thensnowflakes[$i]=0elseif [ «${lastflakes[$i]}» != «» ]; thenprintf «33[%s;%sH 33[1;1H » ${lastflakes[$i]} $ififiprintf «33[%s;%sH❄33[1;1H» ${snowflakes[$i]} $ilastflakes[$i]=${snowflakes[$i]}snowflakes[$i]=$((${snowflakes[$i]}+1))}while :doi=$(($RANDOM % $COLUMNS))move_flake $ifor x in «${!lastflakes[@]}»domove_flake «$x»donesleep 0.1done
#!/bin/bash
#Les comparto el mio ya no hay que corregir nada
LINES=$(tput lines)
COLUMNS=$(tput cols)
declare -A snowflakes
declare -A lastflakes
clear
function move_flake() {
i=»$1″
if [ «${snowflakes[$i]}» = «» ] || [ «${snowflakes[$i]}» = «$LINES» ]; then
snowflakes[$i]=0
else
if [ «${lastflakes[$i]}» != «» ]; then
printf «33[%s;%sH 33[1;1H » ${lastflakes[$i]} $i
fi
fi
printf «33[%s;%sH❄33[1;1H» ${snowflakes[$i]} $i
lastflakes[$i]=${snowflakes[$i]}
snowflakes[$i]=$((${snowflakes[$i]}+1))
}
while :
do
i=$(($RANDOM % $COLUMNS))
move_flake $i
for x in «${!lastflakes[@]}»
do
move_flake «$x»
done
sleep 0.1
done
Muchas gracias, funciona bien