スポンサーリンク

WINDOW(1) FreeBSD 一般コマンドマニュアル WINDOW(1)

名称

window − ウィンドウ環境を実現します

書式

window [−t] [−f] [−d] [−e escape-char] [−c command]

解説

window ユーティリティは、 ASCII 端末上でのウィンドウ環境を実装したもので す。

ウィンドウとは物理的な端末スクリーンの中の部分的な長方形部分を指し、ここ をプロセスの集合が利用します。その大きさと位置はユーザがいつでも変更でき ます。プロセスは通常に端末と通信するのと同じ方法、つまり標準入力、標準出 力、標準エラー出力を通して、そのウィンドウと通信します。ウィンドウプログ ラムはそのウィンドウに対する入力と出力のリダイレクトに関する細かい処理を 行います。どんな時でも、 一つのウィンドウだけがキーボードからの入力を受け ることが出来ますが、全てのウィンドウが同時にディスプレイへの出力を送るこ とが可能です。

window が立ち上がった時、ユーザのホームディレクトリにある .windowrc 内の コマンドが実行されます (以下のロングコマンドを参照)。もしこのファイルが存 在しない時は、デフォルトとして同じ大きさのウィンドウが二つ作成されます。

コマンドラインオプションには以下のものがあります。

       −t

terse モードをオンにします (以下の terse コマンドを参照)。

−f
高速モードです。スタートアップ動作は何もしません。

−d
.windowrc
を無視する代わりに二つのデフォルトウィンドウを作成 します。

−e escape-char
エスケープ文字を escape-char にします。 escape-char は文字一 つか、もしくは ^X (control−X ) のような形式です (X はどんな文 字でも構いません)。

−c command
command
をロングコマンド (以下参照) として最初に実行します。

ウィンドウはオーバラップ可能で、枠が必要です。各ウィンドウには、‘‘1’’ か ら ‘‘9’’ の数字のうちの一つの名前が付いています。この一文字の識別子は、 ユーザが定義できるラベル文字と同じように、ウィンドウのフレームの上の辺に 表示されます。ウィンドウは フォアグラウンドにあるように設計されています。 フォアグラウンドウィンドウは、普通の他のフォアグラウンドではないウィンド ウよりもつねに上にあります。このウィンドウより上になるのは、他のフォアグ ラウンドウィンドウだけです。ウィンドウは、端末画面の辺内に完全に入ってい る必要はありません。したがって、(画面よりも大きくても良い) 大きいウィンド ウは、その全画面の一部分だけが表示されるでしょう。

各ウィンドウは、カーソルと制御機能を持っています。インテリジェント端末の 大抵の動作、すなわち行や文字の消去や挿入が提供されています。下線を引いた り反転表示等のディスプレイモードは、端末によって提供されている場合には、 利用可能です。更に、複数ページ分のメモリがある端末と同じように、各ウィン ドウはウィンドウ画面に表示されるよりも多くの行を保持できるテキストバッ ファを持っています。

プロセス環境
新しく作成されたウィンドウでは、呼び出されたウィンドウからプロセス環境を 引き継いで、シェルプログラムが実行されます。標準入力・出力・エラー出力 は、仮想端末 (pty(4) 参照) または、 UNIX ドメインのソケット (socketpair(2) 参照)と結びつけられます。仮想端末が使われている場合、特別 な文字やモード (stty(1) 参照) は、物理端末から複製されます。このウィンド ウに対する termcap(5) のエントリが作成されて、環境として (environ(7) 参 照) 変数 TERMCAP に渡されます。 termcap エントリには、下線・反転表示・そ の他の表示モード・可能であれば端末のファンクションキーによって生み出され るコード等の物理端末からの情報と同じように、ウィンドウの大きさや特徴が含 まれています。更に、仮想端末のウィンドウサイズ属性は、ウィンドウの大きさ を反映するように設定され、その大きさが変更された場合はその情報が更新され ます。特に、エディタ vi(1) は、この情報を画面を再表示するために利用しま す。

