シェルスクリプトを使用して単純なコンソールベースのスクリプトを作成しています。これは私のbashシェルで実行されます。単純なメニューベースの駆動型ディスプレイで、いくつかのオプションセットが表示されます。
今、画面サイズに応じてテキストを中央揃えにしたいと考えています。テキストを画面の中央に揃えるにはどうすればよいですか?助けてください
最後に私は解決策を見つけました:)
COLUMNS=$(tput cols)
title="Hello world!"
printf "%*s\n" $(((${#title}+$COLUMNS)/2)) "$title"
MacOS を含む BSD ベースのシステムでは、fmt
ユーティリティには-c
テキストを中央に配置するフラグがあります。
echo $text | fmt -c -w $COLUMNS
残念ながら、GNUfmt
には互換性のない -c フラグがあり、センタリングの代替手段はありません。
シンプルな Perl ソリューション:
perl -pe '$sp = " " x (($ENV{COLUMNS} - length) / 2); s/^/$sp/'