在unix shell上输入时会发生什么

时间:2011-11-18 19:00:25

标签: unix sh

在unix shell上键入(不需要命令)会发生什么?更具体地说,当您在shell上键入内容时会在后台发生什么?

2 个答案:

答案 0 :(得分:2)

您必须了解计算机系统架构才能真正了解正在发生的事情,但基本上您的计算机有2个级别,1个硬件和2个软件。

硬件分解为很多东西,但对你的问题最重要的是键盘和屏幕。因此,如果您在键盘上打字,必须使用一些软件来显示您在屏幕上输入的内容。在现代系统(如此网页)中,它由(至少)2层软件处理。

操作系统是一套底层系统的子系统,将所有部分连接在一起作为(大致)服务,即打字服务,磁盘服务,网络服务,显示服务以及许多其他更多技术因素,通常与这些东西互相交谈。

用于显示您在网页中输入内容的软件(面向用户)的最终级别由您使用的浏览器软件提供。操作系统将按键,鼠标点击等值传递给浏览器,浏览器决定如何处理它们。

所以Unix命令行也是2层,操作系统级别,协调服务(键盘到屏幕)。为了达到您的击键与操作系统的任何会议的程度,您必须启动一个旨在接收和显示输入和输出的应用程序。当您在命令行上输入时,操作系统会将按键发送到您的shell程序,bash,ksh,zsh和其他程序。

直到你按下回车键才能执行shell必须执行的操作,而且基本上,当你按下回车键时它唯一知道要做的就是扫描并读取你输入的内容。它会假设您知道自己在做什么,而您输入的内容是系统支持的有效命令。它还有许多规则,如果它遇到被认为是shell特征的文本,如环境变量($ {MyName}),管道|,它有助于连接2个程序从左侧发送数据,该怎么办程序到右手程序,以及许多其他功能。

所以,你不想特别知道shell中发生了什么,所以答案是,操作系统从键盘获取活动,因为你必须运行一个shell(或其他程序)来接受输入通过键盘,操作系统将这些按键值传递给正在运行的程序。

(看到你发布的其他问题的性质,如果这太简单了,我很抱歉;-(,但......)

我希望这会有所帮助。

答案 1 :(得分:1)

您可以使用strace来了解Linux上程序(例如/bin/bash或其他shell或任何其他程序)所涉及的系统调用。使用免费(例如GPL许可)软件shell,您可以查看其源代码以了解有关它们的更多信息。您甚至可以使用调试信息编译它们,并使用调试器检查它们的工作情况。