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コマンドを利用する方法も面白いかもしれない。

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