操作
普通の実行中には、 window は、二つの状態の内の一つの状態にあります。この 二つの状態は、会話モードとコマンドモードです。会話モードでは、端末の実際 のカーソルは、特定のウィンドウのカーソル位置に位置します。この特定のウィ ンドウはカレントウィンドウと呼ばれます。そして、キーボードからの入力は、 そのウィンドウにあるプロセスに送られます。カレントウィンドウは、他のウィ ンドウがフォアグラウンドにある時を除いて、いつも他のウィンドウよりも上に あります。更に、その識別子とラベルは反転表示で強調されています。

window のエスケープ文字 (通常は、 ^P です) を入力することで、会話モードか らコマンドモードへ移行します。コマンドモードでは、端末画面の一番上の行は コマンドプロンプトウィンドウに変わり、 window はキーボードからの入力を ウィンドウを操作するコマンドであると解釈します。

二つの種類のコマンドがあります。ショートコマンドは普通一文字ないし二文字 から構成されます。ロングコマンドはコマンドウィンドウ (以下の ‘‘:’’ コマン ドを参照) で入力される文字列もしくは、ファイル (以下の source 参照) から 読み込まれます。

ショートコマンド
以下では、 # は、ウィンドウ 1 から 9 に結びつけられた、数字の ‘‘1’’ から ‘‘9’’ の一つを表現します。 ^X は、 control−X を意味します。ここで、 X は 任意の文字です。特に、 ^^ は、 control−^ です。 escape はエスケープキーも しくは、 ^[ です。

#
ウィンドウ # をカレントウィンドウとして選択し、会話モードに戻りま す。

%#
ウィンドウ # を選択しますが、コマンドモードのままです。

^^
一つ前のウィンドウを選択し、会話モードに戻ります。これは、二つの ウィンドウの間を交互に移動する時に便利です。

escape
会話モードに戻ります。

^P
会話モードに戻り、現在のウィンドウに ^P を書き込みます。したがっ て、会話モード中で二つの ^P を入力することで、一つを現在のウィン ドウに送ることができます。 window のエスケープを別の文字に変更し ている場合には、その文字がここでいう ^P と同じ動作をします。

?
コマンドの短いまとめを表示します。

^L
画面を再描画します。

q
window
を終了します。確認が行われます。

^Z
window
を中断します。

w
新しいウィンドウを作成します。ユーザはウィンドウの左上の場所と右 下の場所を指定します。カーソルが画面上に表示され、 ‘‘h’’, ‘‘j’’, ‘‘k’’, ‘‘l’’ キーでカーソルをそれぞれ左、下、上、右に移動します。 ‘‘H’’, ‘‘J’’, ‘‘K’’, ‘‘L’’ キーでは、カーソルはそれぞれの方向の画 面の限界まで移動します。移動キーの前に数字を入力することで、移動 を数字の回数だけ繰り返します。リターンでカーソル位置をウィンドウ の左上の位置として入力します。右下の角も同じような方法で入力しま す。この手続き中には、新しいウィンドウの位置は画面に表示される長 方形の箱として示されます。この枠が、新しいウィンドウが表示される 枠です。エスケープキーを入力することで、どの時点でも、このコマン ドをキャンセルします。

このウィンドウはカレントウィンドウになります。そして、最初に利用 可能な ID が与えられます。また、デフォルトのバッファサイズが使わ れます (以下の default_nline コマンドを参照)。

完全に見ることのできるウィンドウだけがこの方法で作成できます。

c#
ウィンドウ # を閉じます。ウィンドウ中のプロセスには、ハングアップ シグナル ( kill(1) 参照) が送られます。 csh(1) は、このシグナルを 正しく扱うべきで、そうであれば問題は起こりません。

m#
ウィンドウ # を別の位置に移動します。ウィンドウの形をした箱が新し い位置を示すために画面に表示され、 w コマンドで使われたのと同じよ うなキーで箱の位置を指定できます。ウィンドウは一部が画面の外にで ても構いません。

M#
ウィンドウ # を以前の位置に動かします。

