コマンド出力を右に移動

コマンド出力を右に移動

.bashrcログイン端末に役立つ情報を提供するためにファイルを作成しており、calコマンド(良いコマンド)を実行するように指示しているとします。.bashrc「ウェルカムメッセージ」の残りの形式と一致するように、結果カレンダーを右に移動するにはどうすればよいですか?

答え1

cal | sed 's/^/     /'

説明する

  • cal |:calの出力をパイプで接続します...
  • sed 's/^/ /'sed は行の先頭を見つけて^空白に置き換えます。ここでは、希望のフォーマットに合わせてスペースの数を変更できます。

編集する

その日のハイライトを維持するには、calパイプラインに「カラー」(ハイライト)を出力するように指示する必要があります。 ~からman cal

   --color [when]
          Colorize output.  The when can be never, auto, or always.  Never will turn off coloriz‐
          ing  in  all  situations.  Auto is default, and it will make colorizing to be in use if
          output is done to terminal.  Always will allow colors to be outputed when  cal  outputs
          to pipe, or is called from a script.

マニュアルに誤字があるようです。=これを機能させるにはタイプミスが必要です。だから最後のコマンドは

cal --color=always | sed 's/^/     /'

答え2

cal | nl -bn

nl...番号のない入力行を常に追加するインデント量と同じにインデントするため、これは機能します。デフォルトでは、nl入力の-h先頭または-f末尾に番号が付けられず、-bボディ行にのみ番号が付けられます。n本文行に番号を付けないように指示すると、-bまったく番号が付けられず、各入力行にインデントのみが挿入されます。

インデントのサイズを変更するには、-widthスイッチとセパレータスイッチを使用します。-s


cal; cal | nl -bn

    December 2015   
Su Mo Tu We Th Fr Sa
       1  2  3  4  5 
 6  7  8  9 10 11 12 
13 14 15 16 17 18 19 
20 21 22 23 24 25 26 
27 28 29 30 31       

           December 2015   
       Su Mo Tu We Th Fr Sa
              1  2  3  4  5 
        6  7  8  9 10 11 12 
       13 14 15 16 17 18 19 
       20 21 22 23 24 25 26 
       27 28 29 30 31       

さらに:

cal | pr -to[num]

...どこ[num]各行の先頭に挿入するスペースの数。pr通常、1行に66行を印刷します。ページ-tヘッダー/フッターの挿入を省略し、入力内容を出力に印刷するように指示します。次に、オフセットマージンスイッチを使用して、-o必要な数のスペースを挿入します。[num]各出力ラインの始めに:

cal; cal | pr -to10

    December 2015   
Su Mo Tu We Th Fr Sa
       1  2  3  4  5 
 6  7  8  9 10 11 12 
13 14 15 16 17 18 19 
20 21 22 23 24 25 26 
27 28 29 30 31       

              December 2015   
          Su Mo Tu We Th Fr Sa
                 1  2  3  4  5 
           6  7  8  9 10 11 12 
          13 14 15 16 17 18 19 
          20 21 22 23 24 25 26 
          27 28 29 30 31       

答え3

そしてpaste

cal | paste /dev/null -

pasteファイル行を間にタブ文字で貼り付けます。ここでは、パイプを通して渡された出力であるstdin()/dev/nullと一緒に空のファイル()を貼り付けます。paste-cal

答え4

以下は使用例ですex

ex +"%norm 20I " +%p -scq! <(cal)

20希望のスペース数に変更します。使用"%norm 20I "- を交換して多くのスペースを繰り返すよりも効率的です"%s/^/ /"

関連情報