什么允许在前一个命令仍在前台运行时键入命令?

Gee*_*eek 3 command-line shell terminal

有时候,我已经看到,当一个程序(比如说A)在前台运行,并打印输出到stdout,我可以输入另一个命令(比如B),当我按下Enter它运行时,即使我没有被提示输入B,因为A有还没执行完。我可以在 tcsh shell 中执行此操作,最终结果是B在A.

这个功能叫什么?这个外壳是特定的吗?如果我不在提示符下输入命令,它如何工作?

Ste*_*itt 6

这称为typeahead,它不是特定于 shell 的。您键入的内容最终会在终端中缓冲,下次在终端中运行的程序准备好输入时,它会读取缓冲区中等待的内容。在您的示例中,该程序是 shell,因此它执行您键入的命令,就好像您A在键入它之前等待完成一样。

有些程序会在接受输入之前明确地清除缓冲区;例如,大多数要求输入密码的程序会清除缓冲区,以确保用户知道输入的是什么(因为输入没有回显)。