LoginSignup
6
0

ターミナルに雪を降らせたい。

Last updated at Posted at 2023-12-01

ジョークコマンドって面白い

下記のLinuxのジョークコマンド紹介を見て、面白いから私も作ってみようと思いました。
雪を降らせるコマンドがあったので、私なりにbashで似たようなスクリプトを書いてみようと思います。

他にも、スタウォーズの映画を見れるコマンドや電車が走るコマンドがあって、結構面白いです。
仕事の合間に見ると、いい暇つぶしになりますよ。

紹介されてた雪降らせるコマンド
ruby -e 'C=`stty size`.scan(/\d+/)[1].to_i;S=["2743".to_i(16)].pack("U*");a={};puts "\033[2J";loop{a[rand(C)]=0;a.each{|x,o|;a[x]+=1;print "\033[#{o};#{x}H \033[#{a[x]};#{x}H#{S} \033[0;0H"};$stdout.flush;sleep 0.1}'

bashで頑張って、雪降らせる。

下記スクリプトを作成致しました。
上で紹介されてたrubyコマンド程は上手く雪を降らせる事が出来なかったですが、雪降ってるなーとは分かるので、ちょっと達成感。

時間が許せば、もう少し工夫して書きたかったです。
改行を変数に格納出来なかったりで苦戦しました。大した事してないんですけどね。

降らせようとした結果
#!/bin/bash

col=`tput cols`
line=`tput lines`
array=()

clear

for ((i=1; i<$line; i++)); do

        newline=$newline"\n"

done

while true

do

        for ((i=0; i<$line; i++)); do

                for ((j=0; j<=$i; j++)); do

                        rand=`echo $(($RANDOM % $col))`
                        array+=($rand)

                        if [ $j -ge 0 ] ; then
                        
                                lf=$'\n'
                                blank=`yes " " | head -n ${array[$(($i-$j))]} | tr -d '\n'`
                                output=""$output" "$lf" "$blank"*"
                        fi
                done

                echo "$output" ; sleep 0.3 ; echo -e $newline ; clear
                output=""

        done

done

path通して、コマンド叩くと雪が降りますよ。
shで降らしても、OKです。

リンク
[root@localhost ~]# ll /usr/local/bin/snow_fall
-rwxrwxrwx 1 root root 749 Nov 30 20:22 /usr/local/bin/snow_fall
[root@localhost ~]# snow_fall

image.png

書くのは楽しかったですが、仕事中に雪を降らせると少し悲しい気持ちになりました。
雪降らせてる場合じゃないと、ふと感じてしまったんですよね。
仕事に戻る事とします。

一瞬でも、癒しをくれてありがとう、、雪。

6
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
0