TSET(1) | FreeBSD General Commands Manual | TSET(1) |
名称
tset, reset — 端末を初期化する書式
tset | [ -IQrSs][ -][ -e ch][ -i ch][ -k ch][ -m mapping][ terminal] |
reset | [ -IQrSs][ -][ -e ch][ -i ch][ -k ch][ -m mapping][ terminal] |
解説
tset ユーティリティは、端末を初期化します。まず最初に本ユーティリティは使用中の端末タイプを判別します。判別方法は、以下の値を順番に調べ、最初に見つかった端末タイプを利用するという方法です。
- コマンドライン上で指定した terminal 引数
- 環境変数 TERM の値
- 利用中の標準エラー出力デバイスに対応する、 /etc/ttys 内のエントリで定義している端末タイプ
- デフォルトの端末タイプである ``unknown''
端末タイプがコマンドラインで指定されない時は、 -m オプションのマッピングはその後に適用されます (詳細は下を参照)。その後、もし端末タイプの前に ``?'' がついていたならば、端末タイプの確認用のプロンプトが出ます。空行を与えるとその端末タイプになりますが、別の新しい端末タイプを入力することも可能です。いったん端末タイプが決定すれば、その端末用の termcap エントリが検索されます。 termcap エントリが見つからない場合は、もう一度プロンプトが出ます。
いったん termcap エントリが見つかれば、(他にもたくさんある中で) 画面サイズ、バックスペース、インタラプト、行消去のキャラクタがセットされ、端末の初期化およびタブの初期化の文字列が標準エラー出力に送られます。最後に、もし、消去、インタラプト、行削除のキャラクタが変更される、もしくはそのデフォルト値が未設定であれば、その値が標準エラー出力に表示されます。
tset が reset として起動された時は、上で述べた端末初期化が行なわれる前に、端末を cooked モード、echo モードにセットし、cbreak モード、 raw モードをオフにし、newline 変換を有効にし、未設定の特殊キャラクタをデフォルト値でリセットします。これは、プログラムが端末を異常な状態にしたまま死んだ時に有用です。端末が異常な状態にあるときにはキャリッジリターンが働かないことがあるので、端末を正常に戻すためには、“ <LF>reset<LF>
” (ラインフィードキャラクタは、通常コントロール-J です) とタイプしなければいけないかもしれないということに注意して下さい。また、端末がコマンドのエコーを行なわなくなっているかもしれません。
オプションは以下のものがあります:
- -
- 端末タイプが標準出力に表示されます。端末は初期化されません。
- -e
- erase キャラクタを ch にします。
- -I
- 端末初期化文字列もしくはタブ初期化文字列を端末に送りません。
- -i
- インタラプトキャラクタを ch にします。
- -k
- 行削除のキャラクタを ch にします。
- -m
- ポートタイプから端末へのマッピングを指定します。詳細は下を参照して下さい。
- -Q
- 消去、インタラプト、行削除の値を表示しません。
- -r
- 端末タイプを標準エラー出力に表示します。
- -S
- 端末タイプと termcap エントリを標準出力に表示します。環境設定についての詳細は以下のセクションを参照して下さい。
- -s
- 環境変数 TERM と TERMCAP を初期化する shell コマンド列を標準出力に書きます。環境変数の設定についての詳細は以下のセクションを参照して下さい。
-e, -i, -k オプションの引数は、実際のキャラクタを書くか、もしくは“ハット記号”を使って (すなわち、コントロール-h なら“ ^H
”もしくは“ ^h
”) 記述して下さい。
環境設定
しばしば、端末タイプと端末の能力についての情報を shell の環境変数に設定する必要がでてきます。これは、 -S と -s のオプションで行ないます。-S オプションが指定された時、端末タイプと termcap エントリが標準出力に表示されます。この出力はスペースで区切られており、最後に改行がつきません。また、この出力は、 csh, ksh やその他の shell の配列に代入できます。
-s オプションが指定された場合は、shell の環境変数を設定するためのコマンドが標準出力に書かれます。このコマンドは、環境変数 SHELL の設定値が ``csh'' で終っていれば csh 用の、それ以外は、 sh(1) 用のものとなります。 csh 用のコマンドの場合は、“noglob”シェル変数の set と unset が行なわれ、 unset したままになることに注意して下さい。以下の行を .login や .profile に記述すれば環境変数を正しく初期化できます:
eval `tset -s options ... `
-S オプションの使い方を簡単に説明すると、 .login に以下のような記述をすると上と同じような効果が得られます:
set noglob set term=(`tset -S options ...`) setenv TERM $term[1] setenv TERMCAP "$term[2]" unset term unset noglob
端末タイプへのマッピング
端末がシステムに組み込まれていない場合 (または現在のシステム情報が正しくない場合) /etc/ttys ファイル、または TERM 環境変数から得た端末タイプは、“network”, “dialup”, “unknown”のような generic になることがあります。 tset がスタートアップスクリプト ( sh(1) ユーザのためには、 .profile、 csh(1) ユーザのためには、 .login) で使われる場合は、しばしば、そのようなポートで使われる端末のタイプの情報を提供する必要があります。 -m オプションの目的は、端末タイプの状態リストから“map”すること、すなわち tset に ``もしこのポートがある特定のスピードであるならば、ある種の端末であることを推定しなさい''という情報を伝えることです。 -m オプションの引数は、ポートタイプ、オペレータ、ボーレート、コロン (``:'') と端末タイプからなります。ポートタイプは、(オペレータまたはコロン文字によって区切られた) 文字列で表します。オペレータは、“ >
”, “ <
”, “ @
”, “ !
”の組合せになります。“ >
”は「より大きい」を意味し、“ <
”は「より小さい」を意味し、“ @
”は「等しい」を意味し、そして“ !
”は「test の評価結果の反対」を意味します。ボーレートは数値として表され、(コントロール端末であるべき) 標準エラー出力のスピードと比較されます。端末タイプは文字列です。
もし端末タイプがコマンドラインで示されなければ、 -m マッピングが端末タイプに適用されます。もしポートタイプとボーレートがマッピングと一致すると、マッピングで示された端末タイプでカレントタイプを置き換えます。もし、一つ以上のマッピングが示された場合には、最初に適合したマッピングを使います。
例えば、“ dialup>9600:vt100
”というマッピングを考えます。ポートタイプは、“ dialup
”、オペレータは、“ >
”、ボーレートは、“ 9600
”、そして端末タイプは、“ vt100
”です。このマッピングの結果、ターミナルタイプが“ dialup
”で、ボーレートが 9600 ボーより大きければ、端末タイプ“ vt100
”が使われます。
ポートタイプがない場合は、端末タイプは任意のポートタイプに一致します。例えば、“ -m dialup:vt100 -m :?xterm
”では、任意のダイヤルアップポートにおいて、ボーレートを無視してターミナルタイプを“ vt100
”に一致させます。そして、ダイヤルアップ以外のポートをターミナルタイプ“ ?xterm
”に一致させます。 ?xterm はクエスチョンマークが先頭に付いているので、実際に xterm ターミナルを使っているかどうかについてデフォルトポートで確認を求められことに注意して下さい。
-m オプションでの引数に空白は許されません。メタキャラクタの問題を避けるために、 -m オプションの引数全体はシングルクォーテーションで囲むこと、そして csh を使っている場合は、すべてのイクスクラメーションマーク (``!'') の前にバックスラッシュ (``\'') をいれることを推奨します。
環境変数
tset コマンドは、環境変数 SHELL および TERM を利用します。関連ファイル
- /etc/ttys
- システムポート名から端末タイプへのマッピングを記述したデータベース
- /usr/share/misc/termcap
- termcap データベース
互換性
-A, -E, -h, -u, -v オプションは、 tset ユーティリティから削除されました。これらは、 4.3BSD のドキュメントにはなく、限られた用途しかありません。 -a, -d, -p オプションも同様に、ドキュメントにないか有用ではありませんが、広く使われるので残されています。これら 3 つのオプションの代わりに、 -m オプションを使うことが強く推奨されています。 -n オプションは残っていますが、無効です。 -e, -i, -k オプションは引数なしに使うことがまだ許されていますが、このような使用法は、文字を明示的に指定するよう修正されることが強く推奨されています。reset として tset を実行する場合には、 -Q オプションは使いません。 tset の幾つかの歴史的な実装上での - オプションと引数 terminal の間の干渉は排除されています。
最後に, tset の実装は、(IEEE Std 1003.1-1988 (“POSIX.1”) に従うシステムへの追加の一部として) 完全にやり直されました。もはや古い端末インタフェースのシステムの上ではコンパイルはされないでしょう。
歴史
tset は、 3.0BSD で登場しました。June 9, 1993 | FreeBSD |