2013-03-14 97 views
7

我已經在網上查找包括在一些建議或指針的stackoverflow,但我發現的任何東西是壓倒性的,我不確定從哪裏開始。如果我忽略了某些明顯的道歉,我深表歉意。如何建立一個基本的終端從零開始

我想了解一個終端是如何工作的,我想從頭開始構建一個,我很樂意提供任何有關終端所需的概念和功能的建議或建議,但我不只是希望鏈接源代碼。我發現了很多開源項目,但是我發現它們令人難以置信。

我會理想地喜歡建立我自己的終端,可以在OS X,Linux和/或Windows上運行(我可能會使用Java但會考慮其他語言),並最終有一個Web界面(想要我的控制檯在我的瀏覽器中)我知道這已經完成,但我想自己做,所以我可以詳細瞭解它是如何工作的,只是有一個項目要做。

我真正想要的是閱讀材料/教程給我一些指導的起點。如果這意味着退後一步更基本的終端,我很樂意這樣做,一旦我有一些實際的編程,這將使我朝着主要目標前進

+0

這太寬泛了,SO並不是真正的全面演練或推薦資源。我建議你看看現有終端的來源。 (在java中至少有兩個:[JCTerm](http://www.jcraft.com/jcterm/)和[Terminator](http://software.jessies.org/terminator/)) – millimoose 2013-03-14 12:09:55

+0

@millimoose肯定在任何終端中都有基本的概念或功能?這是我很困惑 – jonnie 2013-03-14 12:59:35

+1

調查虛擬TTYs和ansi控制代碼 – Dougvj 2013-03-14 16:05:12

回答

1

終端背後的想法是一個解釋和執行每個命令的無限循環。下面是Perl中的例子:

use strict; 
use warnings; 

while(<>) { 
    system($_); 
} 

exit 0; 

我知道Perl是不是最簡單的語言來讀(但肯定是最快的寫入),但是這是所有你需要了解上面的程序:

<>從標準輸入讀取。

system($_)執行該命令(其中$_是一個特殊的Perl變量,它在循環中工作並表示當前評估的項目,因此在我們的情況下爲給定的命令)。

您可以嘗試運行上述程序將其保存在您的計算機上作爲foo.pl,打開終端並執行perl foo.pl

所以,這是基本的想法。我認爲每種語言都會執行一個命令system,這個命令的作用是一樣的(名字可能會改變,但它可能也是一樣的)。您可以看看man system以瞭解此命令在C中的工作方式。我不瞭解Java,但我確信你必須搜索類似的東西。從這個起點,我認爲你可以開始建立自己的終端。

+0

這是一個shell,而不是終端。 – millimoose 2013-03-14 13:58:02

+1

@millimoose,是的,謝謝你指出區別。但是,如果我理解的很好,我可以把這個shell變成一個終端,添加另一個叫它裏面的軟件,不是嗎? – Zagorax 2013-03-14 14:34:00

+2

您可以通過掌握足夠的功能將任何東西變成任何東西。我的意思是,OS shell是解釋啓動和管理其他進程的命令的東西。一個典型的GUI終端仿真器可以將shell的輸出(文本和控制字符)渲染到一個窗口中,並從GUI工具包中獲取鍵盤事件,並將它們轉換爲shell能夠理解的內容(再次輸入stdin和控制字符)。它們是相關的軟件,這就是爲什麼你可以將它們組合在一起,但它們執行完全不同的任務。 – millimoose 2013-03-14 14:40:41

2

創建到目標計算機的套接字連接,[從中讀取,顯示],[等待用戶輸入,顯示,發送到套接字],重複。你有基本的終端。