SCREEN(1)

名前
screen - VT100/ANSI 端末エミュレーション機能を持つ画面管理ソフトウェア

書式
screen [ -options ] [ cmd [ args ] ]
screen -r [ [pid.]tty[.host] ]

説明
screen は、複数のプロセス間(特に対話シェル)で物理的な端末を複数個使えるように する、全画面ウィンドウの管理ソフトウェアである。 各仮想端末は DEC VT100 端末の機能に加えて、ANSI X3.64 (ISO 6429) およ び ISO 2022 規格に含まれる制御機能(例: 行の挿入/削除や複数の文字集合の サポート)をいくつか持っている。 それぞれの仮想端末で履歴バッファをスクロールバックする機能や、異なる ウィンドウ間でテキストをやりとりできるコピー&ペースト機能がある。

screen は呼び出されるとウィンドウを 1 つ生成して、その中でシェル(または指定さ れたコマンド)を実行する。そしてユーザが通常通りプログラムを実行でき るようにするため、ユーザから見えなくなる。 その後は、 新しい(全画面)ウィンドウを生成してそこで他のプログラム(別のシェルも含む)を実行 すること、 現在あるウィンドウを削除すること、 ウィンドウのリストを表示すること、 ログ出力を有効・無効にすること、 ウィンドウ間でテキストのコピー&ペーストを行うこと、 履歴をスクロールバックして見ること、 自由にウィンドウを切替えること等がいつでもできる。 プログラムが終了すると、 screen はそのプログラムが動作していたウィンドウを削除する。このウィンドウが フォアグラウンドにある場合は、表示は以前のウィンドウに切り替わる。残っ ているウィンドウが無くなると screen 自身も終了する。

ユーザのキー入力は全て、現在のウィンドウで動作しているプログラムに送ら れる。この唯一の例外として、ウィンドウマネージャへ送るコマンドを起動す るキー操作が 1 つ存在する。デフォルトでは、各コマンドは Ctrl-a (以降は C-a と省略)の後に別のキー操作を 1 つ続けたものである。 コマンド文字と全てのキー割り当ては完全に自由にカスタマイズできる。ただ し長さは必ず 2 文字である。

新しいウィンドウを生成する標準の方法は "C-a c" の入力である。これ によりシェルが実行される新しいウィンドウが生成され、即座にその ウィンドウに切り替わる。この動作は、現在のウィンドウで動作中のプロセス の状態には無関係である。同じように、予めコマンドをキー操作に割り当てて おき(割り当ては .screenrc またはコマンドラインから "C-a :" で行う)、その後にこれを "C-a c" のように用いることで、特定の コマンドが実行される新しいウィンドウを生成することができる。 さらに、以前に生成されたウィンドウのプロンプトから以下のようなコマンド を実行することにより新しいウィンドウを生成することもできる:

    screen emacs prog.c

これは別の screen を起動するのではなく、コマンド名と引き数をウィンドウマネージャに渡して (環境変数 $STY で指定)ウィンドウマネージャに新しいウィンドウを生成させ る。上の例では emacs エディタが起動(prog.c を編集)し、そのウィンドウに 切り替わる。

screen が "/etc/utmp" に書き込みできるならば、各ウィンドウについての 適切なレコードがこのファイルに書き込まれ、そしてウィンドウの終了時に削 除される。これは "talk", "script", "shutdown", "rsend", "sccs" 等の utmp ファイルを見てユーザを調べるプログラムを使う際に 便利である。 screen が端末上でアクティブである限り、その端末自身のレコードは utmp ファイル から削除される。"C-a L" も参照すること。

初めて使う時に
screen を使い始める前には、他の termcap/terminfo プログラムの場合と同じように、 正しい端末のタイプを選んでいることを確かめること( tset プログラム等で確かめることができる)。

文書を読まずに使い始めたいせっかちな人でも、せめて "C-a ?" コマン ドだけは覚えておくこと。この 2 文字を入力すると screen で使えるコマンドとキー割り当てのリストが表示される。それぞれのキー操作 については、"デフォルトのキー割り当て"セクションで説明する。このマ ニュアルの"カスタマイズ"セクションでは、.screenrc の内容を扱う。

使っている端末が"本当の"自動マージン端末(画面をスクロールさせない と画面の末尾のカラムを更新することができない)であれば、端末用の termcap には自動マージンがオフであるものの使用を考えること。 これにより、正確かつ最適な画面更新がどんな環境でも保証される。今日では ほとんどの端末は "magic" マージン(自動マージンであり、かつ最後のカ ラムも利用できる)を備えている。これは VT100 の形式であり、screen でも非常にうまく使うことができる。 "本当の"自動マージン端末しか使えない場合、screen はこれを受 け入れて使用するが、画面の最後のカラムに置かれた文字の更新は、画面がス クロールするか、その文字が何らかの方法で安全な位置に移動するまで行うこ とができない。文字挿入の機能を持つ端末を使うことで、この遅れを短くする ことができる。

コマンドラインオプション
screen では以下のコマンドラインオプションが使用できる:

-a  各ウィンドウの termcap に(一部の例外を除いて)全ての機能を入れる。 これは、ある機能を実装するために screen が画面の一部を再描画しなければならない場合であっても行われる。

-A  全てのウィンドウの大きさを現在の端末の大きさに合わせる。デフォルトでは screen はサイズ変更が可能な端末(記述に "WS" があるもの。例としては suncmd や xterm の一部)へアタッチする際には、古いウィンドウの大きさを復元しよ うとする。

-c file
    デフォルトの設定ファイルを "$HOME/.screenrc" から file に変 更する。 える。

-d|-D [pid.tty.host]
    screen を起動せず、他の場所で動作している screen のセッションをデタッチする。これは、 screen の制御端末で "C-a d" を入力したときと効果は同じである。 -D は強制デタッチのキーと同じである。デタッチできるセッション が無い場合には、このオプションは無視される。"screen -D -r" の組 合せを使うことにより、他の場所で動作しているセッションを自分の端末に 「移動」させ、そこでログアウトすることができる。 参考: "screen -list" を使って、自分のセッションの状態をチェックす るとよいだろう。

-e xy
    コマンド文字に x を指定し、リテラルコマンド文字を生成する文字に y を指定する(コマンド文字の後に入力したとき)。デフォルトでは "C-a" と `a' である。これは "-e^Aa" で指定することができる。 screen セッションを生成するとき、このオプションはデフォルトのコマンド文字を設 定する。マルチユーザセッションでは、追加された全てのユーザは、最初はこ のコマンド文字を使うことになる。しかし、既に動作中のセッションにアタッ チする時には、このオプションはアタッチするユーザのコマンド文字しか変更 しない。このオプションはそれぞれ "defescape" および "escape" と同じである。

-f, -fn, and -fa
    フロー制御の有効、無効、"自動切替えモード"を設定する。これは .screenrc の "defflow" コマンドを使っても定義できる。

-h num
    履歴のスクロールバッファの大きさとして num 行を指定する。

-i  フロー制御が有効である時に、割り込みキー(通常は C-c)で即座に表示に割り 込みがかかるようにする。詳しくは .screenrc のコマンドである "defflow" を参照すること。このオプションはあまり使わない方が良い。

-l および -ln
    ログインモードの有効/無効を制御する(/etc/utmp の更新について)。このオ プションは .screenrc のコマンドの "deflogin" でも定義できる。

-ls および -list
    screen を起動しないで、ユーザの screen セッションを表す pid.tty.host 形式の文字列をリスト表示する。 `detached' と記されているセッションは "screen -r" を使って再開でき る。`attached' と記されているセッションは動作中であり、これを制御して いる端末がある。`dead' と記されているセッションは詳しくチェックして削 除すべきである。よくわからない場合はシステム管理者に相談すること。 セッションを削除するには -wipe オプションを使用する。

-L  使っている自動マージン端末が画面の最後の位置に書き込み可能であることを screen に知らせる。これは .screenrc の "termcap" コマンドで `LP' を指定す ることによっても設定できる。

-m  screen に $STY 環境変数を無視させる。新しいセッションを作るには必ず "screen -m" を使わなければならない。この場合、 screen が他の screen のセッションから呼び出されたかどうかは関係ない。

