如何从头开始构建基本终端

时间:2013-03-14 12:08:39

标签: java linux macos operating-system

我已经在线查看了包括stackoverflow的一些建议或指示,但我找到的任何东西都是压倒性的,我不确定从哪里开始。如果我忽视了一些显而易见的事情,请道歉。

我想了解一个终端是如何工作的,我想从头开始构建一个终端,我会喜欢有关终端所需概念和功能的材料的任何建议或建议,但我不仅仅想要链接到源码。我发现了很多开源项目,但我发现它们势不可挡。

我希望构建我自己的终端,可以在OS X,Linux和/或Windows上运行(我可能会使用Java但会考虑其他语言)并最终拥有一个Web界面(希望我的控制台在我的浏览器)我知道这已经完成但我想自己做,所以我可以详细了解它是如何工作的,只是为了有一个项目要做。

我真正想要的是阅读材料/教程的起点,给我一些指导。如果这意味着退回到比终端更基本的东西,我很高兴做到这一点,一旦我有一些实际的计划,将使我继续朝着主要目标前进

2 个答案:

答案 0 :(得分:2)

创建与目标计算机的套接字连接,[从中读取,如果有,显示],[等待用户输入,显示,将其发送到套接字],重复。你有基本的终端。

答案 1 :(得分:1)

终端背后的想法是一个无限循环,它解释并执行每个命令。以下是Perl中的一个示例:

use strict;
use warnings;

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

exit 0;

我知道Perl不是最简单的阅读语言(但肯定是写的最快),但这就是理解上述程序所需的全部内容:

<>从标准输入读取。

system($_)执行命令(其中$_是一个特殊的Perl变量,它在循环内工作并代表当前计算的项目,因此,在我们的例子中,是给定的命令)。

您可以尝试运行上述程序,将其作为foo.pl保存在您的计算机上,打开终端并执行perl foo.pl

所以,这是基本的想法。我认为每种语言都实现了一个命令system,它执行相同的命令(名称可能会改变,但它也可能是相同的)。您可以查看man system以了解此命令在C中的工作原理。我不懂Java,但我很确定你必须搜索类似的东西。从这个起点开始,我认为你可以开始建立自己的终端了。