2011-05-31 139 views
1

嘿,我正在構建一個遠程shell服務器,它在純文本客戶端和虛擬shell之間進行交互。有沒有辦法阻止基於ncurses的程序運行?

它使用普通的shell命令時效果很好,但人們嘗試之後的第一件事情就是vim,它迅速將我的服務器驅動爲瘋狂,甚至無法遠程關閉。

有沒有辦法檢測基於ncurses的程序並阻止它們在我的特殊shell中運行?

(服務器是紅寶石,但任何系統命令都可以)

回答

5

你可以聲明你的shell有能力,由TERM環境變量設置爲正確的值。例如,如果你的shell和vt100終端具有相同的功能,那麼將TERM輸出到正確的值,像vim這樣的程序會尊重它。

要以VT100模式的vim,嘗試:

TERM=vt100 vim 

您也可以嘗試:

export TERM=dumb 

關鍵是要找到對應於你所創造的東西的能力的終端。有很多可供選擇的。在我的系統(Arch 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轉義序列可以令人驚訝的有趣。重置終端,例如,只是回聲-en「\ 033c」 – Alexander 2011-05-31 20:19:31

+1

謝謝,這種讓我走上正軌。 – 2011-06-03 10:15:38

相關問題