web-dev-qa-db-ja.com

サブプロセスの列と行を設定する方法

現在041までの001,002,003,004 ...などの番号が付けられた一連のスクリプトを実行するスクリプトがありますが、将来的にはさらに多くなります-これらのスクリプト自体は、カーソルコントロールを使用してプログレスバーやその他のステータス情報を印刷し、それぞれtput colstput linesからの端末の幅と高さ。

サブスクリプトを書き直さずに、下部のone行をoverall外部スクリプトのステータス情報用に予約したいと思います。行と列に対するtputの応答を設定する方法があるかどうか興味がありました。

Tmuxがそれを達成するので、方法がなければなりません。環境変数があるかもしれないと思っていましたが、envの実行時にtmuxが行う唯一の変更は、$ TERMをscreenに設定することです。

どんな助けでも大歓迎です

3
donatJ

以下では、行数と列のtputリターンをカスタマイズできます

export LINES=1000
export COLUMNS=1000
2
donatJ

ソースを読むことは決定的ですが、気弱な人にとっては、マニュアルが行く場所です。コマンドラインオプションがない場合、ターミナルデータベースと環境変数を組み合わせることで、スクリプトに必要なものがすべて提供されます。

  • tput マニュアルページには環境変数については触れられていません。
  • ただし、 関連項目 セクションでは、termcapインターフェイス(関数)のマニュアルである curs_termcap(3x) を参照しています。
  • そのページでは、 Formatting Capabilities が関連しており、 curs_terminfo(3x) ページのtputsを指しています。
  • 繰り返しますが( 出力関数 を参照)、環境変数についての明示的な言及はありません。

Enlightenmentを検索するには、 ncurses のマニュアルページを試してみてください。

  • Environment のセクションには、LINESCOLUMNSがリストされています。
  • LINES では、COLUMNSを表示するように指示されています。
  • COLUMNS 詳細情報を提供します:

画面の幅を文字で指定します。ウィンドウ環境で実行されているアプリケーションは、通常、実行されているウィンドウの幅を取得できます。 COLUMNS値も端末の画面サイズも使用できない場合、ncursesは、terminfoデータベースで指定されているサイズを使用します(つまり、 、cols機能)。

さて、この質問では、マニュアルページがより直接的で、tputは出力にtputsを使用し、初期化にもsetuptermを使用すると言っていれば良かったでしょう。時折(この情報が変更ログですぐに利用できる場合)、マニュアルに明示されていないことに誰も気付かないことがあります。たとえば、このアイテムは 2002

_    + modify setupterm() to ensure that it initializes the baudrate, for
      applications such as tput (report by Frank Henigman).
_

スレッドに戻る:

  • Initializationcurs_terminfo(3x)のセクションはsetuptermについて説明しています。
  • _use_env_ が呼び出されていない通常の場合、setuptermは、LINES変数とCOLUMNS変数がターミナルデータベースをオーバーライドできるようにします。値。
  • _use_env_ マニュアルページは、値がオペレーティングシステムから取得される可能性があることをコメントするだけでなく、それを繰り返しています。
  • 繰り返しになりますが、変更ログには、tputがこれを実行する(オペレーティングシステムから値を取得する)と記載されています。たとえば、これは 2007 からです。

    _+ restore a call to obtain screen-size in _nc_setupterm(), which
      is used in tput and other non-screen applications via setupterm()
      (Debian #433357, reported by Florent Bayle, Christian Ohm,
      cf: 20070310).
    _

要約すると、既存のドキュメントはncursesの動作に関するほとんどすべての質問に対する回答を提供しますが、ある程度読む必要があります。

1
Thomas Dickey