GNU/Linux >> Linux の 問題 >  >> Linux

パッド入りの中央揃えで変数を印刷するにはどうすればよいですか?

$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"

Linux
  1. 間接変数評価を行う方法は?

  2. pthread_t を出力する方法

  3. bash の変数を持つエイリアス

  1. アセンブリNASMで数値を出力するには?

  2. Goでstderrにメッセージを出力するにはどうすればよいですか?

  3. ddを使用してFFでファイルをパディングする方法は?

  1. Linuxコマンドラインツールを使用してJSONを解析してきれいに印刷する方法

  2. C++ / C++11 を使用して現在の時刻 (ミリ秒単位) を出力する方法

  3. psを印刷グループにするにはどうすればよいですか?