8

我在网上查看了一些建议或指针,包括在 stackoverflow 上,但我发现的任何东西都令人不知所措,我不确定从哪里开始。如果我忽略了一些明显的事情,请道歉。

我想了解终端是如何工作的,我想从头开始构建一个终端,我希望对涵盖终端所需概念和功能的材料提出任何建议或建议,但我不只是想要指向源代码的链接。我发现了很多开源项目,但我发现它们势不可挡。

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

我真正想要的是阅读材料/教程的起点,给我一些方向。如果这意味着退回到比终端更基本的东西,我很乐意这样做,一旦我有一些实际的程序可以让我朝着主要目标前进

4

2 回答 2

2

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

于 2013-03-14T12:52:55.297 回答
1

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

use strict;
use warnings;

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

exit 0;

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

<>从标准输入读取。

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

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

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

于 2013-03-14T13:02:49.793 回答