s#
ウィンドウ # の大きさを変更します。ウィンドウの新しい右下の角を指 定する必要があります。新しいウィンドウの大きさを示すために、箱が 書かれます。 wm コマンドで使われたのと同じキーが位置を入力す るために使われます。

S#
ウィンドウ # を以前の大きさに変更します。

^Y
カレントウィンドウを一行上にスクロールします。

^E
カレントウィンドウを一行下にスクロールします。

^U
カレントウィンドウを画面の半分上にスクロールします。

^D
カレントウィンドウを画面の半分下にスクロールします。

^B
カレントウィンドウを一画面分、上にスクロールします。

^F
カレントウィンドウを一画面分、下にスクロールします。

h
カレントウィンドウのカーソルを一カラム左に動かします。

j
カレントウィンドウのカーソルを一行下に動かします。

k
カレントウィンドウのカーソルを一行上に動かします。

l
カレントウィンドウのカーソルを一カラム右に動かします。

y
ヤンクします。ユーザはカレントウィンドウの二点を指定します。この 二点で示される内容がヤンクバッファに保存されます。

p
プットです。ヤンクバッファの内容を、現在のウィンドウに入力として 書き込みます。

^S
カレントウィンドウの出力を停止します。

^Q
カレントウィンドウの出力を開始します。

:
ロングコマンドとして実行する行を入力します。通常の行編集文字 (エ スケープ文字、単語の消去、行の消去) が提供されます。

ロングコマンド
ロングコマンドはプログラム言語の様に解釈される文の列です。この文法は C 言 語に似ています。数字や文字列の表現や変数が、条件分岐と同じように提供され ています。

二つのデータ型があります。文字列と数字です。文字列は、レターで始まる、レ ターや数字の列です。 ‘‘_’’ と ‘‘.’’ はレターとみなします。別の方法とし て、アルファベットや数字に含まれない文字を ‘‘"’’で括るか、‘‘\’’でエスケー プすることで、文字列に含めることもできます。更に、 C言語で提供されている ‘‘\’’ シーケンスがクォートの内外で利用可能です (例えば、 ‘‘\n’’ は改行 を、‘‘\r’’ はキャリッジリターンを表現します)。以下の例は規則にあった文字 列です。 abcde01234, "&#$^*&#", ab"$#"cd, ab\$\#cd, "/usr/ucb/window"

数字は、以下の三つの形式のうちの一つの整数値です。 10 進数・‘‘0’’ に続い て表現される 8 進数・‘‘0x’’ もしくは ‘‘0X’’ に続いて表現される 16 進数で す。機械にとって自然な整数サイズが使われます (つまり、 Cコンパイラの符号 付き整数型です)。 C 言語と同じように、非 0 の表現が論理的な真をあらわしま す。

文字 ‘‘#’’ は、行末までのコメントの始まりを表現します。

文は条件式もしくは式です。式文は改行もしくは ‘‘;’’ で終りになります。式を 次の行に継続するためには、最初の行を ‘‘\’’ で終らせます。

条件文
window
ユーティリティは、単一の制御構造を持ちます: それは完全にまとめられ た if 文で、以下の形式です

if <expr> then
<statement>
...
elsif <expr> then
<statement>
...
else
<statement>
...
endif

elseelsif 部分はオプションです。 elsif は、必要なだけ繰り返して利用す ることができます。 <expr> は数値である必要が有ります。

window における式は、C 言語中のものと似ており、ほとんどの C の演算子が数 値オペランドとして提供されています。更に、いくつかの演算子は、文字列を操 作するために拡張されています。

ある式が文として使われている時、その値は評価の後で捨てられます。したがっ て、(代入や関数呼び出しの様な) 副作用を持った式のみが文として有用です。

(配列でない) 一つの値の変数が、数値と文字列に対して提供されています。いく つかの変数は、あらかじめ定義されています。これらは後に示してあります。

優先順序が増加していくように、演算子を以下に示します。

expr1=expr2

代入です。名前が ⟨expr1⟩ で文字列を値として持つ変数に、 ⟨expr2⟩ の結果が代入されます。 ⟨expr2⟩ の値を返します。

