2012-03-31 49 views
0

我創造我自己的基於Java的長期計劃,並與SSH和Telnet連接的偉大工程。 但是現在我想打開一個像xterm或者gnome-terminal這樣的本地直接連接。 我使用ProcessBuilder運行「bash -i -l」,並使用getInputStream()/ getOutputStream(),它似乎工作。 (我需要調用redirectErrorStream(true)) 我唯一的問題是bash似乎忽略了TERM環境變量,並且沒有生成任何ANSI代碼。我得到一個提示,但運行'ls -la'缺少CR和顏色。另外它不會回顯輸入(就像通過SSH連接一樣)。我想直接交互運行bash的,但沒有得到ANSI代碼

我用JCraft的JSch庫並調用setPtyType( 「VT100」)的SSH連接。 直接運行bash時我該怎麼做?

我不使用的pty,請問這是需要的?分配一個pty需要我認爲的本地代碼。 如果是這樣,pty的工作如何。

我想看看xterm的源代碼,但是這是一個爛攤子。現在我記得爲什麼我永遠不會回到C代碼。

有一個簡單的解決方案。

謝謝。

回答

0

至於ls推移,這可能是因爲你的ls是別名ls --color=auto(你可以在終端運行alias ls檢查)。在這種情況下,ls會做出一個有教育的猜測,是否輸出顏色代碼。從man ls

使用顏色來區分文件類型的默認情況下 與--color =從不禁用兩者。使用--color = auto時,僅當標準輸出連接到終端時,ls纔會發出顏色代碼 。

許多其它程序可能會做這種事情。

至於你的終端仿真的一般研究去,「終結者」,似乎做一些PTY仿真(使用JNI庫雖然),也許你可以從一些想法:

http://software.jessies.org/terminator/

相關問題