シェルスクリプトを使用して簡単なコンソールベースのスクリプトを作成しています。これはbashシェルで実行されます シンプルなメニューベースの駆動型ディスプレイがいくつかのオプションを表示します。テキストアラインメントセンター - シェルスクリプト
ここでは、画面サイズに応じてテキストを中央揃えにしたいと考えています。 は、どのように私は、画面の中央にテキストを揃えるか、私に
シェルスクリプトを使用して簡単なコンソールベースのスクリプトを作成しています。これはbashシェルで実行されます シンプルなメニューベースの駆動型ディスプレイがいくつかのオプションを表示します。テキストアラインメントセンター - シェルスクリプト
ここでは、画面サイズに応じてテキストを中央揃えにしたいと考えています。 は、どのように私は、画面の中央にテキストを揃えるか、私に
最後に、私は解決策を見つけた:)
COLUMNS=$(tput cols)
title="Hello world!"
printf "%*s\n" $(((${#title}+$COLUMNS)/2)) "$title"
単純なPerlソリューションアシスしてください:?BSDベースのシステムで
perl -pe '$sp = " " x (($ENV{COLUMNS} - length)/2); s/^/$sp/'
シェルスクリプトで動作しますか? –
見てみてください。 ( 'generate-text | perl ...')、それを引数として使う( 'perl ... text.txt') – choroba
最後に、私はあなたのスクリプトにその行を追加しました。ソリューション: COLUMNS = $(tput cols) title = "Hello world!" printf "%* s \ n" $(($ {#title} + $ COLUMNS)/ 2)) "$ title" –
をMacOSを含むfmt
ユーティリティは、テキストを中央に揃えるために-c
フラグを持っています。
echo $text | fmt -c -w $COLUMNS
残念ながら、GNU fmt
は互換性のない-cフラグとセンタリングのためノー選択肢を持っています。
1行が必要な場合は、コマンドライン引数から入力を受け取ります。 '' 'printf"%* s \ n "$(($(echo $ * | wc -c)+ 80)/ 2 )) "$ *" '' ' は、コマンドライン引数からの入力を受け取り、wcを使用して文字数をカウントし、デフォルトで80文字になります。 – thewisenerd