普段利用する際には問題ないのだが、本当にごくたまに、ターミナル上で長い行がいる場合、折り返さずに切り落として表示していほしいことがある。(今回の場合、 自分でも何をトチ狂ったのかbashファンクションでインクリメンタルサーチを作ってた ので、そこで困ったという背景)

表示される内容がASCIIだけであれば、cutなどでターミナル幅を超える文字数を削除するようにすればいいのだが、UTF-8とかが含まれているとそれも難しくなってくる。 さて、どうすればいいのだろう…?と調べていたところ、どうやら DECエスケープシーケンス を利用してターミナル側の行末オートワープ機能を無効化してやればいいようだ(こんなオプションがあったのか…)。

printf '\033[?7l' # 行末オートワープ機能(折返し機能)の無効化
command ...
printf '\033[?7h' # 行末オートワープ機能(折返し機能)の有効化

これで、ターミナルの幅を超える内容は折り返されずに非表示になる。
(あまり役に立つ機会は多くないだろうけど)


参考