$myvar
を印刷するにはどうすればよいですか ターミナルの中央に配置され、両側に=
になるようにパディングされます 画面の端まで?
承認された回答:
スタックエクスチェンジネットワークで、この実用的な答えにたどり着くのに役立つ2つの情報を見つけました:
- https://stackoverflow.com/q/263890/5419599
- https://stackoverflow.com/q/4409399/5419599
ただし、この回答のコードは私自身のものです。
より詳細な情報が必要な場合は、編集履歴を参照してください。私はすべてのくだらないものと「途中のステップ」を編集しました。
最善の方法は次のとおりだと思います:
center() {
termwidth="$(tput cols)"
padding="$(printf '%0.1s' ={1..500})"
printf '%*.*s %s %*.*sn' 0 "$(((termwidth-2-${#1})/2))" "$padding" "$1" 0 "$(((termwidth-1-${#1})/2))" "$padding"
}
center "Something I want to print"
幅80列の端末での出力:
========================== Something I want to print ===========================
パディングは単一の文字である必要はないことに注意してください。実際、padding
変数はそうではありません。上記のコードでは500文字の長さです。 padding
だけを変更することで、他の形式のパディングを使用できます。 行:
padding="$(printf '%0.2s' ^v{1..500})"
結果:
^v^v^v^v^v^v^v^v^v^v^v^v^v Something I want to print ^v^v^v^v^v^v^v^v^v^v^v^v^v^
もう1つの便利な使用法は次のとおりです。
clear && center "This is my header"