.\" Copyright (c) 1985, 1990, 1993 .\" The Regents of the University of California. All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" 3. All advertising materials mentioning features or use of this software .\" must display the following acknowledgement: .\" This product includes software developed by the University of .\" California, Berkeley and its contributors. .\" 4. Neither the name of the University nor the names of its contributors .\" may be used to endorse or promote products derived from this software .\" without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" .\" @(#)tset.1 8.1 (Berkeley) 6/9/93 .\" %FreeBSD: src/usr.bin/tset/tset.1,v 1.14 2004/07/02 22:22:32 ru Exp % .\" .\" $FreeBSD$ .\" Original Regision: 1.2.2.1 .\" .Dd June 9, 1993 .Dt TSET 1 .Os .Sh 名称 .Nm tset , .Nm reset .Nd 端末を初期化する .Sh 書式 .Nm .Op Fl IQrSs .Op Fl .Op Fl e Ar ch .Op Fl i Ar ch .Op Fl k Ar ch .Op Fl m Ar mapping .Op Ar terminal .Nm reset .Op Fl IQrSs .Op Fl .Op Fl e Ar ch .Op Fl i Ar ch .Op Fl k Ar ch .Op Fl m Ar mapping .Op Ar terminal .Sh 解説 .Nm ユーティリティは、端末を初期化します。 まず最初に本ユーティリティは使用中の端末タイプを判別します。 判別方法は、以下の値を順番に調べ、最初に見つかった端末タイプを 利用するという方法です。 .Pp .Bl -bullet -compact -offset indent .It コマンドライン上で指定した .Ar terminal 引数 .It 環境変数 .Ev TERM の値 .It 利用中の標準エラー出力デバイスに対応する、 .Pa /etc/ttys 内のエントリで定義している端末タイプ .It デフォルトの端末タイプである ``unknown'' .El .Pp 端末タイプがコマンドラインで指定されない時は、 .Fl m オプションのマッピングはその後に適用されます (詳細は下を参照)。 その後、もし端末タイプの前に ``?'' がついていたならば、端末タイプの確認用のプロンプトが出ます。空行を 与えるとその端末タイプになりますが、別の新しい端末タイプを入力することも 可能です。いったん端末タイプが決定すれば、その端末用の termcap エントリが 検索されます。termcap エントリが見つからない場合は、もう一度プロンプトが 出ます。 .Pp いったん termcap エントリが見つかれば、(他にもたくさんある中で) 画面サイズ、バックスペース、インタラプト、行消去のキャラクタがセットされ、 端末の初期化およびタブの初期化の文字列が標準エラー出力に送られます。 最後に、もし、消去、インタラプト、行削除のキャラクタが変更される、もしくは そのデフォルト値が未設定であれば、その値が標準エラー出力に表示されます。 .Pp .Nm が .Nm reset として起動された時は、上で述べた端末初期化が行なわ れる前に、端末を cooked モード、echo モードにセットし、cbreak モード、 raw モードをオフにし、newline 変換を有効にし、 未設定の特殊キャラクタをデフォルト値でリセットします。 これは、プログラムが端末を異常な状態にしたまま死んだ時に有用です。 端末が異常な状態にあるときにはキャリッジリターンが働かないことがあるので、 端末を正常に戻すためには .Dq Li reset (ラインフィードキャラクタは通常 コントロール-J です) とタイプしなければいけないかもしれないということに 注意して下さい。また、端末がコマンドのエコーを行なわなくなっているかも しれません。 .Pp オプションは以下のものがあります: .Bl -tag -width flag .It Fl 端末タイプが標準出力に表示されます。端末は初期化されません。 .It Fl e erase キャラクタを .Ar ch にします。 .It Fl I 端末初期化文字列もしくはタブ初期化文字列を端末に送りません。 .It Fl i インタラプトキャラクタを .Ar ch にします。 .It Fl k 行削除のキャラクタを .Ar ch にします。 .It Fl m ポートタイプから端末へのマッピングを指定します。詳細は下を参照して下さい。 .It Fl Q 消去、インタラプト、行削除の値を表示しません。 .It Fl r 端末タイプを標準エラー出力に表示します。 .It Fl S 端末タイプと termcap エントリを標準出力に表示します。 環境設定についての詳細は以下のセクションを参照して下さい。 .It Fl s 環境変数 .Ev TERM と .Ev TERMCAP を初期化する shell コマンド列を標準出力に書きます。 環境変数の設定についての詳細は以下のセクションを参照して下さい。 .El .Pp .Fl e , .Fl i , .Fl k オプションの引数は、実際のキャラクタを 書くか、もしくは .Dq ハット記号 を使って (すなわち コントロール-h なら .Dq Li ^H もしくは .Dq Li ^h ) 記述して下さい。 .Sh 環境設定 しばしば、端末タイプと端末の能力についての情報を shell の環境変数に設定する 必要がでてきます。これは .Fl S と .Fl s のオプションで行ないます。 .Fl S オプションが指定された時、端末タイプと termcap エントリが 標準出力に表示されます。この出力はスペースで区切られており、最後に 改行がつきません。また、この出力は .Nm csh , .Nm ksh やその他の shell の配列に 代入できます。 .Pp .Fl s オプションが指定された場合は shell の環境変数を設定するための コマンドが標準出力に書かれます。このコマンドは、環境変数 .Ev SHELL の設定値が ``csh'' で終っていれば .Nm csh 用の、それ以外は .Nm sh 用のものとなります。 .Nm csh 用のコマンドの場合は .Dq noglob シェル変数の set と unset が行なわれ、 unset したままになることに注意して下さい。以下の行を .Pa .login や .Pa .profile に記述すれば環境変数を正しく初期化できます: .Bd -literal -offset indent eval \`tset -s options ... \` .Ed .Pp .Fl S オプションの使い方を簡単に説明すると、 .Pa .login に以下のような記述をすると上と同じような効果が得られます: .Bd -literal -offset indent set noglob set term=(`tset -S options ...`) setenv TERM $term[1] setenv TERMCAP "$term[2]" unset term unset noglob .Ed .Sh 端末タイプへのマッピング 端末がシステムに組み込まれていない場合 (或は現在のシス テム情報が正しくない場合) .Pa /etc/ttys ファイル 或は .Ev TERM 環境変数から得た端末タイプは .Dq network , .Dq dialup , .Dq unknown のような generic になることがあります。 .Nm がスタートアップスクリプト ( .Xr sh 1 を使う場合は .Pa .profile 、 .Xr csh 1 を使う場合は .Pa .login ) で使われる場合は、しばしば、そのようなポートで使われる端末のタイプ の情報を提供する必要があります。 .Fl m オプションの目的は、端末タイプの状態リストから .Dq map すること、すなわち .Nm に ``もしこのポートがある特定のスピードであるならば、ある種の端末であることを 推定しなさい''という情報を伝えることです。 .Pp .Fl m オプションの引数は、ポートタイプ、オペレータ、ボーレート、コロン(``:'') と端末タイプからなります。 ポートタイプは (オペレータ或はコロン文字によって区切られた) 文字列で表し ます。オペレータは、 .Dq Li \&> , .Dq Li \&< , .Dq Li \&@ , .Dq Li !\& の組合せになります。 .Dq Li \&> は「より大きい」を意味し、 .Dq Li \&< は「より小さい」を意味し、 .Dq Li \&@ は「等しい」を意味し、 そして .Dq Li !\& は「test の評価結果の反対」を意味します。 ボーレートは数値として表され、 (コントロール端末である べき) 標準エラー出力のスピードと比較されます。 端末タイプは文字列です。 .Pp もし端末タイプがコマンドラインで示されなければ、 .Fl m マッピングが端末タイプに適用されます。 もしポートタイプとボーレートがマッピングと一致すると、マッピングで示された端 末タイプでカレントタイプを置き換えます。もし、一つ以上のマッピングが示さ れた場合には、最初に適合したマッピングを使います。 .Pp 例えば、 .Dq Li dialup>9600:vt100 というマッピングを考えます。 ポートタイプは .Dq Li dialup 、オペレータは .Dq Li > 、ボーレートは .Dq Li 9600 、そして端末タイプは .Dq Li vt100 です。 このマッピングの結果、ターミナルタイプが .Dq Li dialup で、ボーレートが 9600 ボーより大きければ、端末タイプ .Dq Li vt100 が使われます。 .Pp ポートタイプがない場合は、端末タイプは任意のポートタイプに一致します。 例えば、 .Dq Li -m dialup:vt100 -m :?xterm では、任意のダイヤルアップポートにおいて、 ボーレートを無視してターミナルタイプを .Dq Li vt100 に一致させます。そして、ダイヤルアップ以外のポートをターミナルタイプ .Dq Li ?xterm に一致させます。 ?xterm はクエスチョンマークが先頭に付いているので、実際に .Ar xterm ターミナルを使っているかどうかについてデフォルトポートで 確認を求められことに注意して下さい。 .Pp .Fl m オプションでの引数に空白は許されません。 メタキャラクタの問題を避けるために、 .Fl m オプションの引数全体はシングルクォーテーションで囲むこと、そして .Nm csh を使っている場合は、すべてのイクスクラメーションマーク (``!'') の前に バックスラッシュ (``\e'') をいれることを推奨します。 .Sh 環境変数 .Nm コマンドは、環境変数 .Ev SHELL および .Ev TERM を利用します。 .Sh 関連ファイル .Bl -tag -width /usr/share/misc/termcap -compact .It Pa /etc/ttys システムポート名から端末タイプへのマッピングを記述したデータベース .It Pa /usr/share/misc/termcap termcap データベース .El .Sh 関連項目 .Xr csh 1 , .Xr sh 1 , .Xr stty 1 , .Xr tty 4 , .Xr termcap 5 , .Xr ttys 5 , .Xr environ 7 .Sh 歴史 .Nm は .Bx 3.0 から現れました。 .Sh 互換性 .Fl A , .Fl E , .Fl h , .Fl u , .Fl v オプションは .Nm ユーティリティから削除されました。 これらは .Bx 4.3 のドキュメントにはなく、限られた用途しかありません。 .Fl a , .Fl d , .Fl p オプションも同様に、ドキュメントにないか有用ではありませんが、 広く使われるので残されています。これら3つのオプショ ンの代わりに、 .Fl m オプションを使うことが強く推奨されています。 .Fl n オプションは残っていますが、無効です。 .Fl e , .Fl i , .Fl k オプションは引数なしに使うことがまだ許されていますが、 このような使用法は、 文字を明示的に指定するよう修正されることが 強く推奨されています。 .Pp .Nm reset として .Nm を実行する場合には、 .Fl Q オプションは使いません。 .Nm の幾つかの歴史的な実装上での .Fl オプションと 引数 .Ar terminal の間の干渉は排除されています。 .Pp 最後に, .Nm の実装は ( .St -p1003.1-88 に従うシステムへの追加の一部として ) 完全にやり直されました。 もはや古い端末インタフェースのシステムの上では コンパイルはされないでしょう。