expr1⟩ ? ⟨expr2⟩ : ⟨expr3
expr1⟩ の評価値が真 (非 0 数値) である時、 ⟨expr2⟩ の値を返 します。そうでない場合は、 ⟨expr3⟩ の値を返します。 ⟨expr2⟩ と ⟨expr3⟩ のどちらか一方だけが、評価されます。 ⟨expr1⟩ は数 値表現でなくてはなりません。

expr1||expr2
論理的和 (or) です。数値だけが使えます。短絡評価が提供されて います (つまり、 ⟨expr1⟩ が評価されて真である場合は、 ⟨expr2⟩ は評価されません)。

expr1&&expr2
短絡評価付きの論理的積 (and) です。数値だけが使えます。

expr1|expr2
ビット毎の論理和 (or) です。数値だけが使えます。

expr1^expr2
ビット毎の排他的論理和 (xor) です。数値だけが使えます。

expr1&expr2
ビット毎の論理積 (and) です。数値だけが使えます。

expr1==expr2⟩, ⟨expr1!= ⟨expr2⟩
(それぞれ、等価と非等価の) 比較です。ブール値の結果 (1 か 0 のどちらか) が比較の結果として返されます。オペランドは、数値 もしくは文字列です。片一方が文字列の場合、他のオペランドも必 要であれば変換されます。

expr1<expr2⟩, ⟨expr1>expr2⟩, ⟨expr1<=expr2⟩, ⟨expr1>=expr2
それぞれ、より小さい・より大きい・以下・以上をあらわします。 数値と文字列の両方が利用可能です。上で述べたように、自動的な 変換が行われます。

expr1<<expr2⟩, ⟨expr1>>expr2
両方のオペランドが数値である場合、 ⟨expr1⟩ は、左 (もしくは、 右) に ⟨expr2⟩ ビットシフトされます。 ⟨expr1⟩ が文字列で、最 初 (もしくは、最後) の ⟨expr2⟩ 文字が返されます ( ⟨expr2⟩ も 文字列の場合、その長さがその値として利用されます)。

expr1+expr2⟩, ⟨expr1-expr2
数値においては、加算と減算です。 ‘‘+’’ に対して、片方が文字列 の場合、他方は文字列に変換され、結果は二つの文字列の結合とな ります。

expr1*expr2⟩, ⟨expr1/expr2⟩, ⟨expr1%expr2
かけ算・割算・モジュロ演算 (余りの計算) です。 数字だけが利用 可能です。

expr⟩, ~expr⟩, !expr⟩, $expr⟩, $?expr
最初の 三つは、単項演算子のマイナス・ビット毎の補をとる (ビッ トの反転) ・論理的な否定であり、数値だけを取ります。演算子 ‘‘$’’ は ⟨expr⟩ を取り、その名前の変数の値を返します。 ⟨expr⟩ が値 n を持った数値で、それが (後述の) 別名マクロ中に現れた場 合、別名呼び出しの n 番目の引数を参照します。 ‘‘$?’’ は変数 ⟨expr⟩ の存在を調べ、存在する場合は 1 を、それ以外では 0 を返 します。


expr
⟩(⟨arglist⟩)
関数呼び出しです。 ⟨expr⟩ は文字列でなくてはならず、 window の組み込み関数名の区別できる範囲でのプレフィックスであるか、 ユーザ定義の別名マクロの完全な名前でなくてはなりません。組み 込み関数の場合、 ⟨arglist⟩ は以下の 二つの形式のどちらか一方 です。

<expr1>, <expr2>, ...
argname1 = <expr1>, argname2 = <expr2>, ...

実際、両方の形式はお互い混ぜて使うことができますが、その結果 は予想できません。ほとんどの引数は省略可能です。デフォルトの 値がそれらに対しては適用されます。 argnames は、引数名を区別 できる範囲でのプレフィックスとすることができます。引数を分離 するコンマは、曖昧さを避けるためだけに用いられ、通常は省略で きます。

