Terminal Windows Without Shells (Unix Power Tools, 3rd Edition)
24.21. Terminal Windows Without Shells
xterm is an X client that
runs a Unix process on a pty
"inside" a window. By default, this
process is a shell: an instance of the same shell you log into the
system with. But it can be basically any Unix process. As you saw in
Section 24.20, when the process exits, the
xterm window closes because its child process has
gone.
To override the default shell process in an xterm
window, use the -e option (Section 5.22), followed by the command line to run the
process. This must be the last thing on the xterm
command line. If you want to open an xterm window
with no scrollbar (the +sb option) and with the
vi editor in it, to edit the log file named
logfile, run the command below:
% xterm +sb -e vi logfile
%
An xterm window should open with
vi running inside it. If you
don't know how to use vi, the
best thing to do is to leave it alone until you've
finished this example -- then press the ESC key, type
:q, and press ENTER to exit vi.
When vi exits, its window should close too, and
you'll get another shell prompt.
I chose to have you run vi in a window because the
vi process keeps running until you tell it to
quit, and then the window closes. Other Unix processes that
don't wait for a
"quit" command will terminate as
soon as they're done, and the window closes before
you can see the process output. For example, let's
say you want to display a file in an xterm window
with a scrollbar. Start by choosing a file and using wc -l (Section 16.6) to count
the number of lines. Then open an xterm and a
scrollbar, with the scrolling buffer length set to just the right
number of lines:
cat Section 12.2
% wc -l somefile
74 somefile
% xterm -sl 74 -sb -e cat somefile
%
What happened? Unless your window manager holds it there, the
xterm window closes just after it opens. Why? Its
child cat process exited, so the parent
xterm did too. One easy answer is to use a shell
that runs three commands. First is the command you want to run (here,
cat). Next, echo a prompt. Finally, run the
read command (Section 35.18) to pause until you give a dummy
value -- just pressing ENTER will be enough to satisfy
read, and then the shell will exit.
Here's how:
% xterm -sl 76 -sb -e \
sh -c 'cat somefile; echo "Press RETURN to exit..."; read dummy'
(First, two notes. The backslash (\)
isn't needed if you type the entire command on one
line. And we've increased the scroll length to 76
because the echo and the newline after it add two
lines of text.) Here, xterm starts a shell, but
it's not the default shell (whatever that happens to
be): it's the sh shell you
specify after the xterm -e
option. The sh option -c tells
the Bourne shell to run the single command line from the following
argument and then exit. The command line is in quotes to be sure the
shell inside the xterm
interprets it. The three commands are separated by semicolons (;) (Section 28.16).
If your command line is really complicated, you might want to change
the sh -c '...' to run a little shell script (Section 35.1)
instead, like sh $HOME/lib/catter.
-- JP
24.20. The Process Chain to Your Window24.22. Close a Window by Killing Its Process
Copyright © 2003 O'Reilly & Associates. All rights reserved.
Wyszukiwarka
Podobne podstrony:
ch24 (9)ch24 (16)ch24ch24 (10)ch24ch24ch24ch24 (8)ch24CH24ch24ch24 (5)ch24 (13)CH24 (12)ch24ch24ch24 (6)ch24więcej podobnych podstron