7

ターミナル エミュレータ ウィンドウで株価チャートを ASCII アートとして表示するスクリプトを作成しています。私は通常、OSX/Terminal.app を使用しますが、Linux ベースのソリューションは許容可能な代替手段です。

私のスクリプトには現在、画面の幅と高さ (これもピクセルではなく CHARACTERS で測定されます) のコマンドライン引数があり、デフォルトは私自身の発明の環境変数によって決定されます。これらのスクリプトで現在のウィンドウのサイズ (IN CHARACTERS) を判断し、それをデフォルトとして使用したいと考えています。私の 17 インチ Macbook Pro の大きなウィンドウの典型的なサイズは 200 x 68 かもしれません。

これは perl スクリプトですが、他の言語で解決策を知っている場合は教えてください。

ティア。
ケン

4

3 に答える 3

8

これを行う通常の方法はtput linesandtput colsです。これは、次の順序でクエリを実行します。

  • $LINESおよび$COLUMNS環境変数。
  • termiosウィンドウのサイズを変更するときに端末エミュレーターによって設定される設定。
  • terminfoによって識別される説明$TERM
于 2011-04-22T19:55:43.923 に答える
2

C からは、 のシステム コールにTIOCGWINSZオプションを使用します。ioctl/dev/tty

これはTerm::ReadKeyモジュールによって公開されます - from man perlfaq8:

画面サイズを取得するにはどうすればよいですか?

Term::ReadKeyモジュールが CPAN からインストールされている場合は、それを使用して幅と高さを文字単位とピクセル単位で取得できます。

use Term::ReadKey;
($wchar, $hchar, $wpixels, $hpixels) = GetTerminalSize();
于 2011-04-22T19:58:04.877 に答える
1

対話的に実行すると、bash は と を定義$LINES$COLUMNSます。それ以外の場合は、curses/ncurses を使用して端末の次元を取得します。

于 2011-04-22T19:54:34.570 に答える