シェル芸でファイル読み込み時に文字を1文字づつゆっくりターミナル上に表示させる

LinuxやOS Xでファイルの中身を表示する際、catなどで開くと一瞬で中身を表示してくれるのだが、これを1文字づつゆっくり表示させることができないかと思いやってみた。
意外と簡単にできるようだ。ここでは、例としてtest1.txtというファイルに対して処理を行っている。

無難にwhileとreadを組み合わせてやる場合、以下のようにコマンドを実行する。

cat test1.txt | while IFS= read -rN1 c; do printf "$c";sleep 0.1;done
while IFS= read -rN1 c; do printf "$c";sleep 0.1;done < test1.txt

もしくはちょっと長くなるのだが、scriptreplayコマンドを利用する方法も面白いかもしれない。

Sponsored Links

scriptreplay -t <(yes 0.1 1 | head -$(wc -m test1.txt | awk '{print $1}')) <(cat <(echo '') test1.txt)
scriptreplay -t <(yes 0.1 1) <(cat <(echo '') test1.txt) 2> /dev/null

 


Written by blacknon

インフラ系のSE。一時期はプログラマ。 仮想化とオープンソースに興味あり。一日中寝てたい今日このごろ。 スペインとかで働きたいなぁ…(シエスタがあるので)

Leave a Comment

メールアドレスが公開されることはありません。

*