-O  完全な VT100 エミュレーションではなく、使っている端末に対してより最適 な出力モードを選択する(`LP' が指定されていない自動マージン端末に限って 有効)。これは .screenrc の "termcap" コマンドに `OP' を指定するこ とでも設定できる。

-r [pid.tty.host]
    デタッチされている screen セッションを再開する。他のオプション("-d -r", "-D -r" を除く) を指定することはできないが、 デタッチされている複数の screen セッションを区別するために [pid.]tty.host プレフィックス (省略可能)が必要かもしれない。

-R  デタッチされている screen セッションのうち最初に見つけたものを再開しようと試みる。 成功すれば他のコマンドラインオプションは全て無視される。 デタッチされているセッションが全く無い場合には、 -R が指定されていなかったかのように、指定のオプションを使って新しいセッショ ンが開始される。このオプションは、 screen がログインシェルとして実行される場合にはデフォルトで設定される。

-s  デフォルトのシェルとして、環境変数 $SHELL の値(これが定義されていなけ れば "/bin/sh")ではなく、指定されたプログラムを設定する。 これは .screenrc コマンドの "shell" を使っても定義することができる。

-S セッション名
    新しいセッションを作る際、このオプションを使ってセッションに意味のある 名前を付けることができる。この名前を使い、 "screen -list" や "screen -r" の使用時にセッションを区別できる。 これはデフォルトの [tty.host] サフィックスに置き換わる。

-t 名前
    デフォルトのシェルや指定されたプログラムに対してタイトル(別名)を設定す る。.screenrc のコマンドである "shelltitle" も参照すること。

-v  バージョン番号を表示する。

-wipe
    "screen -ls" とほぼ同じ動作であるが、破棄されたセッションに `dead' と印を付けるのではなく、これを削除する。

-x  デタッチされていない screen セッションへのアタッチを行う(複数表示モード)。

デフォルトのキー割り当て
既に説明したように、 screen の各コマンドは "C-a" の後に別の 1 文字を続けたものである。分かりや すくするため、小文字に割り当てられた全てのコマンドは、これに対応する 制御文字にも割り当てられる(ただし "C-a a" は例外である。これについ ては後述する)。従って、 "C-a c" と同じく "C-a C-c" を使って ウィンドウを生成することができる。コマンドの説明については "カスタマイズ"セクションを参照すること。

以下の表はデフォルトのキー割り当てである:

C-a '
C-a "	(select)
    切替え先のウィンドウ名またはウィンドウ番号を問い合わせる。

C-a 0	(select 0)
... 	   ...
C-a 9	(select 9)
    番号 0 - 9 のウィンドウへ切替える。

C-a C-a	(other)
    前に表示していたウィンドウにトグルする。この割り当ては上書き設定しない 限り、デフォルトでコマンド文字の 2 回繰り返しである。例えば、オプション "-e]x" を使うと、このコマンドは "]C-a" でなく "]]" となる。

C-a a	(meta)
    コマンド文字(C-a)をウィンドウに送る。escape コマンドを参照するこ と。

C-a A	(title)
    現在のウィンドウの名前をユーザに入力させる。

C-a b
C-a C-b	(break)
    ブレーク信号をウィンドウに送る。

C-a B	(pow_break)
    端末ラインを再オープンし、ブレーク信号を送る。

C-a c
C-a C-c	(screen)
    新しいウィンドウとシェルを生成し、そのウィンドウに切替える。

C-a C	(clear)
    画面をクリアする。

C-a d
C-a C-d	(detach)
    この端末から 画面 をデタッチする。

C-a D D	(pow_detach)
    デタッチとログアウトを行う。

C-a f
C-a C-f	(flow)
    フロー制御の on, off, auto をトグルさせる。

C-a C-g	(vbell)
    画面 の可視ベルのモードをトグルさせる。

C-a h	(hardcopy)
    現在のウィンドウのハードコピーをファイル "hardcopy.n" に書き 込む。

C-a H	(log)
    ファイル "screenlog.n" への現在のウィンドウのログ出力を開始/ 終了する。

C-a i
C-a C-i	(info)
    現在のウィンドウに関する情報を表示する。

C-a k
C-a C-k	(kill)
    現在のウィンドウを破棄する。

C-a l
C-a C-l	(redisplay)
    現在のウィンドウ全体をリフレッシュする。

C-a L	(login)
    このウィンドウのログインスロットをトグルさせる。これが利用可能なのは、 screen が utmp データベースを更新する設定になっている場合だけである。

C-a m
C-a C-m	(lastmsg)
    メッセージ行に表示された直前のメッセージを繰り返す。

C-a M	(monitor)
    現在のウィンドウの監視をトグルさせる。

C-a space
C-a n
C-a C-n	(next)
    次のウィンドウに切替える。

C-a N	(number)
    現在のウィンドウの番号(とタイトル)を表示する。

C-a backspace
C-a h
C-a p
C-a C-p	(prev)
    前のウィンドウに切替える(C-a n の反対)。

C-a q
C-a C-q	(xon)
    現在のウィンドウに Control-q を送る。

C-a r
C-a C-r	(wrap)
    現在のウィンドウの行折り返しに関する設定をトグルさせる(現在の ウィンドウの自動マージンのオン/オフを切替える)。

C-a s
C-a C-s	(xoff)
    現在のウィンドウに Control-s を送る。

C-a t
C-a C-t	(time)
    システム情報を表示する。

C-a v	(version)
    バージョンとコンパイルの日時を表示する。

C-a C-v	(digraph)
    二重字(digraph)を入力する。 (訳注: 二重字とはアクセント記号等が付いた文字のこと)

C-a w
C-a C-w	(windows)
    ウィンドウのリストを表示する。

C-a W	(width)
    80/132 カラムをトグルさせる。

C-a x
C-a C-x	(lockscreen)
    この端末をロックする。

C-a z
C-a C-z	(suspend)
    screen をサスペンドさせる。システムが BSD 形式のジョブ制御をサポートしていな ければならない。

C-a Z	(reset)
    仮想端末を "power-on" の値にリセットする。

C-a .	(dumptermcap)
    ".termcap" ファイルへ出力する。

C-a ?	(help)
    キー割り当てを表示する。

C-a C-\	(quit)
    全てのウィンドウを止め、 screen を終了する。

C-a :	(colon)
    コマンドラインモードに入る。

C-a [
C-a C-[
C-a esc	(copy)
    コピー/スクロールバックモードに入る。

C-a ]	(paste .)
    ペーストバッファの内容を現在のウィンドウの標準入力のキューに書き込む。

C-a {
C-a }	(history)
    前の(コマンド)行をコピー&ペーストする。

C-a >	(writebuf)
    ペーストバッファをファイルに書き出す。

C-a <	(readbuf)
    画面交換ファイルをペーストバッファに読み込む。

C-a =	(removebuf)
    C-a < と C-a > で使ったファイルを削除する。

C-a ,	(license)
    screen の由来を表示する。これは screen が来た道であり、あなたがこれを利用できている理由である。

C-a _	(silence)
    現在のウィンドウがアクティブでないかどうかの監視を開始/停止する。

カスタマイズ
"ソケットディレクトリ"はデフォルトでは $HOME/.screen または単に /tmp/screens である。コンパイル時に選択すれば /usr/local/screens にす ることもできる。 screen を root に setuid してインストールする場合、システム管理者は適切な(NFS マウントしていない)ソケットディレクトリを使うように screen をコンパイルしなければならない。 screen が root に setuid されていない状態で動作させる場合、ユーザは環境変数 $SCREENDIR を使って モード 777 の任意のディレクトリを指定することがで きる。

screen は起動されると、初期化コマンドを "/usr/local/etc/screenrc" ファイルとユーザのホームディレクトリの ".screenrc" から読み込んで 実行する。これは "プログラマのデフォルト値"であり、以下の方法で上 書きすることができる: システム全体の screenrc の場合、 screen は環境変数 $SYSSCREENRC を検索する(この上書き機能はコンパイル時に無効 にすることができる)。ユーザ固有の screenrc ファイルは $ISCREENRC, $SCREENRC, $HOME/.iscreenrc の順で検索され、最後にデフォルト値の $HOME/.screenrc が検索される。コマンドラインオプション -c は、こ れらのユーザ用 screenrc ファイルよりも優先される。

これらのファイルに書かれたコマンドは、オプションの設定やキーへの関数の 割り当て、 screen セッション開始時の自動的なウィンドウ生成(複数可)に用いられる。 コマンドは 1 行に 1 つ書かれ、空の行は無視される。コマンドの引き数は タブまたは空白で区切られ、シングルクォートまたはダブルクォートで括ること ができる。 `#' があると、その行の残りの部分がコメントとなる。ただし `#' が クォートの内部にある場合は除く。判読できない行に対してはウォーニングが 出され、無視される。 コマンドから環境変数を参照することが。その記法はシェルと同様の "$VAR " または "${VAR}" の形式である。これにより古いバージョンの screen と互換でない部分が生じており、現在は変数置換を行わせないならば '$' は '\' で保護しなければならない点に注意すること。

カスタマイズは「オンライン」で行うこともできる。コマンドモードに入るに は `C-a :' を入力する。"def" で始まるコマンドはデフォルト値を変更 し、一方、他のコマンドは現在の設定を変更する点に注意すること。

以下のコマンドを使うことができる:

acladd usernames

ユーザを現在の screen セッションに完全にアクセスできるようにする。 Usernames はユーザ一人またはコンマで区切ったユーザのリストである。 このコマンドは screen セッションへのアタッチをできるようにし、 `aclchg usernames +rwx "#?"' と同じことを実行する。 アクセス権が制限されたユーザを追加するには、後述の `aclchg' を用いるこ と。このコマンドはマルチユーザモードのみで使用できる。

aclchg usernames permbits list

コンマ区切りのリストで指定してユーザに対して、パーミッションの変更を行う。 パーミッションのビットは `r', `w', `x' で表される。`+' を前に置くと パーミッションが与えられ、`-' を置くとパーミッションが取り上げられる。 3 番目のパラメータは、コマンドやウィンドウ(番号またはタイトルで指定する) をコンマで区切って並べたリストである。特別なリストである `#' は ウィンドウ全てを示し、`?' はコマンド全てを示す。usernames が `*' 1 つだけである場合、認識されているユーザ全てが影響を受ける。 あるコマンドに対する `x' ビットをユーザが持っているとき、そのコマンド は実行することができる。あるウィンドウに対して `w' ビットが設定されて おり、他のユーザがそのウィンドウの書き込みロックを取得していないとき、 ユーザはウィンドウへの入力を行うことができる。他のビットは現在は無視さ れる。 ウィンドウ 2 にいる他のユーザの書き込みロックを取り消すには、 `aclchg username -w+w 2' コマンドを実行する。 セッションに対する読み込み専用のアクセスを許可するには、 `aclchg username -w "#"' コマンドを実行する。 ユーザ名が screen に識別されるとすぐ、そのユーザはセッションにアタッチすることができ、 全てのコマンドとウィンドウに対する完全なパーミッションを(デフォルトで) 与えられる。acl コマンドに対する実行許可、`at' 等は削除しておくべきで ある。さもないと、そのユーザが書き込みパーミッションを再び取得するかも しれない。マルチユーザモードのみで使用できる。

acldel username

ユーザを screen のアクセス制御リストから削除する。現在アタッチされていれば、ユーザの表 示は全てそのセッションからデタッチされる。そのユーザは再びアタッチする ことはできない。マルチユーザモードのみで使用できる。

activity message

監視状態にあるバックグラウンドウィンドウで何らかの動作が起こった場合、 screen はメッセージ行で通知を行う。 通知メッセージは "activity" コマンドによって定義し直すことができる。 message に含まれる `%' は全て動作が起こったウィンドウの番号に置 き換えられ、`~' は全て termcap に書かれているベルの定義(通常は音を鳴ら すベル文字)に置き換えられる。 デフォルトのメッセージは

    'Activity in window %'

である。 デフォルトでは全てのウィンドウに対して監視はオフになっているが、 監視の指定は "monitor" コマンド(C-a M)で変更することができる。

allpartial on|off

on が設定されると、ウィンドウが変化した時に現在のカーソル行だけが リフレッシュされる。これは全てのウィンドウに影響し、端末ラインが遅い場 合に役に立つ。各ウィンドウに対する以前の全体/部分的リフレッシュの設定 は、"allpartial off" で復元される。これはグローバルなフラグであり、 即座に全てのウィンドウに影響を及ぼして "partial" の設定を上書きす る。これにより新しく生成されたウィンドウのデフォルトの再描画の動作が変 わることはない。

at [identifier][#|*|%] command [args ... ]

他の画面やウィンドウにおいて、あたかもそこで入力したかのようにコマンド を実行させる。 "at" はコマンドのコンテクスト(「現在のウィンドウ」や「現在の画面」 の設定)を変更する。最初のパラメータがユニークでないコンテクストを記述 している場合、そのコマンドは複数回実行される。最初のパラメータが `identifier*' の形を取っている場合、識別子(identifier)のユーザ名 に対するマッチングが行われる。このコマンドは、選択されたユーザ(複数可) の画面それぞれに対して 1 度ずつ実行される。最初のパラメータが `identifier%' の形を取っている場合、識別子の画面に対する マッチングが行われる。画面の名前はアタッチされている tty に基づいて付 けられる。プレフィックス `/dev/' や `/dev/tty' は識別子から省略するこ とができる。 identifier に `#' が含まれていたり、何も追加されていない場合には、 これはウィンドウ名とタイトルにマッチする。`#', `*', `%' の前の識別子を 省略すると全てのユーザ、画面、ウィンドウが選択される。なぜならば プレフィックスのマッチが行われるからである。影響を受ける画面(複数のこ ともある)では、起こったことが短いメッセージで表示される。注意: 所有者 や影響を受ける画面のパーミッションはチェックされるが、`at' コマンドを 呼び出したユーザのパーミッションのチェックは行われない。

autodetach on|off

ハングアップの時に screen が自動的にデタッチを行うかどうかを設定する。デタッチを行うと、 screen -r コマンドで再開させるまで実行中のプログラム全てが保存される。この オプションを無効にすると、ハングアップシグナルは screen および screen 内で実行されている全てのプロセスを終了させる。autodetach はデフォルト で有効である。

autonuke on|off

画面クリアのシーケンスにより、まだ端末に書き出されていない出力も全て 破棄するかどうかを指定する。"obuflimit" も参照すること。

bell message

ベル文字がバックグラウンドウィンドウに送られた時、 screen にメッセージ行に通知を出すようにする。 この通知メッセージは "bell" コマンドで定義し直すことができる。 message に含まれる `%' は全て動作が起こったウィンドウの番号に置 き換えられ、`~' は全て termcap に書かれているベルの定義(通常は音が鳴る ベル)に置き換えられる。 デフォルトのメッセージは

    'Bell in window %'

である。 空メッセージを "bell" コマンドに与えると、メッセージ行への出力を止 めることができる(bell "")。

bind key [command [args]]

コマンドをキーに割り当てる。 デフォルトでは、 screen に用意されているほとんどのコマンドは 1 つあるいは複数のキーに割り当て られている。割り当ては"デフォルトのキー割り当て"セクションで示され ており、例えば新しいウィンドウを生成するためのコマンドは "C-c" と "c" に割り当てられている。 "bind" をコマンドを用いて、キー割り当てを再定義することや新しい割 り当てを定義することができる。 引き数 key は文字 1 つ、"^x" 形式("C-x" の意味)の 2 文字 からなるシーケンス、バックスラッシュの後に 8 進数を続けたもの(文字の ASCII コードを示す)、バックスラッシュの後に 2 番目の文字を続けたもの ("\^" や "\\" 等)のいずれかである。 引き数はクォートすることもできる。これ以上の引き数が与えられなかった場 合、以前にこのキーに対して作られた割り当てが削除される。 command 引き数には、このセクションで示す任意のコマンドを指定する ことができる。

指定例をいくつか示す:

	bind ' ' windows
	bind ^f screen telnet foobar
	bind \033 screen -ln -t root -h 1000 9 su

最初の指定では、ウィンドウのリスト表示のコマンドがスペースキーに割り当 てられる(通常は "C-a C-w" で呼び出されるコマンドが "C-a スペース" でも呼び出せるようになる)。2 番目の指定では "ホスト foobar への TELNET 接続を行うウィンドウを生成する"コマンド が "C-f" に割り当てられる。最後の指定では、別名 "root" を スロット番号 9 に持ち、スーパーユーザのシェルを持ち、スクロールバック 用のバッファのサイズが 1000 行である非ログインウィンドウを生成する コマンドが"エスケープキー"に割り当てられる。

bindkey [-d] [-m] [-a] [[-k|-t] string [cmd args]]

このコマンドは screen の入力変換テーブルを管理する。テーブル 1 つに含 まれるそれぞれのエントリは、特定の文字シーケンスに出会ったときに行うべ き応答を screen に指示する。このようなテーブルは 3 つ存在する( ユーザがプログラムした動作を含むテーブル、端末エミュレーションで使われ るデフォルトの動作を含むテーブル、screen がカーソル移動を行うための コピーモード用のテーブル)。デフォルトのキー割り当てのリストについ ては、"入力の変換"セクションを参照すること。
-d オプションを与えると、bindkey はデフォルトのテーブルを変更し、 -m オプションはコピーモードテーブルを変更し、どちらのオプションも与えない とユーザテーブルが選択される。 引き数 string は動作が割り当てられる文字シーケンスである。これは固定の文字列でもよい し、termcap のキーボード機能名でもよい( -k オプションで選択することができる)。
アプリケーションモードが有効である場合、VT100 端末の一部のキーは通常と 異なる文字列を送ってくることがある(例: カーソルキー)。このようなキーは 変換テーブル中にエントリを 2 つ持つ。アプリケーションモード時のエントリは -a オプションの指定によって選択することができる。
-t オプションを指定すると、screen は文字間タイミング調整を行わない。 termcap の機能を使う場合には、タイミング調整を無効にすることはできない。
cmd には任意の screen のコマンドと、これに対する任意の数の引き数 args を指定することができる。 cmd が省略された場合、キー割り当てはテーブルから削除される。
以下にキーボード割り当ての例をいくつか示す:

        bindkey -d
デフォルトのキー割当を全て表示する。アプリケーションモードのエントリに は [A] が付けられる。

        bindkey -k k1 select 1
"F1" キーでウィンドウ 1 に切り替わるようにする。

        bindkey -t foo stuff barfoo
"foo" を単語 "barfoo" の省略形とする。ユーザがゆっくり入力できるように、 タイムアウトを無効する。

        bindkey "\024" mapdefault
このキー割り当ては "^T" をキー割り当て用のエスケープ文字にする。 先程挙げた "stuff barfoo" の設定がされている場合、"^Tfoo" と タイプすることにより単語 "foo" を入力することができる。"^T" を 挿入したい場合には、このキーを 2 回押さなければならない(つまり、 エスケープの割り当てをエスケープする)。

        bindkey -k F1 command
F11 (F1 ではない!)キーを(^A に加えて)新しい画面エスケープとする。

break [duration]

このウィンドウに対し、ブレーク信号をduration*0.25 秒間送る。 キャラクタ型デバイスがシェルプロセスではなくウィンドウにアタッチされて いる場合に最も役に立つ。

bufferfile [exchange-file]

ペーストバッファを使った読み書きに使うファイル名を変更する。 "bufferfile" コマンドへの引き数を省略した場合には、デフォルトの設 定("/tmp/screen-exchange")が再び使われるようになる。以下の例は、 システムのパスワードファイルを screen のウィンドウにペーストするものである(ペーストバッファを使用。ここには コピーが残る):

	C-a : bufferfile /etc/passwd
	C-a < C-a ]
	C-a : bufferfile

c1 [on|off]

c1 コードの処理を変更する。"c1 on" を指定すると、screen は 128 か ら 159 までの入力文字を制御関数として扱う。このような 8 ビットコードは 通常、ESC の後に対応する 7 ビットコードを続けたものと同じ意味である。 デフォルトの設定では c1 コードは処理されるが、これは "defc1" コマンドで変更することができる。c1 の位置に利用可能な文字がある フォントを使っているユーザは、このオプションを off にしてもよい。

charset set

現在の文字集合のスロット指示と文字集合マッピングを変更する。 set の最初の 4 文字は文字集合指示子として扱われるが、5 番目と 6 番目の文字 は '0' から '3' の範囲でなければならず、GL/GR 文字集合マッピングを設定 する。どの位置においても、対応する文字集合/マッピングを変更してはなら ないことを '.' を使って指示することができる('.' を追加することにより、 set を 6 つの文字の内部に置かれる)。"kanji" コマンドが有効で なければ、新しいウィンドウはデフォルトの文字集合として "BBBB02" を持つ。
現在の設定は "info" コマンドで表示することができる。

chdir [directory]

screen のカレントディレクトリを指定されたディレクトリに変更する。引き数 なしで呼ばれた場合にはカレントディレクトリをホームディレクトリ (環境変数 $HOME の値)に変更する。 ".screenrc" 内部から "screen" コマンド、"C-a : screen ...", "C-a c" のいずれかによって生成された全てのウィンドウは、これを デフォルトのディレクトリとして使用する。 chdir コマンドを使わない場合、デフォルトのディレクトリは screen が起動されたディレクトリになる。ハードコピーとログファイルが書き出され るのは必ずウィンドウのデフォルトディレクトリであり、その ウィンドウ内で動作しているプロセスのカレントディレクトリではない。この コマンドを .screenrc 内で複数回用いて、別々のデフォルトディレクトリで ウィンドウをいくつも起動することができるが、ユーザが対話的に生成した 全てのウィンドウは最後の chdir の値の影響を受ける。

clear

現在のウィンドウをクリアし、そのイメージをスクロールバックバッファに格 納する。

colon [prefix]

".screenrc" のコマンドラインを入力できるようにする。screen の動作 中にキー割り当てを変える時や特定のウィンドウを生成する時、設定を変更す る時に便利である。"set" コマンドはもはや存在しない点に注意すること! コマンドは通常、将来生成するウィンドウのデフォルト設定としてではなく、 現在のウィンドウに影響する。デフォルトを変更するには 'def...' で始まる コマンド群を用いること。 これを screen の「Ex コマンドモード」と考えるならば、"C-a esc"(コピーモード)は 「Vi コマンドモード」と考えてもよい。

command

このコマンドは、screen のエスケープ文字(^A)を打ち込んだ場合と同じ動作 を行う。これが役に立つのはキー割り当ての場合だけであろう。 "bindkey" も参照すること。

console [on|off]

マシンのコンソールのウィンドウへの出力をグラブまたはアングラブする。

copy

コピー/スクロールバックモードに入る。これにより、テキストを現在の ウィンドウとその履歴からペーストバッファにコピーすることができる。この モードでは、vi に似た「フルスクリーンエディタ」がアクティブになる:
移動キー:
h, j, k, l により、カーソルが行やカラムの間を 移動する。
0, ^, $ により、その行の左端のカラム、空白でない最初 の文字、空白でない最後の文字に移動する。
H, M, L により、カーソルはウィンドウの一番上、中央、 一番下の行の左端のカラムに移動する。
+ と - は、1 行上または下へ移動する。
G は、指定された絶対行への移動を行う(デフォルト値はバッファの最後)。
| は、指定された絶対カラム位置への移動を行う。
w, b, e はカーソルを単語単位で移動させる。
C-u と C-d は、指定された行数だけ画面を上下にスクロールさ せる。この際にカーソル位置は変わらない。(デフォルト値は全画面の半分)
C-b と C-f は、画面を 1 画面分スクロールさせる。
g はバッファの先頭への移動を行う。
% は、バッファの指定したパーセンテージの位置へのジャンプを行う。
注意:
Emacs 形式の移動には .screenrc コマンドを使ってカスタマイズすることが できる(例: markkeys "h=^B:l=^F:$=^E")。完全な Emacs 形式のキーマップに は複数個の文字からなるコードが含まれており、これを簡単に実現することは できない。
マーキング:
コピーする範囲の指定は 2 つのマークを設定することにより行う。 これらのマークの間のテキストはハイライト表示される。
スペースキーを押すと最初と 2 番目のマークが設定される。
Y と y を使うと、1 行全体または行頭から現在の位置までがマー クされる。
W は単語をちょうど 1 つマークする。
繰り返し回数:
以上のコマンドは全て、数字キーを押すことによって繰り返し回数を指定する ことができる。
0..9 は繰り返し回数として扱われる。
例: "C-a C-[ H 10 j 5 Y" により、11 行目から 15 行目までがペースト バッファにコピーされる。
検索:
/ Vi と同様の検索コマンドである。
? Vi と同様の検索コマンドである。
C-a s は Emacs 形式の前方インクリメンタル検索である。
C-r は Emacs 形式の後方インクリメンタル検索である。
特殊コマンド:
しかし、一部のキーは vi と異なる動作をする。 vi ではテキストの矩形ブロックのヤンクを行うことはできないが、 screen ではこれを行うことができる。
c や C キーを押して、左端や右端をそれぞれ設定すること。 繰り返し回数を与えない場合には、どちらもデフォルトで現在のカーソル位置 となる。
例: 以下のコマンドをテキスト画面全体で試すこと: "C-a [ M 20 l SPACE c 10 l 5 j C SPACE" これにより、カーソルはスクリーンの中央の行に移動し、そこから 20 カラム 左に移動し、ペーストバッファの最初のマークを行い、左カラムの設定を行い、 5 カラム下に移動し、右のカラムを設定し、最後にペーストバッファの終わり のマークを行う。以下のコマンドを試し、コピーされるテキストの量の違いを 見ること:
"C-a [ M 20 l SPACE 10 l 5 j SPACE"
J は行を連結する。これは 3 つのモード(改行文字(012)で区切られた 行、継目なしに繋げられた行、空白 1 つで区切られた行)をトグルさせる。 "crlf on" を実行することにより、改行文字の前に復帰文字を置けること を覚えておくとよい。
v は ":set numbers" を使っている vi ユーザのためのものである。つまり、これは左端をカラム 9 からカラム 1 の 間でトグルさせる。最後のスペースキーの前に
a を押すと追加モードに切り替わる。したがって、ペーストバッファの 内容は上書きされず、これに対する追記が行われる。
A は追加モードへの切り替えを行い、(2 番目の)マークを設定する。
> は (2 番目の)マークをセットし、コピーモードが終了した時に ペーストバッファの内容を画面交換ファイル(デフォルトでは /tmp/screen-exchange)に書き出す。
この例は、スクロールバックバッファ全体をそのファイルにダンプする方法を 示したものである: "C-A [ g SPACE G $ >"
C-g は現在の行とカラムに関する情報を与える。
x は最初のマークと現在のカーソル位置を交換する。これを用いて、既 に配置したマークの調整を行うことができる。
@ は何もしない。コピーモードの終了さえ行わない。
ここで説明していない全てのキーは、コピーモードを終了させる。

copy_reg [key]

もう存在しない。代わりに "readreg" を用いること。

crlf on|off

`C-a [' コマンドを用いたテキストリージョンのコピーに影響を与える。これ に `on' が設定されている場合、行は 2 文字からなるシーケンス `CR' - `LF' によって分割される。それ以外の場合には `LF' だけが使われる。

debug on|off

実行時のデバッギングのオン/オフを行う。 screen にオプション -DDEBUG を付けてコンパイルしている場合、デバッギングは利 用可能であり、デフォルトでオンになる。このコマンドが影響を与えるのは、 メインの "SCREEN" のプロセスからのデバッグ出力だけである。

defc1 on|off

c1 コマンドとほぼ同じであるが、新しいウィンドウに対するデフォル ト設定を変える点が異なる。初期設定は `on' である。

defautonuke on|off

autonuke コマンドとほぼ同じであるが、新しいディスプレイに対する デフォルト設定を変える点が異なる。初期設定は `off' である。 端末のタイプへの依存性を持たせたければ、特別な `AN' 端末機能を使うこと ができる点に注意すること。

defcharset [set]

charset コマンドと似ているが、新しいウィンドウに対するデフォルト 設定を変える点が異なる。引き数なしで呼び出された場合には、現在の デフォルト値を表示する。

defescape xy

デフォルトのコマンド文字を設定する。これは "escape" とほぼ同じであ るが、マルチユーザのセッションでしか役に立たない点が異なる。 マルチユーザセッションでは、"escape" は呼び出したユーザのコマンド コマンド文字を変更する。一方 "defescape" は、コマンドの実行より後 に追加されたユーザのデフォルトのコマンド文字列を変更する。

defflow on|off|auto [interrupt]

flow コマンドとほぼ同じであるが、新しいウィンドウに対するデフォ ルト設定を変える点が異なる。初期設定は `auto' である。 "defflow auto interrupt" を指定することは、コマンドラインオプション -fa と -i を指定することと同じである。

defgr on|off

gr コマンドとほぼ同じであるが、新しいウィンドウに対するデフォル ト設定を変える点が異なる。初期設定は `off' である。

defhstatus [status]

全ての新しいウィンドウが取得するハードステータス行に status が設定されるようになる。このコマンドは、全てのウィンドウの ハードステータス行にウィンドウ番号やタイトル等を表示させる時に役立つ。 status にはウィンドウのメッセージの場合と同じディレクティブを含めることができ るが、ディレクティブのエスケープ文字は '%' ではなく '^E' (8 進値で 005) である。これは、プログラムが生成したハードステータス行の解釈を絶対に間 違わないようにするために行われた。パラメータ status を省略すると、現在のデフォルト文字列が表示される。デフォルトでは、新 しいウィンドウのハードステータス行は空である。

defkanji jis|sjis|euc

kanji コマンドとほぼ同じであるが、新しいウィンドウに対するデフォ ルト設定を変える点が異なる。初期設定は `off'、すなわち `jis' である。

deflogin on|off

login コマンドとほぼ同じであるが、新しいウィンドウに対するデフォ ルト設定を変える点が異なる。配布の状態では、これは `on' で初期化される ようになっている(config.h.in を参照)。

defmode mode

新しく割り当てられる仮想 tty 全てのモードに mode が設定されるよ うにする。mode は 8 進数の値である。 "defmode" コマンドが与えられていない場合はモード 0622 が使われる。

defmonitor on|off

monitor コマンドとほぼ同じであるが、新しいウィンドウに対するデフォ ルトの設定を変える点が異なる。初期設定は `off' である。

defobuflimit limit

obuflimit コマンドとほぼ同じであるが、新しいディスプレイに対する デフォルト設定を変える点が異なる。初期設定は 256 バイトである。 端末の種類への依存性を持たせたい場合には、特殊 'OL' 端末機能が使える点 に注意すること。

defscrollback num

scrollback とほぼ同じであるが、新しいウィンドウに対するデフォル トの設定を変える点が異なる。初期設定値は 100 である。

defwrap on|off

wrap コマンドとほぼ同じであるが、新しいウィンドウに対するデフォ ルト設定を変える点が異なる。最初は行の折り返しは有効であり、"wrap" コマンド("C-a r")または "C-a : wrap on|off" を使ってトグルさせるこ とができる。

defwritelock on|off|auto

writelock コマンドとほぼ同じであるが、新しいウィンドウに対するデ フォルト設定を変える点が異なる。初期状態では、書き込みロックは 自動モードで動作する。

defzombie [keys]

zombie コマンドと同じである。現在はどちらもデフォルト値を変更す る。zombie コマンドの説明を参照すること。

detach

screen のセッションをデタッチする(セッションを端末から切り離し、これを バックグラウンドに回す)。これにより、ユーザは screen を起動したシェルに戻る。デタッチされた screen は、 -r オプションを付けて screen を呼び出すことによって復元できる("コマンドラインオプション" を参照)。

digraph [preset]

このコマンドはユーザに二重字を入力させる。次に入力された 2 文字は組み 込みのテーブルで検索され、得られた文字は入力ストリームに挿入される。例 えばユーザが 'a"' を入力すると、ウムラウトが付いた a が挿入される。最 初に入力された文字が 0 (ゼロ)ならば、 screen はこれに続く文字(3 文字まで)を文字としてではなく 8 進数の値として扱う。 省略可能な引き数 preset はユーザの入力として扱われるので、ユーザは"ウムラウト"キーを作るこ とができる。例えばコマンド "bindkey ^K digraph '"'" を使うと、ユーザは CTRL-K a と入力することによりウムラウト付きの a を生成することができる。

dumptermcap

現在アクティブなウィンドウに対して最適化された仮想端末用の termcap エントリを、ユーザの "$HOME/.screen" ディレクトリ(あるいは screen がソケットを格納している場所いずれか。詳しくは後述の"ファイル" セクションを参照)に書き出す。 この termcap エントリは、 screen がそれぞれのウィンドウに対して設定する環境変数 $TERMCAP の値と同じであ る。terminfo ベースのシステムの場合には、 captoinfo のような変換プログラムを実行してから、 tic を使ってエントリをコンパイルする必要があるだろう。

echo [-n] message

echo コマンドを使うと、「今日のメッセージ」を出して screen のユーザを鬱陶しがらせることができる。通常はシステム全体用の /local/etc/screenrc に設定する。"sleep" も参照すること。 echo は環境変数をオンラインで調べる時にも便利である。

escape xy

コマンド文字に x を設定し、リテラルコマンド文字を生成する文字に y を設定する(ちょうど -e のように)。それぞれの引き数は、文字 1 つ、"^x" の形式の 2 文字からなるシーケンス("C-x" を意味する)、 バックスラッシュの後に 8 進数を続けたもの(その文字の ASCII コードを指 定する)、バックスラッシュの後に 2 番目の文字を続けたもの ("\^" や "\\" など)のいずれかである。 デフォルト値は "^Aa" である。

exec [[fdpat] newcommand [args ...]]

サブプロセス(newcommand)を現在のウィンドウで実行する。newcommand と 標準入力/標準出力/標準エラー出力の間のデータの流れ、既に実行中のプロセス (シェル)、screen そのもの(ウィンドウ)はファイルデスクリプタパターン fdpat で制御する。このパターンは基本的に 3 つの文字からなるシーケンス であり、newcommand の標準入力、標準出力、標準エラー出力を表す。 ドット(.)はファイルデスクリプタを screen に接続させる。 感嘆符(!)はファイルデスクリプタを既に実行中のプロセスに接続させる。 コロン(:)は両方を結合させる。newcommand が古いプロセスの出力を要求した り(fdpats の最初の文字が `!' または `:')、パイプ(|)が fdpat の最後に追 加されていなければ、ユーザの入力は newcommand に送られる。
引き数を付けずに `exec' を実行すると、現在実行中のサブプロセスの名前と 引き数がこのウィンドウに表示される。
サブプロセスの実行中は、`kill' コマンドはウィンドウのプロセスではなく サブプロセスに影響を及ぼす。
この 21 通りもある組合せを描いた難解な図については、PostScript 形式の `fdpat.ips' ファイルを参照すること。それぞれの図は newcommand の 3 つ のファイルデスクリプタを表す数字 0, 1, 2 を示す。`W' の印が付いた四角 は、スレーブ側にあるアプリケーションプロセスがある通常の pty である。 `P' の印が付いた四角は、マスター側に screen を持つことになったセカンダリの pty である。

省略形:
`exec' と fdpat とコマンドの間の空白は省略することができる。末尾のドッ トと、ドットだけからなる fdpat は省略することができる。ただ `|' と書く とパターン `!..|' と同じ意味を持つ。この場合には exec を省略することが でき、必ず `!' で置き換えることができる。

実行例:

    exec ... /bin/sh
    exec /bin/sh
    !/bin/sh

同じウィンドウの中で、元のシェルを実行させたまま別のシェルを生成する。 シェルの出力はどちらも表示され、ユーザの入力は新しい /bin/sh に送られ る。

    exec !.. stty 19200
    exec ! stty 19200
    !!stty 19200

ウィンドウの tty の速度を設定する。stty コマンドが標準出力を操作する場 合には、更に `!' を追加すること。

    exec !..| less
    |less

これはウィンドウ出力のページャを追加する。ユーザにページャを制御させる ために特殊文字 `|' が必要であるが、ページャはウィンドウのプロセスから 入力を得る。 less は標準エラー出力も監視する(`|' が無いときは screen が期待しない動作)ので、標準入力が tty でない時にもこれは動作する。 バージョンが 177 より新しい less はここではまともに動作しない。この場合でも古い pg が動作する。

    !:sed -n s/.*Error.*/\007/p

ウィンドウの出力をユーザと sed コマンドの両方に送る。sed は、 screen に現われるウィンドウ出力に追加するベル文字を(8 進値で 007)を挿入する。 これを実行すると、ウィンドウに "Error" という文字列が現われる時は必ず "Bell in window x" というメッセージが出力される。

flow [on|off|auto]

このウィンドウに対してフロー制御モードを設定する。パラメータ無しの場合 には、これは現在のウィンドウのフロー制御設定を "automatic", "on", "off" の順に切り替える。詳しい説明と注意については本ドキュメントで後述 する"フロー制御"についての議論を参照すること。これは将来のリリース では変更されることになっている。デフォルトでは `defflow' が設定されて いる。

gr [on|off]

GR 文字集合のオン/オフを切り替える。8 ビット目が立っている入力文字を screen が見つけると必ず、GR スロットに格納されている文字集合が使用され、 8 番目のビットが取り除かれた文字が出力される。デフォルトでは ("defgr" も参照すること) GR 切り替えは処理しない。なぜなら、そうし なければ ISO8859-1 文字集合が使えないからである。

hardcopy

現在表示されている画面イメージを、そのウィンドウのデフォルト ディレクトリのファイル hardcopy.n に書き出す。ここで n は 現在のウィンドウの番号である。ファイルが存在する場合には、追加か上書き のどちらかが行われる。詳しくは後述する。

hardcopy_append on|off

これに "on" が設定されていると、 screen はコマンド "C-a h" で生成される "hardcopy.n" ファイルに対して追加 書き込みを行う。それ以外の場合には、このファイルは毎回上書きされる。 デフォルト値は `off' である。

hardcopydir directory

ハードコピーファイルが置かれるディレクトリを定義する。設定されていない 場合には、ハードコピーは screen の現在の作業ディレクトリにダンプされる。

hardstatus [on|off]

端末のハードウェアステータス行を使うかどうかをトグルさせる。これが "on" ならば、 screen はこの機能を使って 1 行のメッセージを表示する。"off" ならば、このメッ セージは表示行に反転ビデオモードでオーバーレイ表示される。この ハードステータス機能は termcap/terminfo の "hs", "ts", "fs", "ds" 機能 が適切に設定されている場合にしか使用できない点に注意すること。"hs" 機能があれば、必ずデフォルト値は `on' である。

height [lines]

ディスプレイの高さを指定された行数に設定する。引き数が与えられていない 場合には、24 行表示と 42 行表示の両者をトグルさせる。

help

実際にはオンラインヘルプではないが、キー割り当てを全て示すヘルプ画面を 表示する。最初のページでは、内部コマンドとその現在のキー割り当てが リスト表示される。次のページにはカスタムコマンドが、キーごとに 1 つの コマンドの形式で表示される。各ページを読み終えたらスペースキーを押して 次のページを見るか、リターンキーを押して即座にヘルプ終了させること。 他の文字は全て無視される。"デフォルトのキー割り当て"セクションも参 照すること。

history

通常、ユーザはシェルを使って作業し、以前のコマンドに簡単にアクセスする ことができる。例えば、csh には直前に実行したコマンドを繰り返す "!!" というコマンドがある。 screen には、ユーザが"〜で始まるコマンド"を再呼び出しできる原始的な方法が 用意されている: そのコマンドの最初の文字を打ち込み、その後に `C-a {' を打つと、 screen はカーソルの左にある「プロンプト文字」にマッチする以前の行を見つけよう とする。その行はウィンドウの入力キューにペーストされる。これにより、 ユーザは単純なコマンド履歴(可視ウィンドウとスクロールバッファで構成さ れる)を使うことができる。

info

メッセージ行を使って現在のウィンドウに関する情報をいくらか表示する: "(カラム,行)" 形式のカーソル位置("(1,1)" から始まる)、端末の 幅と高さおよびスクロールバッファの大きさの行数("(80,24)+50" など)、 各種フラグ設定(フロー制御、挿入モード、origin モード、折り返しモード、 アプリケーションテンキーモード、出力ログ、アクティビティ監視、再描画 (`+' は有効、`-' は無効を示す))、現在有効な文字集合( G0, G1, G2, G3 のいずれか)、現在 G0 から G3 として指示されている端末の文字集合(角括弧で括られている)。 システムの情報については "time" コマンドを用いること。

ins_reg [key]

もはや存在しない。代わりに "paste" コマンドを用いること。

kanji jis|euc|sjis [jis|euc|sjis]

screen に漢字の入出力の方法を指示する。最初の引き数は現在のウィンドウ の漢字の種類を設定する。それぞれのウィンドウで異なる種類をエミュレート することができる。省略可能な 2 番目の引き数は、接続されている端末に対 する漢字の出力方法を screen に指示する。表示の種類の望ましい設定方法は、 termcap の "KJ" エントリを使うことである。"defkanji" も参照す ること。これは新しいウィンドウのデフォルト設定も変更する。

kill

現在のウィンドウを kill する。
実行中の `exec' コマンドがあれば、これが kill される。それ以外の場合に は、そのウィンドウで動作中のプロセス(シェル)は HANGUP 信号を受け取り、 ウィンドウ構成は削除され、 screen は前に表示していたウィンドウへの切り替えを行う。 最後のウィンドウが破棄された時、 screen は終了する。 注意: Emacs ユーザは、行を消すときにはこのコマンドがあることを忘れないこと。 "C-a" を screen のエスケープキーとして用いたり、kill を "C-a K" に割り当てないこと をお勧めする。

lastmsg

メッセージ/ステータス行の最後の内容を再表示する。メッセージが表示され たときにちょうど文字を入力したような場合に便利である。というのも、( 端末にハードウェアステータス行が無ければ)キーを押すとメッセージは消え てしまうからである。 もっとうまく調整するために "msgwait" コマンドや "msgminwait" コマンドを参照すること。

license

免責事項のページを表示する。これはオプション無しで screen を起動すると必ず実行される。多くの場合はこれで十分なはずである。 "startup_message" コマンドも参照すること。

lockscreen

このディスプレイをロックする。 スクリーンロックのプログラム(/local/bin/lck や /usr/bin/lock、他に使え るものがなければ組み込みのもの)を呼び出す。screen はこのプログラムが終 了するまで一切のコマンドキーを受け付けない。ウィンドウは「デタッチされた」 状態となるので、そのウィンドウで実行中のプログラムは継続して動作する。 スクリーンロックプログラムは、環境変数 $LOCKPRG で変更することができ (これは screen を実行するシェルで設定されていなければならない)、ユーザの UID と GID で実行される。

log [on|off]

現在のウィンドウからの出力のファイル "screenlog.n" への書き 込みを開始/終了させる。このファイルはウィンドウのデフォルトディレクト リにあり、n は現在のウィンドウの番号である。このファイル名は `logfile' コマンドで変更することができる。パラメータを与えなかった場合 には、ログ出力の状態がトグルされる。前のセッションログのファイルがあれ ば、セッションログはこのファイルに追加される。現在の内容と スクロールバック履歴の内容はセッションログには含まれない。 デフォルト値は `off' である。

logfile filename

ログファイルに与えられる名前を定義する。デフォルト値は "screenlog.%n" である。

login [on|off]

現在のウィンドウについて、utmp データベースファイル中のエントリの追加 と削除を行う。これは、ウィンドウが「ログイン」されているかどうかを制御 する。パラメータが与えられていない場合、そのウィンドウのログイン状態が トグルされる。このようなトグルに加え、「ログイン」や「ログアウト」のキー があると便利である。例えば `bind I login on' と `bind O login off' と すれば、これらのキーを C-a I と C-a O に割り当てることができる。 screen が root に suid されて実行される場合、デフォルトの設定(config.h.in に ある)は "on" のはずである。 新しいウィンドウのデフォルトのログイン状態を変えるには "deflogin" コマンドを用いること。どちらのコマンドも、 screen のコンパイル時に utmp のサポートを組み込んである場合しか存在しない。

mapdefault

次の入力文字の検索をデフォルトのキー割り当てテーブルでしか行わないこと を screen に指示する。"bindkey" も参照すること。

mapnotnext

mapdefault と似ているが、デフォルトのキー割り当てテーブルも検索しない。

maptimeout [timo]

入力シーケンス検出の文字間タイマに対し、タイムアウト値 timo ミリ秒を設定する。引き数を与えずに maptimeout を実行すると、現在の設定 が表示される。"bindkey" も参照すること。

markkeys string

これはコピー/履歴モードで使われるキーマップを変更するための方法である。 この設定は oldchar=newchar のペアを集めたものであり、この ペアは自体 `:' で区切られる。例: 文字列 "B=^B:F=^F" により、 キー `C-b' および `C-f' は vi 形式の割り当て(ページ全体の スクロールアップ/ダウン)に変更される。この変更は、`B' と `F' に対する デフォルトの割り当てとなる。コマンド "markkeys h=^B:l=^F:$=^E" は emacs 形式の割り当てモードを設定する。

meta

現在のウィンドウの入力ストリームにコマンド文字(C-a)を挿入する。

monitor [on|off]

ウィンドウのアクティビティ監視をトグルさせる。監視が有効であり、かつそ の影響を受けるウィンドウがバックグラウンドに切り替えられている場合、 出力が初めてあった時にステータス行を通じてユーザにアクティビティ通知メッ セージが送られ、ウィンドウ状態表示ではそのウィンドウにも `@' 印が付け られる。初期状態では、全てのウィンドウについて監視はオフになっている。

msgminwait sec

あるメッセージが表示されている時に、新しいメッセージを表示するまでに screen が待つ時間を定義する。デフォルト値は 1 秒である。

msgwait sec

screen が他の動作の影響を受けない場合に、メッセージが表示される時間を定義する。 デフォルト値は 5 秒である。

multiuser on|off

シングルユーザモードとマルチユーザモードの切り替えを行う。 screen の標準動作はシングルユーザモードである。マルチユーザモードではコマンド `acladd', `aclchg', `acldel' を使って、他のユーザのこの画面に対するア クセスの許可や禁止を行うことができる。

nethack on|off

screen が使うエラーメッセージの路線を変える。ユーザが "nethack" というゲー ムをよく知っていれば、起こったエラーを読んで面白い nethack 形式のメッ セージで楽しむことができる。これは多少分かりにくいけれど、どうせ標準の メッセージだって分かりやすいわけではない。
このオプションが利用できるのは、 screen のコンパイル時に NETHACK フラグが定義されている場合だけである。そして、 デフォルトの設定は環境変数 $NETHACKOPTIONS があるかどうかで決まる。

next

次のウィンドウに切り替える。このコマンドを繰り返し用いて、ウィンドウの リストを循環的に切り替えることができる。

number [n]

現在のウィンドウ番号を変更する。与えられた番号 n が既に他のウィ ンドウに使われている場合には、2 つのウィンドウは番号を交換する。引き数 が指定されていない場合、現在のウィンドウ番号(とタイトル)が表示される。

obuflimit [limit]

指定した上限値より多いバイト数が出力バッファに含まれている場合、このウィ ンドウからはそれ以上のデータは読み出せない。このデフォルト値は 256 で ある。(xterm のように)高速なディスプレイを使っている場合には、これに多 少大きい値を設定することができる。引き数を指定しなければ、現在の設定が 表示される。

other

前に表示されていたウィンドウに切り替える。

partial on|off

現在のウィンドウに切り替えた後、(redisplay を使ったように)画面を リフレッシュするかどうかを定義する。このコマンドが効果を及ぼすのは現在 のウィンドウだけである。すぐにウィンドウ全てに効果を及ぼすには、 allpartial コマンドを用いること。デフォルト値は当然 `off' である。 このデフォルト値は固定である。というのも、現在は defpartial コマ ンドがないからである。

password [crypted_pw]

".screenrc" ファイル中に暗号化されたパスワードを置き、 誰かがデタッチされたセッションを再開しようとすると必ず screen はこれに関する認証を行うようにする。これは特権を持つプログラムを screen 下で動作させていて、自分の UID を偽装した誰か(つまりスーパーユーザ)が そのセッションを再アタッチすることを防ぎたい場合に便利である。 暗号化されたパスワードが指定されていない場合、 screen は 2 度パスワードの入力を求め、これを暗号化したものを ペーストバッファに置く。デフォルト値は `none' であり、パスワードの確認 は無効になっている。

paste [registers [dest_reg]]

指定されたレジスタの(連結された)内容を現在のウィンドウの標準入力のキュー に書き込む。レジスタ '.' はペーストバッファとして扱われる。パラメータ が全く与えられていない場合、ペーストを行うレジスタ 1 つの問い合わせが ユーザに対して行われる。 ペーストバッファは copy, history, readbuf コマンドで 埋めることができる。他のレジスタは register, readreg, paste コマンドで埋めることができる。 2 番目の引き数で paste が呼び出された場合、指定されたレジスタの 内容はそのウィンドウではなく、指定された出力先レジスタにペーストされる。 2 番目の引き数として '.' を用いると、そのディスプレイのペーストバッファ が出力先となる。 "paste" は幅広いな種類のリソースを使う点に注意すること: 2 番目の引 き数が指定されていれば、現在のウィンドウは必要ない。入力元指定に (ペーストバッファではなく)レジスタしか含まれなければ、現在の ディスプレイ(アタッチされている端末)は必要ない。というのも、レジスタは グローバルなリソースだからである。ペーストバッファはユーザごとに 1 つ ずつしか存在しない。

pastefont [on|off]

フォント情報をペーストバッファに含めるよう screen に指示する。デフォル トではこれは行われない。このコマンドが特に役立つのは、漢字のように 文字フォントが複数個ある場合である。

pow_break

ウィンドウの端末ラインを再オープンし、ブレーク信号を送る。 `break' を参照すること。

pow_detach

強制デタッチ。基本的には detach と同じだが、 screen の親プロセスにも HANGUP シグナルを送る。 注意: screen がログインシェルから実行されているときには、これによりログアウトするこ ととなる。

pow_detach_msg message

「強制デタッチ」が行われるときに必ず、ここで指定した message が出力される。これはログアウトメッセージの代わりやボーレートの リセット等に用いることができる。

prev

現在のウィンドウの次に小さい番号を持つウィンドウに切り替える。このコマ ンドを繰り返し用いて、ウィンドウのリストを循環させることができる。

printcmd [cmd]

cmd が空文字列でない場合、ANSI 印刷シーケンス ESC [ 5 i が検出されても screen は端末機能 "po/pf" を使わず、その出力を cmd にパイプする。 これは通常、"lpr" や "'cat > /tmp/scrprint'" のようなコマンド のはずである。コマンド指定なしで printcmd を実行すると、現在の設定が表示される。ANSI のシーケンス ESC \ は印刷を終わらせ、パイプを閉じる。
警告: このコマンドは注意して使うこと! 他のユーザが端末の書き込み 権限を持っていると、印刷コマンドを勝手に発行することができる。

process [key]

指定されたレジスタの内容を screen の入力キューに入れる。引き数を 与えなければ、ユーザはレジスタ名を聞かれる。テキストはユーザがキーボー ドから入力したかのように解析される。このコマンドを用いると、複数の動作 を 1 つのキーに割り当てることができる。

quit

全てのウィンドウを kill し、 screen を終了する。VT100 形式の端末では、C-4 キーと C-\ キーは同じものである 点に注意すること。そのため、デフォルトの割り当ては危険である: ウィンドウ番号 4 を選択するときに、C-a C-4 と入力しないように注意する こと。キー割り当てを削除するには、空の bind コマンドを使うこと ("bind '^\'" など)。

readbuf

現在の画面交換ファイルの内容をペーストバッファに読み込む。 "bufferfile" コマンドも参照すること。

readreg [register [filename]]

引き数の数に従って、2 つの動作のうちどちらかを行う: 引き数が 0 個また は 1 個の場合には、ペーストバッファの内容を指定されたレジスタまたはユー ザに問い合わせたレジスタに複製する。引き数が 2 つの場合には、指定され たファイルの内容をレジスタに読み込む。これは、readbuf が 画面交換ファイルをペーストバッファに読み込むのとよく似ている。 以下の例はシステムのパスワードファイルを画面にペーストするものである( レジスタ p を用いている。これはコピーが残るレジスタである):

	C-a : readreg p /etc/passwd
	C-a : paste p

redisplay

現在のウィンドウを再表示する。部分再描画モード時に画面全体を書き直す場 合に必要となる。

register key string

指定された string をレジスタ key に保存する。"paste" コマンドも参照すること。

removebuf

"writebuf" コマンドと "readbuf" コマンドが使う画面交換ファイル を削除する。

reset

仮想端末を"電源投入状態"の値にリセットする。アプリケーションが設定 (スクロール領域やグラフィック文字集合など)をおかしくした場合に役に立つ。

screen [-opts] [n] [cmd [args]]

新しいウィンドウを作る。 フロー制御オプション(-f, -fn,-fa)、 タイトル(別名)オプション(-t)、 ログインオプション(-l, -ln)、 端末タイプオプション(-T <term>)、 スクロールバックオプション(-h <num>) をコマンドごとに指定することができる。 0 から 9 の範囲で数値 n を与えると(これは省略可能)、新しく生成さ れるウィンドウにウィンドウ番号 n が割り当てられる(この番号が既に 使用中ならば、その次に利用可能な番号が使われる)。"screen" の後にコ マンドが指定されている場合には、このコマンドは(指定された引き数付きで) ウィンドウ内で実行される。コマンドが指定されていなければ、シェルが生成 される。 したがって、".screenrc" に以下のような行がある場合には、

	# example for .screenrc:
	screen 1
	screen -fn -t foobar 2 telnet foobar

screen はシェルウィンドウを(番号 1 のウィンドウに)と、マシン foobar に telnet 接続を行うウィンドウ(フロー制御は行わず、タイトルは "foobar", ウィンドウ番号は 2 である)を生成する。以前のバージョンの screen と異なり、"screen" コマンドが ".screenrc" ファイルに含まれてい る時には追加のデフォルトウィンドウが生成されない点に注意すること。 初期化が終了すると、 screen は .screenrc ファイルで指定した最後のウィンドウに切り替える。ただしウィ ンドウが指定されていない場合には、デフォルトの番号 0 ウィンドウを開く。

scrollback num

現在のウィンドウについて、スクロールバックバッファの大きさを num 行に設定する。デフォルトのスクロールバックは 100 行である。 "defscrollback" コマンドも参照すること。また、現在の設定を確認する には "C-a i" を用いること。

select [n]

番号 n のウィンドウに切り替える。ウィンドウ番号が指定されていな ければ、ユーザに識別子の問い合わせを行う。これにはタイトル(文字列での ウィンドウ名)または番号を指定することができる。新しいウィンドウが生成 されると、利用可能な最初の数がこのウィンドウに割り当てられる。 したがって、最初のウィンドウは "select 0" で呼び出すことができる( screen のコンパイル時に MAXWIN に大きい値を設定していなければ、10 個より多く のウィンドウを同時に開くことはできない)。

sessionname [name]

現在のセッションの名前を変更する。"screen -list" に対して、プロセ ス ID と共にこの名前が表示される点に注意すること。引き数 "name" を 省略すると、このセッションの名前が表示される。注意: この変更後も、 環境変数 $STY は古い名前を反映したままである。これにより混乱が起こるか もしれない。デフォルト値は tty とホスト名から作られる。

setenv [var [string]]

環境変数 var の値に string を設定する。var だけが指 定されるとプロンプトが表示され、値の入力がユーザに求められる。パラメー タが全く指定されていなければ、変数名と値の両方がユーザに問い合わせられ る。この環境変数は、設定以降に fork される全てのシェルに継承される。

shell command

新しいシェルを生成するために使うコマンドを設定する。これは環境変数 $SHELL の値を上書きする。これは $SHELL で指定されているプログラムを実 行することになっている tty 強化プログラムを実行させたい時に便利である。 コマンドの最初の文字が '-' ならば、シェルはログインシェルとして起動さ れる。

shelltitle title

起動時や C-A C-c コマンドで生成されたシェル全てについてタイトルを設定 する。タイトルに関する詳しい説明については、 "タイトル (ウィンドウへの命名)" という題のセクションを参照すること。

silence [on|off|sec]

ウィンドウが静かなことを監視するかどうかをトグルさせる。silence が有効 であり、かつ効果を受けるウィンドウがバックグラウンドに回されたとき、 指定された期間の間アクティビティがなければ(すなわち静かであれば)ユーザ に対して静かであることを通知するメッセージがステータス行に表示される。 デフォルトのタイムアウトは `silencewait' あるいは `on' や `off' の代わ りに秒数を指定することで変更することができる。 初期状態では、全てのウィンドウについて silence はオフである。

silencewait sec

アクティビティがないかどうか監視されている全てのウィンドウについて、メッ セージを表示するまでに待つべき時間を定義する。デフォルト値は 30 秒である。

sleep num

このコマンドは、num 秒の間 .screenrc ファイルの実行を一時停止さ せる。キーボード入力があると sleep は終了する。これを用いると、 "echo" による出力を読む機会をユーザに与えることができる。

slowpaste usec

paste コマンド("C-a ]")によってテキストが挿入する時の速さを定義する。 slowpaste の値が 0 でなければ、テキストは 1 文字ずつ書き込まれる。 screen は 1 文字書き込むたびに usec ミリ秒停止し、アプリケーションがこ の入力を処理する時間を与える。slowpaste コマンドは、大量のテキストをペー ストしたときにフロー制御の問題が起こるシステムだけで用いること。

sorendition [attr [color]]

テキストのマーキングや印刷のメッセージに対して screen が行うハイライト 表示のさせかたを変更する。 Attr は 16 進数の値であり、テキストに与えられる属性(反転、下線など)を記述す る。 color は 2 桁の数値であり、ハイライト表示されるテキストの前景色/背景色を変更 する。文字を好きなように表示させるためには、screen における文字の 内部表現をある程度知っている必要がある。現在のデフォルト値は 10 99(標準出力、デフォルトの色)である。

startup_message on|off

起動時に著作権表示を表示するかどうかを選ぶ。デフォルト値は `on' なので、 ユーザは多分これを見せられているだろう。

stuff string

文字列 string を現在のウィンドウの入力バッファに置く。これは "paste" コマンドと 似ているが、オーバーヘッドはこちらの方が小さい。"stuff" コマンドで は大きなバッファをペーストすることはできない。このコマンドが最も役に立 つのは、キー割り当ての時である。"bindkey" も参照すること。

suspend

screen をサスペンドさせる。 screen がサスペンドされている間は、ウィンドウは「デタッチされた」状態となる。 この機能は、シェルがジョブ制御の機能を持っていることを前提としている。

term term

screen がオープンしている各ウィンドウの環境において、 $TERM 変数にはデフォル トで "screen" が設定される。 しかし、ローカルの termcap または terminfo データベースに "screen" 用の記述がインストールされていないときには、$TERM には - つまり - "vt100" を設定すること。これならばあまり問題は起きな いだろう。というのも、 screen は VT100/ANSI 互換だからである。 デフォルト値設定以外の目的で "term" コマンドを使うのは避けたほうが よい。つまり、次の "screen rlogin othermachine" コマンドのために特 殊な $TERM の設定(vt100 等)を指定したいような場合である。このような場 合には、デフォルト値を再設定するのではなく、 "screen -T vt100 rlogin othermachine" のようなコマンドを用いること。

termcap term terminal-tweaks [window-tweaks]
terminfo term terminal-tweaks [window-tweaks]
termcapinfo term terminal-tweaks [window-tweaks]

独自の termcap エントリを作るという面倒な作業を行わずに端末の termcap エントリを修正するには、このコマンドを使うこと。 加えて、そのウィンドウに対して生成された termcap をオプション的に カスタマイズすることもできる。 使っているシステムが termcap でなく terminfo データベースで動作する場 合には、 screen は `terminfo' コマンドを認識する。このコマンドの効果は `termcap' コマ ンドと同じである。2 つの異なるコマンドが提供されているが、文法的な違い はあまりない。 これは例えば、(`%' を用いた)パラメータ挿入の場合などである。 機能の termcap 名は `terminfo' コマンドでも使わなければならない点に注 意すること。
多くの場合、引き数は terminfo と termcap どちらの文法でも有効なので、 `termcapinfo' コマンドを使うことができる。このコマンドは単に、 同じ引き数を取る `termcap' コマンドと `terminfo' コマンドの組をまとめ て使えるようにしたものである。

最初の引き数は、この定義でどの端末(複数可)に影響を与えるのかを指定する。 端末名を `|' で区切ることにより、複数の端末を指定することができる。 全ての端末にマッチさせるには `*' を用い、"vt" で始まる全ての端末に マッチさせるには `vt*' を用いること。

各 tweak 引き数は、適切な termcap エントリの先頭に挿入する 1 つ 以上の termcap 定義(`:' で区切る)を持つ。これはエントリを改善したり、 既定の値を上書きしたりする。 最初の変更は使っている端末の termcap を修正するもので、使っている端末 が何らかの機能を実行するために使う定義を含む。 これを変更しないのならば空文字列を指定すること('' 等)。 2 番目の(省略可能な)変更は、全てのウィンドウの termcap を変更するもの で、 screen が理解する定義を含まなければならない("仮想端末"セクションを参照す ること)。

例をいくつか示す:

    termcap xterm* LP:hs@

これは、 `xterm' で始める全ての端末はしっかりした自動マージン機能を持っており、 画面の最後の位置を更新することができる(LP)が、実際にはステータス行を持っ ていないこと('hs' がない - エントリを無効にするには `@' を追加する)を screen に知らせる。 screen は "vt" で始める全ての端末名について `LP' があるものと想定 しているが、これはその端末に対して termcap コマンドを指定していない場 合だけである点に注意すること。

    termcap vt* LP
    termcap vt102|vt220 Z0=\E[?3h:Z1=\E[?3l

最初の行は `vt' で始まる全ての端末について確実にマージン機能が動作する `LP' 機能があることを教える。次の行は、端末が VT102 または VT220 な らば 132 文字/行モードにしたり(Z0)、これを解除する(Z1) エスケープシーケンスを追加する。 (画面幅変更コマンドを用いるには、termcap 中に Z0 と Z1 を指定しなけれ ばならない。)

    termcap vt100 "" l0=PF1:l1=PF2:l2=PF3:l3=PF4

これは VT100 の termcap はそのままにしておき、各ウィンドウの termcap エントリにファンクションキーのラベルを追加する。

    termcap h19|z19 am@:im=\E@:ei=\EO dc=\E[P

h19 または z19 termcap を選び、自動マージンを無効にし(am@)、挿入モード (im)と挿入終了(ei)機能を有効にする(`im' の文字列中の `@' は `=' の後に あるので、この文字列の一部である)。 `im' と `ei' の定義を使っている端末の termcap に入れると、 screen は各ウィンドウの termcap 中の文字挿入機能を自動的に告知する。 各ウィンドウは termcap に追加された文字削除機能(dc)も取得する。 screen はこれを端末に対する行更新機能に変換する(ここでは、文字削除をサポート していないものとする)。

各ウィンドウの termcap エントリを全て定義したければ、このコマンドを用 いるのではなく、 screen を実行する前に $SCREENCAP 変数を設定すること。 termcap の定義に関する詳しい情報については、このマニュアルの"仮想端 末"について説明と、オンラインマニュアルの termcap(5) を参照すること。

time

メッセージ行を用いて、時刻、ホスト名、1, 5, 15 分間のロードアベレージ (使っているシステムでこれが利用可能であれば)を表示する。ウィンドウ固有 の情報については "info" を用いること。

title [windowalias]

現在のウィンドウの名前に windowalias を設定する。名前が指定され なければ、 screen はユーザに入力を求める。このコマンドは過去のリリースでは `aka' コマン ドとして知られていたものである。

unsetenv var

環境変数の設定を取り消す。

vbell on|off

可視ベルの設定をこのウィンドウに対して行う。使っている端末が可視ベルを サポートしていなければ、`vbell-message' がステータス行に表示される。 termcap 変数 `vb' (terminfo では 'flash') を参照すること。

vbell_msg message

可視ベルのメッセージを設定する。ウィンドウがベル文字 (^G) を受け取り、 かつ vbell に "on" が設定されているならば、message がステー タス行に表示される。 デフォルトのメッセージは `"Wuff, Wuff!!"' である。

vbellwait sec

screen の可視ベルメッセージが表示された後の待ち時間を定義する。 デフォルト値は 1 秒である。

version

現在のバージョンとコンパイルされた日時をステータス行に表示する。

wall message

全てのディスプレイにメッセージを書き込む。このメッセージは端末の ステータス行に現れる。

width [num]

ウィンドウの幅を 80 と 132 カラムの間でトグルさせるか、あるいは引き数 を指定して num カラムに設定する。幅の変更の機能を持つ端末と、 termcap エントリ "Z0", "Z1" が必要である。 詳しい情報については "termcap" コマンドを参照すること。

windows

メッセージ行を使って全てのウィンドウの一覧を表示する。 ウィンドウは番号順に並べられ、ウィンドウ中で起動されたプロセスの名前 (またはウィンドウのタイトル)もそれぞれ同時に表示される。 現在のウィンドウには `*' が付けられる。 前のウィンドウには `-' が付けられる。 "ログイン"されている全てのウィンドウには `$' が付けられる。 ベル文字を受け取っているバックグラウンドウィンドウには `!' が付けられ る。 監視されており、アクティビティが検出されたバックグラウンドウィンドウに は `@' が付けられる。 ログ出力が有効になっているウィンドウには `(L)' が付けられる。 他のユーザが占有しているウィンドウには `&' が付けられる。 ゾンビ状態のウィンドウには `Z' が付けられる。 この一覧が長すぎて端末のステータス行で表示できなければ、現在の ウィンドウの近辺だけが表示される。

wrap [on|off]

現在のウィンドウに対して、行の折り返しの設定を行う。 行の折り返しが有効ならば、ある行の最後のカラムにあり、次の行に続く 2 番目の表示可能文字の出力は、次の行の先頭へ折り返される。 追加の機能として、バックスペース (^H) も画面の左端から前の行に折り返し で戻る。デフォルト値は `on' である。

writebuf

ペーストバッファの内容を誰でもアクセスできる画面交換ファイルに書き出す。 これは、同じホスト上の screen のユーザ間がやりとりするための単純な手段として用意されている。ファイル 名は bufferfile コマンドで設定することができ、そのデフォルト値は "/tmp/screen-exchange" である。

writelock [on|off|auto]

アクセス制御リストによる制限とは別に、必ずしも全てのユーザが同じウィン ドウに同時に書き込みできるわけではない。デフォルトでは、書き込みロック は `auto' モードになっており、ある特定のウィンドウに最初に切り替えたユー ザに排他的な入力パーミッションが与えられるようになっている。このユーザ がそのウィンドウを離れると、他のユーザが(自動的に)書き込みロックを得る ことができる。現在のウィンドウの書き込みロックは "writelock off" コマンドで無効となる。ユーザが "writelock on" コマンドを発行すると、 そのユーザは他のウィンドウに切り替えている間も 排他的な書き込みパーミッションを保持し続ける。

xoff
xon

CTRL-s / CTRL-q 文字を現在のウィンドウの標準入力キューに挿入する。

zombie [keys]
defzombie [keys]

デフォルトでは screen のウィンドウはユーザのプロセス(シェル等)が終了すると即座に削除される。 2 つのキーからなる文字列が zombie コマンドに対して指定されると、 「死んだ」ウィンドウもリスト中に残る。 kill コマンドを用いるとこのようなウィンドウを削除することができ る。死んだウィンドウ内で 1 番目のキーを押すと同じ効果が得られる。 2 番目のキーが押されると、screen はこのウィンドウを復活させようとする。 つまり、このウィンドウで最初に実行されたプロセスが再び起動される。 パラメータを指定せずに zombie コマンドを呼び出すと、zombie の設 定がクリアされ、したがってウィンドウは内部のプロセスが終了したときに消 えるようになる。 zombie の設定は全てのウィンドウに対してグローバルに操作されるので、こ のコマンドは defzombie としてのみ呼ぶべきである。ただしウィンド ウごとの設定を必要とならない限り、zombie コマンドと defzombie コマンドは同じものである。

メッセージ行
screen は情報メッセージやその他の診断メッセージをメッセージ行に表示する。 この行は画面の一番下に配置されているが、コンパイル時の設定で画面の一番 上に現れるように定義することができる。 termcap で定義されているステータス行が使っている端末にある場合、 screen はこれをメッセージ表示に用いる。それ以外の場合には、現在の画面のうち 1 行が一時的に上書きされ、瞬間的に出力への割り込みが起こる。何秒か待った 後、このメッセージ行は自動的に消されるが、(ステータス行の無い端末では) キー入力を行えばすぐに消すこともできる。

メッセージ行の仕組みは、ANSI の プライバシーメッセージ(Privacy message)制御シーケンスを使って、 現在のウィンドウで動作中のアプリケーションからも利用することができる。 例えば、シェルで以下のコマンドを試してみること:

    echo '<esc>^Hello world from window '$WINDOW'<esc>\\'

ここで '<esc>' は エスケープ文字 であり、'^' は上矢印キーである。 また、'\\' はバックスラッシュ 1 つに置き換えられる。

フロー制御
各ウィンドウにはフロー制御の設定がある。これは、 screen が XON 文字と XOFF 文字(多分、割り込み文字も)をどのように扱うのかを決 める。 フロー制御が無効になっている時は screen は XON 文字と XOFF 文字を無視する。この場合、ユーザは単にこれらの文字 を入力するだけで実行中のプログラムに送ることができる(例えば、 emacs エディタ等ではこの設定が便利である)。 その代わり、XOFF への応答として "普通の"プログラムからの出力が 一時停止するまでには比較的時間がかかる。 フロー制御が有効になっている時は、XON 文字と XOFF 文字を使って現在のウィ ンドウの出力を即座に止めることができる。 この場合でも XON 文字や XOFF 文字を実行中のプログラムに送ることはでき るが、適切な screen の 2 文字コマンドを使わなければならない(普通は "C-a q" (xon) と "C-a s" (xoff) である)。 xon/xoff コマンドは、C-s と C-q を横取りしてしまう古い端末でこのような 文字を入力する場合にも役立つ。

各ウィンドウのフロー制御に関する初期値は、 -f オプションまたは .screenrc コマンドの "defflow" で設定される。デフォ ルトでは、各ウィンドウには自動フロー切り替えモードが設定される。 その後、"C-a f" に割り当てられた "flow" を用いることで、この値を対 話的に 'fixed on', 'fixed off', 'automatic' の 3 つの状態間でトグルさ せることができる。

自動フロー切り替えモードは("rlogin" のように) TIOCPKT モードを用い てフロー制御を扱う。tty ドライバが TIOCPKT をサポートしていない場合、 screen はアプリケーションテンキーの現在の状態に基づいて正しいモードを見つけよ うとする。つまり、これが有効ならばフロー制御は無効であり、その逆も同じ である。もちろん、必要ならば手動でフロー制御を操作することもできる。

フロー制御を有効にしているにもかかわらず、割り込みキー(通常は C-c)を押 しても 6-8 行スクロールするまで表示に割り込みがかからない場合には、 "interrupt" オプションを与えて screen を起動してみること(.screenrc で "flow" コマンドに "interrupt" フラグを追加するか、コマンドラインオプションの -i を用いる)。 これにより、 screen が割り込みを受けるプログラムから受け取って蓄積している出力が フラッシュされるようになる。 これを行うことの欠点は、フラッシュされていないバージョンの出力が仮想端 末のメモリに含まれることである。これにより、出力に多少不正確な部分が現 れることが稀に起こる。 例えば、画面の切り替えと復帰を行ったり、"C-a l" を使って画面の更新 を行った場合、"interrupt" をオンにしていなかった場合に得られたはず の出力を得る。 また、割り込み文字を入力として期待するプログラムを実行する際には、フロー 制御を無効にする(あるいはこれを自動的に無効にするために自動フロー制御 モードを用いる)必要があるかもしれない。というのも、フロー制御が有効で ある時は、仮想端末から物理端末への出力に割り込みがかかることがあり得る からである。 このようになった場合も、"C-a l" を行って単に画面をリフレッシュすれ ば元に戻るはずである。各モードを試してみて、一番都合が良いと思ったもの を使うとよいだろう。

タイトル(ウィンドウへの命名)
ウィンドウ表示に現れる各ウィンドウの名前("windows" コマンド(C-a w) で表示される)は、title コマンドのいずれかを用いて設定を行うことにより カスタマイズすることができる。この名前は通常、ウィンドウ内で生成される プログラムの実際のコマンド名である。 しかし、同じ名前の複数のプログラムを区別したいときや、ウィンドウの現在 の状態を実行中に名前に反映させたい時にこの機能が便利なこともある。

シェルウィンドウ全てのデフォルト名は .screenrc ファイル中の "shelltitle" コマンドで設定することができる。一方、他のウィンドウ は全て "screen" コマンドで生成されるので、 -t オプションを使って名前を設定することができる。 対話的に行うものとしては、タイトル文字列用エスケープシーケンス (<esc>kname<esc>\)と "title" コマンド(C-a A)がある。 前者はアプリケーションからの出力として使い、ソフトウェアからの制御でウィ ンドウの名前を変更させることができる。後者は入力時に名前の入力をユーザ に求める。予め定義した名前を "title" コマンドのキーに割り当ててお いて、入力なしに即座に設定を行わせることもできる。

最後に、 screen にはシェルの場合にのみ使われるヒューリスティックなタイトル指定方法があ る。これはウィンドウの名前に "search|name" を設定し、プロンプト の一部として出力される空のタイトルエスケープシーケンス持たせることによ り有効となる。 search の部分は、プロンプトの終了部分である検索文字列を指定する。 一方、name の部分はそのウィンドウに対するデフォルトのシェル名を 指定する。name が `:' で終わる場合、 screen は、そのウィンドウで現在実行中のコマンドと認識しているものをウィンドウ のシェル名の最後に追加する(例: "name:cmd")。それ以外の場合に は、コマンドの実行中にはそのコマンド名がシェル名を上書きする。

以下にその動作を示す: ユーザはシェルのプロンプトを変更して、空の タイトルエスケープシーケンス(<esc>k<esc>\)がプロンプトの一部として出 力されるようにしなければならない。プロンプトの最後の部分は、 タイトルの search 部分に指定した文字列と同じでなければならない。 この設定が終わると、 screen はタイトルエスケープシーケンスを使って、以前のコマンド名をクリアし、次 のコマンドのための準備を行う。 次に、シェルから改行文字を受け取った時に、プロンプトの終わりまでに対し て検索が行われる。 検索にマッチする部分が見つかると、マッチした文字列の後の最初の単語が 取り出され、これがコマンド名として使われる。 コマンド名が '!', '%', '^' のいずれかで始まる場合、 screen は見つかったばかりの名前ではなく、後の行で出てくる最初の単語を(見つか れば)用いる。 これにより、csh ユーザはジョブ制御や履歴の再呼び出しコマンドを使ったと きにもまともなコマンド名を取得することができる。

以下に .screenrc での指定例をいくつか示す:

    screen -t top 2 nice top

この行を .screenrc に追加すると、ウィンドウ 2 において、nice コマンド でプライオリティが設定された "top" コマンドが "nice" ではなく "top" という名前で起動する。

	shelltitle '> |csh'
	screen 1

このコマンドでは、与えられた shelltitle を持つシェルが起動される。指定 されたタイトルは自動設定タイトルであり、以下のような形のプロンプトと入 力されたコマンドを期待する:

    /usr/joe/src/dir> trn

('> ' の後の部分がコマンド名として扱われる。) このコマンドの実行中には、ウィンドウのステータスに "trn" という名 前が表示され、実行が終了するとこれは "csh" に戻る。

    bind R screen -t '% |root:' su

このコマンドが .screenrc に書かれていると、キーシーケンス "C-a R" に対して "su" コマンドが割り当てられ、自動設定タイトル 名として "root:" が与えられる。 この自動タイトル設定を動作させるには、screen は以下のような参照を行え る必要があるだろう:

	% !em
	emacs file.c

ここでは、ユーザは csh の履歴コマンド "!em" を入力している。これは、 前に入力した "emacs" コマンドを実行するものである。 このコマンドの実行中には、ウィンドウのステータスには "root:emacs" が表示され、実行の終了時には "root:" だけの表示に戻る。

	bind o title
	bind E title ""
	bind u title (unknown)

最初の割り当てには全く引き数がないので、ユーザに対してタイトルの問い合 わせが行われる("C-a o" を入力した時と同様)。 2 番目の割り当ては現在の自動タイトル設定をクリアする(C-a E)。 3 番目の割り当ては現在のウィンドウのタイトルに "(unknown)" を設定 する(C-a u)。

空のタイトルエスケープシーケンスをプロンプトに追加する際に注意すべき点 として、一部のシェル(csh など)は制御文字でない文字も全てプロンプトの一 部として数える点がある。 このような表示されない文字の数が 8 の倍数でないと、バックスペースで タブを消した時の表示がおかしくなる。 これを回避する方法の 1 つは、以下のようなプロンプトを使うことである:

    set prompt='^[[0000m^[k^[\% '

エスケープシーケンス "<esc>[0000m" は文字の属性を統一するだけでな く、表示されない文字の長さを 0 を使って 8 個に合わせる。 bash ユーザは多分、PROMPT_COMMAND 中でエスケープシーケンスを出力するの がよいだろう:

    PROMPT_COMMAND='echo -n -e "\033k\033\134"'

(bash バージョン 1.04 のバグを回避するため、筆者は "134" を使って `\' を出力している)

仮想端末
screen のセッション中のウィンドウはそれぞれ VT100 端末をエミュートしている。 さらに追加の機能もいくつか追加されている。VT100 端末は ハードコーディングされており、他の種類の端末をエミュレートすることはで きない。
通常、 screen はできる限り VT100/ANSI の標準をエミュレートしようとする。しかし、端末 が特定の機能を持っていない場合には、エミュレーションが完全でないことも ある。このような場合、 screen は一部の機能が欠けていることをアプリケーションに伝えなければならない。 これは termcap を使っているマシンでは問題にはならない。なぜなら、 screen は $TERMCAP 変数を使って標準の screen の termcap をカスタマイズすることができるからである。

しかし、別のマシンに rlogin した時や、使っているマシンが terminfo しか サポートしていない場合には、この方法はうまくいかない。そのため、 screen にはこのような場合を扱う手段が用意されている。 その動作を以下に示す:

screen は自力で端末名を調べようとする時、まず "screen.<term>" という名前 のエントリを参照する。ここで <term> は $TERM 変数の内容である。このよ うなエントリが存在しない場合、 screen は "screen" (あるいは、端末の幅が広ければ(132 カラム以上)、 "screen-w")を試みる。このエントリも見つからない場合には、 代わりとして "vt100" が使われる。

この考えは、重要な機能(例: 文字の削除や EOS のクリア)をサポートしてい ない端末を使っている場合でも、これらの機能が無効にされている新しい termcap/terminfo エントリ("screen.<dumbterm>" という名前)を screen に対して構築できるというものである。使っているマシンにこのエントリがイ ンストールされていれば、ユーザは rlogin を行っても正しい termcap/terminfo エントリを保持することができる。 端末名は新しいウィンドウ全ての $TERM 変数に設定される。 screen はエミュレートしている仮想端末の機能を反映させた $TERMCAP も設定する。 ただし、terminfo データベースを使っているマシンにはこの変数は効果がな い点に注意すること。また、各ウィンドウのウィンドウ番号はが変数 $WINDOW に設定される。

仮想端末が実際にサポートしている機能の集合は、物理端末がサポートしてい る機能に依存する。そのため、もし例えば、物理端末が下線モードをサポート していなければ、 screen は `us' や `ue' 機能をそのウィンドウの $TERMCAP 変数に設定しない。しかし、 screen を実行するためには、端末は最低限の数の機能をサポートしていなければなら ない。すなわち、スクロール機能、画面クリア、カーソル位置の直接指定が必 要である(さらに、 screen はハードコピー端末や、文字の重ね打ちを行う端末上では動作しない)、

また、ユーザは .screenrc コマンドの "termcap" を用いることや、起動 の前に変数 $SCREENCAP を定義することにより、 screen が用いる $TERMCAP の値をカスタマイズすることができる。これが後から定義 された時には、その値はそのままの形で各ウィンドウの $TERMCAP 変数にコピー される。これは端末の完全な定義または端末 "screen" (および "screen-w")が定義されているファイルの名前のいずれかである。

システムが termcap でなく terminfo データベースを用いている場合には、 screen は .screenrc コマンドの "terminfo" を尊重する点に注意すること。

screen が呼び出された端末について、termcap エントリ中にブール値の `G0' 機能が ある時、 screen の端末エミュレーションは複数の文字集合をサポートする。 これによりアプリケーションは、例えば、VT100 のグラフィックス文字集合や 特定の国の文字集合を利用することができる。 ISO 2022 に含まれるものとしては、以下の制御機能がサポートされている: ロックシフト G0 (SI), ロックシフト G1 (SO), ロックシフト G2, ロックシフト G3, シングルシフト G2, シングルシフト G3. 仮想端末の生成時やリセット時には、ASCII 文字集合が G0 から G3 として指示される。`G0' 機能が存在すれば、 screen は `S0', `E0' 機能を評価し、存在するならば `C0' 機能も評価する。 `S0' は、グラフィックス文字集合を有効にし、開始するために端末が用いる シーケンスである(SI は使わない)。 `E0' はこれに対応して SO の代わりに使うシーケンスである。`C0' は、 セミグラフィックスモード時に使われる、文字ごとの変換文字列を与える。こ の文字列は `acsc' terminfo エントリのように作られる。

`po' 機能と `pf' 機能が端末の termcap エントリに存在するとき、 screen のウィンドウ内で実行されているアプリケーションは出力を端末の プリンタポートに送ることができる。 これを使うと、ユーザは端末に接続されているプリンタに対し、ウィンドウ中 のアプリケーションの出力を送ることができる。この際にも、他のウィンドウ は全てアクティブなままである(一まとまりの出力ごとにプリンタポートは繰 り返し有効/無効にされる)。 この副作用として、別のウィンドウで動作しているプログラムも出力を同時に プリンタに送ることができる。プリンタに送られたデータはウィンドウには表 示されない。

screen はウィンドウごとにハードステータス行を管理する。あるウィンドウが選択さ れると、ディスプレイのハードステータスはウィンドウのハードステータス行 に一致するように更新される。ディスプレイにハードステータスがなければ、 この行は screen の標準メッセージとして表示される。 ハードステータス行は ANSI のアプリケーションプログラムコマンド (Application Program Command, APC) である "ESC_<string>ESC\" を使っ て変更することができる。xterm ユーザへの便宜を図るため、 "ESC]0..2;<string>^G" というシーケンスも使えるようになっている。

一部の機能は、物理端末がうまく実装できている場合だけ仮想端末の $TERMCAP に設定される。 例えば、`dl' (行の削除)は、端末が行削除または領域のスクロールのどちら かをサポートしている場合にだけ $TERMCAP 変数に設定される。 セッションを別の端末から再アタッチした時には、これが混乱の元になりやす いので注意すること。というのも、$TERMCAP の値は親プロセスから変更する ことができないからである。

screen が認識する制御シーケンスの一覧を以下に示す。 "(V)" は VT100 固有の機能であることを示し、"(A)" は ANSI また は ISO 固有の機能であることを示す。

ESC E
    次の行

ESC D
    インデックス

ESC M
    逆順のインデックス

ESC H
    水平タブセット

ESC Z
    VT100 の識別文字列を送る

ESC 7	(V)
    カーソルと属性を保存する

ESC 8	(V)
    カーソルと属性を復元する

ESC [s	(A)
    カーソルと属性を保存する

ESC [u	(A)
    カーソルと属性を復元する

ESC c
    初期状態へのリセット

ESC g
    可視ベル

ESC Pn p
    カーソルの可視制御 (97801)

ESC 'u'Pn = 6
    不可視

ESC Pn = 'u'7
    可視

ESC =	(V)
    アプリケーションテンキーモード

ESC >	(V)
    数値テンキーモード

ESC # 8	(V)
    画面を E で埋める

ESC \	(A)
    文字列の終端子

ESC ^	(A)
    プライベートなメッセージ文字列(メッセージ行)

ESC !
    グローバルなメッセージ文字列(メッセージ行)

ESC k
    定義文字列の別名

ESC P	(A)
    デバイス制御文字列。解釈を行わず、直接ホストの端末に文字列を出力する。

ESC _	(A)
    アプリケーションプログラムのコマンド(ハードステータス)

ESC ]	(A)
    オペレーティングシステムのコマンド(ハードステータス、xterm のタイトル のハック)

Control-N	(A)
    ロックシフト G1 (SO)

Control-O	(A)
    ロックシフト G0 (SI)

ESC n	(A)
    ロックシフト G2

ESC o	(A)
    ロックシフト G3

ESC N	(A)
    シングルシフト G2

ESC O	(A)
    シングルシフト G3

ESC ( Pcs	(A)
    文字集合として G0 を指示

ESC ) Pcs	(A)
    文字集合として G1 を指示

ESC * Pcs	(A)
    文字集合として G2 を指示

ESC + Pcs	(A)
    文字集合として G3 を指示

ESC [ Pn ; Pn H
    カーソルの位置を直接指定する

ESC [ Pn ; Pn f
    カーソルの位置を直接指定する

ESC [ Pn J
    ディスプレイ内部での削除

ESC [ 'u'Pn = None または 0
    カーソル位置からスクリーン末尾まで

ESC [ Pn = 'u'1
    スクリーン先頭からカーソル位置まで

ESC [ Pn = 'u'2
    スクリーン全体

ESC [ Pn K
    行の中での削除

ESC [ 'u'Pn = None または 0
    カーソル位置から行末まで

ESC [ Pn = 'u'1
    行頭からカーソル位置まで

ESC [ Pn = 'u'2
    行全体

ESC [ Pn A
    カーソルを上に移動

ESC [ Pn B
    カーソルを下に移動

ESC [ Pn C
    カーソルを右に移動

ESC [ Pn D
    カーソルを左に移動

ESC [ Ps ;...; Ps m
    グラフィックスの解釈を選択

ESC [ 'u'Ps = None または 0
    通常の解釈を行う

ESC [ Ps = 'u'1
    ボールド

ESC [ Ps = 'u'2	(A)
    薄い色で描画

ESC [ Ps = 'u'3	(A)
    目立たせる モード(ANSI ではイタリック表示)

ESC [ Ps = 'u'4
    下線を引く

ESC [ Ps = 'u'5
    ブリンクさせる

ESC [ Ps = 'u'7
    イメージを反転させる

ESC [ Ps = 'u'22	(A)
    通常の明度

ESC [ Ps = 'u'23	(A)
    目立たせる モードをオフにする(ANSI: イタリック化のオフ)

ESC [ Ps = 'u'24	(A)
    下線を引かない

ESC [ Ps = 'u'25	(A)
    ブリンクしない

ESC [ Ps = 'u'27	(A)
    ポジティブ(反転していない)イメージ

ESC [ Ps = 'u'30	(A)
    前景色を黒にする

ESC [ Ps = 'u'31	(A)
    前景色を赤にする

ESC [ Ps = 'u'32	(A)
    前景色を緑にする

ESC [ Ps = 'u'33	(A)
    前景色を黄色にする

ESC [ Ps = 'u'34	(A)
    前景色を青にする

ESC [ Ps = 'u'35	(A)
    前景色をマゼンタにする

ESC [ Ps = 'u'36	(A)
    前景色をシアンにする

ESC [ Ps = 'u'37	(A)
    前景色を白にする

ESC [ Ps = 'u'39	(A)
    前景色をデフォルト値にする

ESC [ Ps = 'u'40	(A)
    背景色を黒にする

ESC [ Ps = 'u'...

ESC [ Ps = 'u'49	(A)
    背景色をデフォルト値にする

ESC [ Pn g
    タブをクリアする

ESC [ 'u'Pn = None または 0
    現在の位置のタブをクリアする

ESC [ Ps = 'u'3
    全てのタブをクリアする

ESC [ Pn ; Pn r	(V)
    スクロール領域を設定する

ESC [ Pn I	(A)
    水平タブ

ESC [ Pn Z	(A)
    後方タブ

ESC [ Pn L	(A)
    行を挿入する

ESC [ Pn M	(A)
    行を削除する

ESC [ Pn @	(A)
    文字を挿入する

ESC [ Pn P	(A)
    文字を削除する

ESC [ Pn S
    スクロール領域を上にスクロールさせる

ESC [ Pn T
    スクロール領域を下にスクロールさせる

ESC [ Ps ;...; Ps h
    セットモード

ESC [ Ps ;...; Ps l
    リセットモード

ESC [ 'u'Ps = 4	(A)
    挿入モード

ESC [ Ps = 'u'20	(A)
    自動ラインフィードモード

ESC [ Ps = 'u'34
    通常のカーソル表示

ESC [ Ps = 'u'?1	(V)
    アプリケーションカーソルキー

ESC [ Ps = 'u'?3	(V)
    端末の幅を 132 カラムに変更

ESC [ Ps = 'u'?5	(V)
    ビデオ反転

ESC [ Ps = 'u'?6	(V)
    オリジンモード

ESC [ Ps = 'u'?7	(V)
    折り返しモード

ESC [ Ps = 'u'?25	(V)
    可視カーソル

ESC [ 5 i	(A)
    プリンタへのリレーを開始する(ANSI の Media Copy シーケンス)

ESC [ 4 i	(A)
    プリンタへのリレーを止める(ANSI の Media Copy シーケンス)

ESC [ 8 ; Ph ; Pw t
    ウィンドウを `Ph' 行、`Pw' カラムにサイズ変更する(SunView 用の特別シー ケンス)

ESC [ c
    VT100 識別文字列を送る

ESC [ x
    端末パラメータ報告を送る

ESC [ > c
    VT220 のセカンダリデバイス属性文字列を送る

ESC [ 6 n
    カーソル位置の報告を送る

入力の変換
VT100 のエミュレーションを完全に行うため、screen は ユーザがキーを押したことによって入力ストリーム中に文字のシーケンスが生 成されたことを検出し、VT100 形式のエスケープシーケンスを挿入しなければ ならない。screen は任意のコマンドの任意の文字シーケンスへの割り 当てを可能にすることにより、これを非常に柔軟に行うことができる。標準の VT100 エミュレーションの場合、コマンドは常にウィンドウの入力バッファに 文字列を挿入する(コマンド表の stuff コマンドも参照すること)。 キーを押したことによって生成されたシーケンスは、異なるタイプの端末から 再アタッチした後に変わることがあるので、コマンドをキーの termcap 名に 割り当てすることができるようになっている。これにより screen は 再アタッチの後でも必ず正しい割り当てを挿入できる。詳しい文法と使用例に ついては、bindkey コマンドを参照すること。

以下にデフォルトのキー割り当ての表を示す。(A) は、キーボードが アプリケーションモードに切替えられている場合に実行されるコマンドで あることを示す。

キーの名前	termcap 名	コマンド

カーソルキー上	ku	stuff \033[A
		stuff \033OA	(A)
カーソルキー下	kd	stuff \033[B
		stuff \033OB	(A)
カーソルキー右	kr	stuff \033[C
		stuff \033OC	(A)
カーソルキー左	kl	stuff \033[D
		stuff \033OD	(A)
ファンクションキー 0	k0	stuff \033[10~
ファンクションキー 1	k1	stuff \033OP
ファンクションキー 2	k2	stuff \033OQ
ファンクションキー 3	k3	stuff \033OR
ファンクションキー 4	k4	stuff \033OS
ファンクションキー 5	k5	stuff \033[15~
ファンクションキー 6	k6	stuff \033[17~
ファンクションキー 7	k7	stuff \033[18~
ファンクションキー 8	k8	stuff \033[19~
ファンクションキー 9	k9	stuff \033[20~
ファンクションキー 10	k;	stuff \033[21~
ファンクションキー 11	F1	stuff \033[22~
ファンクションキー 12	F2	stuff \033[23~
テンキー 0	f0	stuff 0
		stuff \033Op	(A)
テンキー 1	f1	stuff 1
		stuff \033Oq	(A)
テンキー 2	f2	stuff 2
		stuff \033Or	(A)
テンキー 3	f3	stuff 3
		stuff \033Os	(A)
テンキー 4	f4	stuff 4
		stuff \033Ot	(A)
テンキー 5	f5	stuff 5
		stuff \033Ou	(A)
テンキー 6	f6	stuff 6
		stuff \033Ov	(A)
テンキー 7	f7	stuff 7
		stuff \033Ow	(A)
テンキー 8	f8	stuff 8
		stuff \033Ox	(A)
テンキー 9	f9	stuff 9
		stuff \033Oy	(A)
テンキー +	f+	stuff +
		stuff \033Ok	(A)
テンキー -	f-	stuff -
		stuff \033Om	(A)
テンキー *	f*	stuff *
		stuff \033Oj	(A)
テンキー /	f/	stuff /
		stuff \033Oo	(A)
テンキー =	fq	stuff =
		stuff \033OX	(A)
テンキー .	f.	stuff .
		stuff \033On	(A)
テンキー ,	f,	stuff ,
		stuff \033Ol	(A)
テンキー Enter	fe	stuff \015
		stuff \033OM	(A)

端末の特殊な機能
以下の表では、screen は認識するが termcap(5) のマニュアルには含 まれていない端末機能を全て示す。 これらの機能は termcap のエントリ(`/etc/termcap')に含めることや、 screenrc ファイル中の `termcap', `terminfo', `termcapinfo' コマンドで 使うことができる。これらの機能は terminfo データベースには入れられない ことが多い。

LP	(bool)
    端末は VT100 形式のマージン(`magic マージン')を持つ。この機能は古くて 使われなくなったことに注意すること。screenP は標準の 'xn' の方を 使うからである。

Z0	(str)
    幅を 132 カラムに変更する。

Z1	(str)
    幅を 80 カラムに変更する。

WS	(str)
    ディスプレイのサイズを変更する。この機能は指定する幅と高さを引き数とし て取る。SunView(tm) における指定例: '\E[8;%d;%dt'

NF	(bool)
    端末はフロー制御を必要としない。アプリケーションに直接 ^S と ^Q を送信 する。'flow off' と同じ意味である。この反対の機能は 'nx' である。

G0	(bool)
    端末は ISO 2022 のフォント選択シーケンスを使用できる。

S0	(str)
    文字集合 'G0' を指定した文字集合に切り替える。デフォルト値は '\E(%.' である。

E0	(str)
    文字集合 'G0' を標準の文字集合に戻す。デフォルト値は '\E(B' である。

C0	(str)
    文字列をフォント '0' の変換テーブルとして使用する。詳しくは 'ac' 機能 を参照すること。

CS	(str)
    カーソルキーをアプリケーションモードに切替える。

CE	(str)
    カーソルキーを通常モードに戻す。

AN	(bool)
    autonuke をオンにする。詳しくは 'autonuke' コマンドを参照すること。

OL	(num)
    出力バッファの上限値を設定する。詳しくは 'obuflimit' コマンドを参照す ること。

KJ	(str)
    端末で使う漢字の種類を設定する。有効な文字列は "jis", "euc", "sjis" である。

AF	(str)
    ANSI 準拠の方法で文字の前景色を変更する。この機能は常に '\E[3%dm' (terminfo を使うマシンでは '\E[3%p1%dm')に設定されるだろう。

AB	(str)
    これは 'AF' とほぼ同じであるが、背景色を変更する。

AX	(bool)
    ANSI のデフォルトの前景色/背景色のセット(\E[39m / \E[49m)を認識する。

XC	(str)
    現在のフォントに基づく、複数個の文字から文字列への変換を記述する。 詳しくは次のセクションを参照すること。

TF	(bool)
    欠けている機能を termcap/terminfo のエントリに追加する(デフォルトで設 定されている)。

文字の変換
screen には、現在のフォントや端末の種類に基づいて複数の文字を任 意の文字列に変換する強力な機構がある。いくつかの国のフォントページでは おかしな文字が現われる端末であっても、共通の標準文字集合 (ISO8851-latin1 など)を使って screen を動作させたい場合にはこの機能を 用いること。 文法:
    XC=<charset-mapping>{,,<charset-mapping>}
    <charset-mapping> := <designator><template>{,<mapping>
}
    <mapping> := <char-to-be-mapped><template-arg>
ブレース内のものは何回でも繰り返すことができる。 <charset-mapping> は、フォント指示子 <designator> ('B': ASCII, 'A': イギリス語, 'K': ドイツ語など)に含まれる文字どのように文字 列にマップさせるかを screen に指示する。それぞれの <mapping> では、1 つの文字をどんな文字列にマップさせるかを記述す る。ここでテンプレート機構が使われる。というのも、大抵の場合にコードが 共通部分を多く持つからである(例えば、切り替わる先の文字列と別の文字集 合の文字列)。<template> に '%' があると、これは全てその文字と一 緒に指定された <template-arg> に置き換えられる。指定したい文字列 が全く似ていない場合には、'%' をテンプレートとして用い、文字列全体は <template-arg> に置くこと。'%' そのものも使えるようにするため、 クォート機構も後で追加された。'\' は特殊文字 '\', '%', ',' をクォー トする。 以下に指定例を示す:
    termcap hp700 'XC=B\E(K%\E(B,\304[,\326\\\\,\334]' これは、ISOlatin1(文字集合 'B')のウムラウト付きの大文字を、ドイツ語の 文字集合を持つ HP700 端末向けに変換する方法を screen に対して指 示する。'\304' は '\E(K[\E(B' に変換され、他も同様である。この行は 内部参照テーブルが構築されるまでに * 3 回 * 展開されるため、1 つ の '\' を生成するには何度もクォートする必要がある点に注意すること。 さらに多くのエミュレーションができるように、別の拡張も加えられている: クォートされていない '%' がマッピングで変換された場合、screen が 対応する <designator> に切り替わるとこれは必ず端末に送られる。こ の特殊な場合には、テンプレートは単に '%' であるものとされる。というの も、文字集合切替えシーケンスと文字マッピングは普通、あまり共通部分を持 たないからである。 以下の指定例は、この拡張の使い方の 1 つを示したものである:
    termcap xterm 'XC=K%,%\E(B,[\304,\\\\\326,]\334' この例では、ドイツ語('K')文字集合の一部が xterm 上でエミュレートされる。 screen が文字集合 'K' に切り替わらなければならない場合、'\E(B' が端末に送られる。つまり、ASCII 文字集合がドイツ語文字集合の代わりに使 われる。テンプレートはただ '%' だけであり、したがってマッピングは単純 である: '[' は '\304' に、'\' は '\326' に、']' は '\334' にマッピ ングされる。

環境変数
COLUMNS
    端末のカラム数(termcap エントリを上書きする)。
HOME
    ファイル .screenrc を探すディレクトリ。
ISCREENRC
    別のユーザ用 screenrc ファイル。
LINES
    端末の行数(termcap エントリを上書きする)。
LOCKPRG
    画面をロックするプログラム。
NETHACKOPTIONS
    nethack オプションを有効にする。
PATH
    実行するプログラムの位置を知るために使う。
SCREENCAP
    端末の TERMCAP 値のカスタマイズ用。
SCREENDIR
    別のソケットディレクトリ。
SCREENRC
    別のユーザ用 screenrc ファイル。
SHELL
    ウィンドウをオープンした時のデフォルトのシェルプログラム(デフォルト値 は "/bin/sh")。
STY 別のソケットファイル。
SYSSCREENRC
    別のシステム用 screenrc ファイル。
TERM
    端末名。
TERMCAP
    端末記述。

ファイル
$SYSSCREENRC
/local/etc/screenrc
    screen の初期化コマンド
$ISCREENRC
$SCREENRC
$HOME/.iscreenrc
$HOME/.screenrc
    /local/etc/screenrc の後に読み込まれる
$ISCREENDIR/S-<login>
$SCREENDIR/S-<login>
/local/screens/S-<login>
    ソケットディレクトリ(デフォルト)
/usr/tmp/screens/S-<login>
    別のソケットディレクトリ
<socket directory>/.termcap
    "termcap" 出力関数が書き込む
/usr/tmp/screens/screen-exchange
/tmp/screen-exchange
    screen の「プロセス内通信バッファ」
hardcopy.[0-9]
    hardcopy 関数が生成する画面イメージ
screenlog.[0-9]
    log 関数が生成するログファイル
/usr/lib/terminfo/?/*
/etc/termcap
    端末機能データベース
/etc/utmp
    ログイン記録
$LOCKPRG
    端末をロックするプログラム

関連項目
termcap(5), utmp(5), vi(1), captoinfo(1), tic(1)

著者
最初に作成したのは Oliver Laumann であり、最新版を作ったのは Wayne Davison, Juergen Weigert, Michael Schroeder である。

コピーレフト
Copyright (C) 1993
	Juergen Weigert (jnweiger@immd4.informatik.uni-erlangen.de)
	Michael Schroeder (mlschroe@immd4.informatik.uni-erlangen.de)
Copyright (C) 1987 Oliver Laumann
このプログラムはフリーソフトウェアである。このプログラムは Free Software Foundation が公開している GNU General Public License (バージョン 2, または(選択によっては)それ以降の任意のバージョン)の条項 に従って再配布や改変が可能である。
このプログラムは有用であると考えて配布しているが、保証は一切行わない。 商業利用性や特定目的適合性の暗黙の保証も行わない。詳しくは GNU General Public License を参照すること。
読者の皆さんはこのプログラムに付属している GNU General Public License を既に入手しているはずである(COPYING ファイ ルを参照)。もし入手していなければ、 Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA に連絡すること。

コントリビュータ
Ken Beal (kbeal@amber.ssd.csd.harris.com),
Rudolf Koenig (rfkoenig@immd4.informatik.uni-erlangen.de),
Toerless Eckert (eckert@immd4.informatik.uni-erlangen.de),
Wayne Davison (davison@borland.com),
Patrick Wolfe (pat@kai.com, kailand!pat),
Bart Schaefer (schaefer@cse.ogi.edu),
Nathan Glasser (nathan@brokaw.lcs.mit.edu),
Larry W. Virden (lvirden@cas.org),
Howard Chu (hyc@hanauma.jpl.nasa.gov),
Tim MacKenzie (tym@dibbler.cs.monash.edu.au),
Markku Jarvinen (mta@{cc,cs,ee}.tut.fi),
Marc Boucher (marc@CAM.ORG),
Doug Siebert (dsiebert@isca.uiowa.edu),
Ken Stillson (stillson@tsfsrv.mitre.org),
Ian Frechett (frechett@spot.Colorado.EDU),
Brian Koehmstedt (bpk@gnu.ai.mit.edu),
Don Smith (djs6015@ultb.isc.rit.edu),
Frank van der Linden (vdlinden@fwi.uva.nl),
Martin Schweikert (schweik@cpp.ob.open.de),
David Vrona (dave@sashimi.lcu.com),
E. Tye McQueen (tye%spillman.UUCP@uunet.uu.net),
Matthew Green (mrgreen@mame.mu.oz.au),
Christopher Williams (cgw@unt.edu),
Matt Mosley (mattm@access.digex.net),
Gregory Neil Shapiro (gshapiro@wpi.WPI.EDU).

バージョン
これはバージョン 3.7.6 である。これは Wayne Davison による 2.3PR7 独自版をマージしたものと、Oliver Laumann のバージョン 2.0 を改 良したものが基になっている。2.x の番号が付いているバージョンは全て Oliver Laumann の著作物である。

バグ

•   `dm' (削除モード)と `xs' を正しく扱うことができない(これらは無視される)。 `xn' は magic-margin 指示子として扱われる。

•   screen は 2 倍高や 2 倍幅の文字を扱うことができない。しかし、これが影響する範 囲は vttest を失敗させることができる場所だけである。

•   異なる端末タイプの下で再アタッチを行ったとき、環境変数 $TERMCAP を変更 することができない。

•   terminfo ベースのシステムのサポートは非常に限られている。機能を $TERMCAP に追加しても全く効果が現われないことがある。

•   screen はハードウェアタブを利用していない。

•   screen は所有者 root に setuid してインストールしなければならない。これは、各 ウィンドウに対する tty デバイスファイルの所有者を正しく変更するためで ある。"/etc/utmp" ファイルに書き込みを行うためにも特殊なパーミッショ ンが必要である。

•   screen が SIGKILL で kill された時は "/etc/utmp" のエントリが削除されない。 この場合、一部のプログラム("w" や "rwho" 等)は実際にはログインしていな いユーザがログイン中であると知らせる。

•   ユーザが使っている tty に utmp エントリが無いとき、 screen はおかしなウォーニングを出す。

•   モデムラインのデバイスドライバが HANGUP シグナルを送るように設定されて いない場合、このラインがハングアップした時に screen が自動的にデタッチ(あるいは終了)を行えないことがある。

•   全ての機能を最大限に生かすために最も大切なのは、普通の人とは違う発想で ある。

•   バグ報告、修正、改良、T シャツ、お金、ビール、ピザ等は screen@uni-erlangen.de まで送ること。