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

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

001,002,003,004...などの番号が付いた一連のスクリプトを実行するスクリプトがあります。今は041までで、今後さらにスクリプトが追加される予定です。スクリプト自体は、一部のカーソルコントロールを使用して進行状況バーやその他のステータス情報を印刷し、端末の幅と高さはtput colsそれぞれですtput lines

下付き文字を書き換えずに続けておきたいです。一つ結論包括的な外部スクリプトのステータス情報です。行と列に対するtputの応答を設定する方法があるかどうか疑問に思います。

tmuxがこれを実装するので、方法が必要です。私は環境変数があるかもしれないと思いましたが、envを実行したときにtmuxで見ることができる唯一の変更は、$ TERMを画面に設定することです。

どんな助けでも大変感謝します。

答え1

以下を使用すると、tputから返される行と列の数をカスタマイズできます。

export LINES=1000
export COLUMNS=1000

答え2

ソースコードを読むのは大丈夫ですが、心が弱い人にとっては、マニュアルが最善の選択です。コマンドラインオプションがない場合、環境変数と結合されたターミナルデータベースはスクリプトに必要なすべてを提供します。

悟りを探し、試してみることができます呪いマンページ。

  • 環境LINESと がリストされていますCOLUMNS
  • 存在するLINES、ちょうど見てくださいと書かれていますCOLUMNS
  • COLUMNS追加情報を提供する:

画面幅を文字単位で指定します。ウィンドウ環境で実行されるアプリケーションは、通常、実行中のウィンドウの幅を取得できます。COLUMNSこの値と端末の画面サイズの両方が利用できない場合呪いterminfoデータベースで指定されたサイズ(容量など)を使用しますcols

tputこの質問については、マニュアルページがより直接的で出力用ですが、初期化用とtputs言えばsetupterm良いでしょう。時々(この情報が変更ログで簡単に入手可能な場合)、マニュアルにその情報が不明であるという事実には誰も気付いていません。たとえば、このプロジェクトは2002年:

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

トピックに戻る:

  • これ初期化curs_terminfo(3x)説明setupterm、注意事項
  • 一般的な状況ではuse_envまだ呼び出されていないsetuptermためLINESCOLUMNS変数はターミナルデータベース値をオーバーライドできます。
  • これ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の動作に関するほとんどすべての質問に対する答えを提供しますが、読むべきいくつかの点があります。

関連情報