Automating xterm
Expect normally works with programs that read either from the standard input or /dev/tty
. Some programs do not read their input in this way. A good example is the xterm
program. xterm
is an X Window System client that provides a shell in a terminal emulator. In this section, I will describe three different ways to control xterm
.
The xterm
program reads user input from a network socket. The standard input and /dev/tty
are both ignored. Hence, spawning xterm
in the usual way is fruitless.
spawn xterm ;# WRONG
Interacting in this way—with no special knowledge of xterm
—requires a program that can drive X applications the way Expect drives character-oriented programs. Such programs exist. However, discussion of them is beyond the scope of this book.
Instead of attempting to control an xterm
, it often suffices to have an xterm
execute an Expect script. For example, suppose you want to be able to pop up a window that automatically runs the chess
script defined in Chapter 10 (p. 234). The following command would suffice:
xterm -e chess.exp
The xterm
continues to take input in the usual way. Therefore it is even possible to have scripts that accept user input. For example, the auto-ftp
script defined in Chapter 3 (p. 83) could be started up with the following command. Once running, it is controllable from the keyboard just the way an xterm
normally is.
xterm -e aftp.exp
Both of these examples give up the possibility of controlling the xterm
from another script. It is possible ...
Get Exploring Expect now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.