expect: Curing those uncontrollable fits of interaction (1990) [34 citations — 7 self]
Abstract:
UNIX programs used to be designed so that they could be connected with pipes created by a shell. This paradigm is insufficient when dealing with many modern programs that demand to be used interactively. expect is a program designed to control interactive programs. expect reads a script that resembles the dialogue itself but which may include multiple paths through it. Scripts include:. send/expect sequences- expect patterns can include regular expressions.. high-level language- Control flow (if/then/else, while, etc.) allows different actions on different inputs, along with procedure definition, built-in expression evaluation, and execution of arbitrary UNIX programs.. job control- Multiple programs can be controlled at the same time.. user interaction- Control can be passed from scripted to interactive mode and vice versa at any time. The user can also be treated as an I/O source/sink. expect successfully deals with interactive programs. It also solves several other large classes of problems which UNIX shells do not.
Citations
| 362 | The Unix Time-Sharing System – Ritchie, Thompson - 1974 |
| 196 | Tcl: An embeddable Command Language – Ousterhout - 1990 |
| 178 | ELIZA—a computer program for the study of natural language communication between man and machine – Weizenbaum - 1965 |
| 10 | tcl(3) -- overview of tool command language facilities", unpublished manual page – Ousterhout - 1990 |
| 4 | UUCP Implementation Description – Nowitz - 1978 |
| 1 | expect(1) -- programmatic dialogue with interactive programs", unpublished manual page – Libes - 1989 |
| 1 | Support for Graphs of Processes in a Command Interpreter – McDonald, Dix - 1988 |
| 1 | MTX -- A Shell that Permits Dynamic Rearrangement of Process Connections and Windows – Uhler |
| 1 | rn(1) -- read news program", unpublished manual page – Wall - 1985 |

