Skip to the content.

この記事はペパボアドベントカレンダーの記事の1つになっているはずです。 他のみんなの記事が見たい人はこちら リンク

キャリッジリターンってしってる?

エンジニアなら標準出力にいろんなデバックログ吐いたりとかそういう奴やったことあると思います。
だけどもキャリッジリターンってちょっとこだわったプログラムのときにしか使わなかったりする奴でちょっとレア。
実態としては \r で表されることが多いんだけど、標準出力にいろいろ出した後、カーソルを行頭まで持ってきてくれる。
んで、そのまま次の出力をすると上書きをされていくというわけ。

便利なキャリッジリターンなんだけど、ちょっと油断すると上書き漏れた文字が残ったりとかしちゃうのは注意だなあって思うな。
たまに画面めいいっぱい使うCLIツールがバグると、表示が残ったままプロンプトが表示されて・・・ってのはみんな経験あるはず。

キャリッジリターンの由来

タイプライターで一行打ち込んだ後で紙を固定するシリンダー(キャリッジ)を次の行の先頭にタイプできるように戻し(リターン)改行する機構(またはその機構を操作するレバー)を「キャリッジ・リターン」と呼んだ wikipedia

もともとはタイプライターで次の行を打てるようにするために行頭に打鍵位置を戻す機構があったみたい。んで、それをキャリッジリターンって呼んでたんだなあ・・・。

キャリッジリターン使ってみたよ

せっかくキャリッジリターンの話をしたのでついでにクリスマスっぽく、クリスマスツリーのアスキーアートが動くコードを書いてみた(ls的な奴)。
複数行の出力を上書きするときはキャリッジリターンだけじゃ足りなくて、カーソル位置を上に上げていく必要がある。
カーソル位置を上に上げる制御文字は \033[nA (nは行数)で表せるので、これを使ってキャリッジリターンをしつつ行を戻していく。

コードは多分 リポジトリにおいておくと思います
たまにはこういうくだらないコード書いてみるのも楽しいなって思いました。
クリスマスツリー

クリスマス

今年はクリスマスが土日でみんな予定を立てている雰囲気を感じてます。賑やかな街の喧騒も風物詩だなと思いながら、自分もまたその景色の一部となっているんだなあとしみじみ思う、今年のアドベントカレンダー記事でした。