2011-05-31 5 views
1

ちょっと、私は、テキストのみのクライアントと仮想シェルの間でインターフェイスをとるリモートシェルサーバーを構築しています。ncursesベースのプログラムが実行されないようにする方法はありますか?

通常のシェルコマンドを使用すると完全に動作しますが、最初に人が試したのはvimです。私のサーバーが狂ってしまい、リモートでも閉じることができません。

ncursesベースのプログラムを検出し、それらが私の特別なシェルで実行されないようにする方法はありますか?

(サーバがルビーであるが、任意のシステムコマンドを実行します)

答えて

5

あなたは正しい値にTERM環境変数を設定することで、あなたのシェルが持っている能力を宣言することができます。例えば、あなたのシェルがvt100ターミナルと同じ機能を持っているなら、TERMを正しい値にエクスポートし、vimのようなプログラムはそれを尊重します。しようと、VT100モードでVimを実行するに

TERM=vt100 vim 

あなたはまた、試みることができる:

export TERM=dumb 

トリックは、あなたが作成しているものの機能に対応し、端末を見つけることです。選択肢はたくさんあります。私のシステム(アーチのLinux)では、これは私の選択肢の長いリストを与える:

find /usr/share/terminfo 

あなたはあなたのプログラムが処理できるものに対応の端末の仕様を見つけることができるかもしれません。

代わりに、ANSIまたはVT100のための端末エミュレーションの実装を検討することもできます。

http://en.wikipedia.org/wiki/ANSI_escape_code

http://www.termsys.demon.co.uk/vtansi.htm

運のベスト!

+0

このページもあり、エスケープコードのフレンドリーなアプローチと素敵な概要があります。http://wiki.bash-hackers.org/scripting/terminalcodesエスケープシーケンスは驚くほど面白いことがあります。例えば、端末をリセットするには、echo -en "\ 033c" – Alexander

+1

ありがとうございました。 –

関連する問題