コンソール上で文字列をセンターに表示させる

bashのprintfで文字列をセンター寄せしたいということがあったので、備忘で残しておく。
残念ながら、以前調べた際にわかったこととしてbashのprintfの機能として、センター寄せは用意されていないようだということ。

なので、ちょっと野暮ったいけど、以下のようにprintfに渡す際に幅を1/2して出力させることで、真ん中にテキストを出力させることができるようになる。
ターミナルの中央に表示させる場合は、『tput cols』コマンドで幅を取得できるのでサブシェルで取得させるといいだろう。

printf "%*s\n" $(( (幅 + $(printf 文字列 | wc -c)) / 2 )) 文字列
printf "%*s\n" $(( ($(tput cols) + $(printf 文字列 | wc -c)) / 2 )) 文字列 # ターミナルの中央に配置する場合
blacknon@BS-PUB-UBUNTU-01:~$ echo a{01..03} ab{01..03} abc{01..03} abcd{01..03} | xargs -n1 | xargs -I@ bash -c 'printf "%*s\n" $(( (20 + $(printf @ | wc -c)) / 2 )) @'
a01
a02
a03
ab01
ab02
ab03
abc01
abc02
abc03
abcd01
abcd02
abcd03
Sponsored Links

なお、BSD系のOS(Mac OS Xとか)に入っているfmtコマンドの場合、-cオプションを付与することでセンター寄せしての出力ができるようだ。
残念ながらGNU fmtではできないので注意。

コマンド | fmt -c -w 幅

 


Written by blacknon

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

Leave a Comment

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

*