最初の引数の形式は、ユーザ定義別名のために有効です。別名は、 alias 組み込み関数を使うことで定義されます(以下参照)。引数 は、変数機能の変種を使ってアクセスされます (前述の ‘‘$’’ 演算 子を参照)。

ほとんどの関数は値を返しますが、いくつかは副作用のためだけに 使われるため文として使われなければなりません。関数や別名が文 として使われた時、引数リストを囲むカッコは省略可能です。別名 は値を返しません。

組み込み関数

引数は自然な順番で名前で並べられます。オプション引数は、四角カッコ ‘[]’ で囲みます。名前の無い引数は、山カッコ ‘<>’ 内に書きます。ブール値のフラ グを意味する引数 (しばしば flag という名前を付けられます) は、意味が明ら かである on, off, yes, no, true, false, の内の一つの値をもつか、数値表現 においては非 0 の値が真となります。

       alias(               [⟨string⟩], [⟨string−list⟩])

引数が与えられない場合は、全ての現在定義されている別名マクロ が表示されます。そうでない場合、 ⟨string⟩ が表現 ⟨string−list⟩ の別名として定義されます。もし存在すれば、以前 の ⟨string⟩ の定義が返されます。デフォルトでは、 ⟨string−list⟩ は変更されません。

close(⟨window−list⟩)
window−list⟩ で指定されたウィンドウを閉じます。 ⟨window−list⟩ が単語 all の場合、全てのウィンドウが閉じられま す。値は返しません。

cursormodes([modes])
ウィンドウカーソルを modes に設定します。 modes は、変数 m_ul (下線)、 m_rev (反転表示)、 m_blk (点滅)、 m_grp (グラフィッ ク、端末依存です) で示されるモードビットのビット毎の論理和で す。以前のモードの値が返されます。引数に何も指定しないと変更 を行いません。例えば、 cursor($m_rev$m_blk) は、ウィンドウ カーソルを点滅する反転表示に設定します。

default_nline([nline])
デフォルトバッファサイズを nline に設定します。初期設定で は、48 行になっています。古いデフォルトバッファサイズが返され ます。引数に何も指定しないと変更は行いません。とても大きな バッファを使うと、プログラムの速度が低下します。

default_shell([⟨string−list⟩])
デフォルトのウィンドウシェルプログラムを ⟨string−list⟩ に設定 します。最初の文字列として古いシェル設定が返されます。引数に 何も指定しないと変更を行いません。初期設定では、デフォルト シェルは環境変数 SHELL から取られます。

default_smooth([flag])
コマンド window (以下参照) への smooth 引数のデフォルトの値を 設定します。引数はブール値フラグ (上記の on, off, yes, no, true, false または数字のうちの一つ) です。引数に何も指定しな いと変更を行いません。古い値が (数字として) 返されます。初期 値は 1 (true) です。

echo([window], [⟨string−list⟩])
文字列のリスト ⟨string-list⟩ を、空白で分割し最後に改行を付け て window へ書き出します。文字列はウィンドウにだけ表示され、 ウィンドウ中のプロセスには影響を与えません (以下の write を参 照)。値は返されません。デフォルトはカレントウィンドウです。

escape([escapec])
エスケープ文字を escape-char に設定します。古いエスケープ文字 を一文字の文字列として返します。引数に何も指定しないと変更を 行いません。 escapec は、一文字の文字列か、 control−X を意味 する −^X という形式です。

foreground([window], [flag])
window
をフォアグラウンドに動かしたり、フォアグラウンドから外 したりします。 flag はブール値です。古いフォアグラウンドフラ グが返されます。 window に対するデフォルトはカレントウィンド ウで、 flag に対するデフォルトは無変更です。

label([window], [label])
window
のラベルを label に設定します。古いラベル文字列が返さ れます。 window に対するデフォルトはカレントウィンドウで、 label に対するデフォルトは無変更です。ラベルを無くすために は、空文字列 ("") を設定します。

list()
引数はありません。全てのウィンドウの ID と ラベルが表示されま す。値は返されません。

select([window])
window
をカレントウィンドウとします。以前のカレントウィンドウ が返されます。引数を指定しないと変更を行いません。

source(filename)
filename
内のロングコマンドを読み込み、実行します。ファイルが 読み込めない場合には -1 を返し、それ以外では 0 を返します。

terse([flag])
簡素 (terse) モードを flag に設定します。簡素モードでは、コマ ンドウィンドウはコマンドモード中でさえ隠されたままで、エラー は端末のベルをならすことで報告されます。 flag は、上記の foreground 中の値と同じです。古い簡素フラグが返されます。引数 を指定しないと変更は行いません。

unalias(alias)
別名定義 alias を消去します。別名がない場合には -1 を返しま す。それ以外の場合は 0 を返します。

unset(variable)
variable
変数の定義を消去します。 variable が存在しない場合に は -1 を返します。それ以外の場合は 0 を返します。

variables()
引数はありません。全ての変数を表示します。値は返されません。

window([row], [column], [nrow], [ncol], [nline], [label], [pty], [frame], [mapnl], [keepopen], [smooth], [shell]).
左上の角が row, column で、大きさが nrow, ncol のウィンドウを 開きます。 nline が指定された場合、テキストバッファにその行数 が割り当てられます。そうでない場合は、デフォルトのバッファサ イズが使われます。 row, column, nrow, ncol に対するデフォルト の値は、それぞれ画面の一番上、一番左、一番下、一番右になりま す。 label は、ウィンドウのラベル文字列です。 frame, pty, mapnl は、(上記の) foreground への引数と同じ方法で解釈される フラグの値です。これはそれぞれ、このウィンドウの周りに枠を付 けるか (デフォルトでは真)、ウィンドウのためにソケットペアでは なく仮想端末を割り当てるか (デフォルトでは真)、改行文字をこの ウィンドウでは 復帰と行送りにマップするか (デフォルトではソ ケットペアの場合は真、それ以外は偽) です。一般に、ウィンドウ は、プロセスが終了した時に、自動的に閉じられます。 keepopen を真に設定する (デフォルトでは偽) ことでこの動作は妨げられま す。 smooth が真である時、より端末らしい振舞いを実現するため に、画面は (このウィンドウに対して) より頻繁に更新されます。 smooth のデフォルトの値は、(上記) default_smooth コマンドで設 定します。 shell は、このウィンドウ内でシェルプログラムとして 使われる文字列のリストです (デフォルトは、上記 default_shell で指定されたプログラムです)。作成されたウィンドウの ID が数字 で返されます。

write([window], [⟨string−list⟩])
window
に空白で分割されているが最後に改行の無い文字列リスト ⟨string-list⟩ を送ります。文字列は、実際にウィンドウの入力と して使われます。値は返しません。 デフォルトはカレントウィンド ウです。

定義済み変数
これらの変数は、情報のためだけにあります。これらを再定義しても、 window の内部操作には影響ありません。

baud
50 から 38400の間のボーレートです。

modes
物理端末で提供されている (反転表示・下線・点滅・グラフィック等の) 表示モードです。 modes の値は、1 ビット値 m_blk, m_grp, m_rev, m_ul (以下参照) のビット毎の論理和になっています。これらの値は、 ウィンドウのカーソルモードを設定する時に便利です (上の cursormodes 参照)。

m_blk
点滅モードのビットです。

m_grp
グラフィックモードのビットです (それほど有用ではありません)。

m_rev
反転表示モードのビットです。

m_ul
下線モードのビットです。

ncol
物理端末の列数です。

nrow
物理端末の行数です。

term
端末の形式です。端末の TERMCAP エントリの 2 番目のフィールドに書か れている標準名が使われます。

環境変数

window ユーティリティは、以下のような環境変数を利用します。 HOME, SHELL, TERM, TERMCAP, WINDOW_ID

関連ファイル

       ~/.windowrc

スタートアップコマンドファイル
/dev/[pt]ty[pq]?
仮想端末デバイス

歴史

window コマンドは、 4.3BSD から導入されました。

診断

自己説明的な診断メッセージになっています。

FreeBSD 10.0 December 30, 1993 FreeBSD 10.0

スポンサーリンク