jmb@patton.sgi.com (Jim Barton) (08/04/89)
"screen" for the IRIS 4D series, Part 2/3 #--------------------------------CUT HERE------------------------------------- #! /bin/sh # # This is a shell archive. Save this into a file, edit it # and delete all lines above this comment. Then give this # file to sh by executing the command "sh file". The files # will be extracted into the current directory owned by # you with default permissions. # # The files contained herein are: # # -r--r--r-- 1 jmb sys 21153 Aug 3 11:24 screen.1 # echo 'x - screen.1' if test -f screen.1; then echo 'shar: not overwriting screen.1'; else sed 's/^X//' << '________This_Is_The_END________' > screen.1 X.if n .ds Q \&" X.if n .ds U \&" X.if t .ds Q `` X.if t .ds U '' X.TH SCREEN 1 "2 March 1987" X.UC 4 X.SH NAME Xscreen \- screen manager with VT100/ANSI terminal emulation X.SH SYNOPSIS X.B screen X[ X.B \-a X] [ X.B \-f X] [ X.B \-n X] [ X.B \-e\fIxy\fP X] [ X.BR \fIcmd args\fP ] X.br X.B screen \-r X[ X.BR \fIhost.tty\fP ] X.ta .5i 1.8i X.SH DESCRIPTION X.I screen Xis a full-screen window manager that Xmultiplexes a physical terminal between several processes (typically Xinteractive shells). Each virtual terminal provides the functions Xof the DEC VT100 terminal and, in addition, several control functions Xfrom the ANSI X3.64 (ISO 6429) and ISO 2022 standards X(e.\|g. insert/delete line and support for multiple character sets). X.PP XWhen X.I screen Xis called, it creates a single window with a shell; the pathname of the Xshell is taken from the environment symbol $SHELL; if this is not Xdefined, \*Q/bin/sh\*U is used. XNew windows can be created at any time by calling X.I screen Xfrom within a previously created window. XThe program to be started in a newly created Xwindow and optional arguments to the program can be supplied when X.I screen Xis invoked. XFor instance, X.IP Xscreen csh X.PP Xwill create a window with a C-Shell and switch to that window. XWhen the process associated with the currently displayed window Xterminates (e.\|g. ^D has been typed to a shell), X.I screen Xswitches to the previously displayed window; Xwhen no more windows are left, X.I screen Xexits. X.PP XWhen \*Q/etc/utmp\*U is writable by X.IR screen , Xan appropriate record is written to this file for each window and Xremoved when the window is terminated. X.PP XThe X.B \-r Xoption is used to resume a X.I screen Xsession that has been \fIdetached\fP from the terminal by means Xof the \*Qdetach\*U command key (see below). XThis mechanism allows a user to disconnect X.I screen Xtogether with all currently active windows from the terminal Xand resume it at a later point in time, e.\|g. at a later Xlogin session, and possibly on a different terminal. XThe type of terminal on which a detached X.I screen Xis resumed must of course be compatible to the type of terminal Xon which X.I screen Xhas originally been invoked. XWhen more than one detached X.I screen Xexist, the X.B \-r Xoption displays a list of X.I host.tty Xpairs identifying the detached X.IR screens . XIn this case an additional X.I host.tty Xargument can be given to resume a specific X.I screen Xsession. X.SH "COMMAND KEYS" XThe standard way to create a new window is to type \*QC-a c\*U (the notation X\*QC-x\*U will be used as a shorthand for Control-x in this manual; x is Xan arbitrary letter). X\*QC-a c\*U creates a new window running a shell and switches to that Xwindow immediately, regardless of the state of the process running Xin the current window. X.I Screen Xrecognizes several such commands; each command consists of X\*QC-a\*U followed by a one-letter function. XFor convenience, the letter after a \*QC-a\*U can be entered both with or Xwithout the control key pressed (with the exception of X\*QC-a C-a\*U and \*QC-a a\*U; see below), thus, \*QC-a c\*U as well as X\*QC-a C-c\*U can be used to create a window. X.PP XThe following commands are recognized by X.IR screen : X.IP "\fBC-a c\fP or \fBC-a C-c\fP" XCreate a new window with a shell and switch to that window. X.IP "\fBC-a k\fP or \fBC-a C-k\fP" XKill the current window and switch to the previously displayed window. X.IP "\fBC-a C-\e\fP" XKill all windows and terminate X.IR screen . X.IP "\fBC-a d\fP or \fBC-a C-d\fP" XDetach X.I screen X(disconnect it from the terminal and put it into the Xbackground). XA detached X.I screen Xcan be resumed by invoking X.I screen Xwith the X.B \-r Xoption. X.IP "\fBC-a C-a\fP\0\0\0\0\0" XSwitch to the previously displayed window. X.IP "\fBC-a 0\fP to \fBC-a 9\fP" XSwitch to the window with the number 0 (1, 2, .., 9, respectively). XWhen a new window is established, the first available number from the Xrange 0..9 is assigned to this window. XThus, the first window can be activated by \*QC-a 0\*U; at most X10 windows can be present at any time. X.IP "\fBC-a space\fP or \fBC-a C-space\fP or \fBC-a n\fP or \fBC-a C-n\fP" XSwitch to the next window. This function can be used repeatedly to Xcycle through the list of windows. X(Control-space is not supported by all terminals.) X.IP "\fBC-a p\fP or \fBC-a C-p\fP or \fBC-a -\fP" XSwitch to the previous window (the opposite of \fBC-a space\fP). X.IP "\fBC-a l\fP or \fBC-a C-l\fP" XRedisplay the current window. X.IP "\fBC-a z\fP or \fBC-a C-z\fP" XSuspend X.IR screen . X.IP "\fBC-a h\fP or \fBC-a C-h\fP" XWrite a hardcopy of the current window to the file \*Qhardcopy.\fIn\fP\*U Xin the window's current directory, Xwhere \fIn\fP is the number of the current window. X.IP "\fBC-a .\fP (Control-a dot)" XWrite the termcap entry for the virtual terminal of the currently active Xwindow to the file \*Q.termcap\*U in the directory \*Q$HOME/.screen\*U. XThis termcap entry is identical to the value of the environment symbol XTERMCAP that is set up by X.I screen Xfor each window. X.IP "\fBC-a w\fP or \fBC-a C-w\fP" XDisplay a list of all windows. XFor each window, the number of the window and the process that has been Xstarted in the window is displayed; the current window is marked with a X`*'. X.IP "\fBC-a t\fP or \fBC-a C-t\fP" XPrint in the message line the time of day, the host name, the load averages Xover 1, 5, and 15 minutes (if this is available on your system), Xthe cursor position of the current window in the form \*Q(colum,row)\*U Xstarting with \*U(0,0)\*U, an indication if flow control Xand (for the current window) Xinsert mode, origin mode, wrap mode, and keypad application Xmode are enabled or not (indicated by a '+' or '-'), Xthe currently active character set (\fIG0\fP, \fIG1\fP, \fIG2\fP, Xor \fIG3\fP), and the terminal character sets that are currently Xdesignated as \fIG0\fP through \fIG3\fP. X.IP "\fBC-a v\fP or \fBC-a C-v\fP" XDisplay the version. X.IP "\fBC-a a\fP\0\0\0\0\0" XSend the character \*QC-a\*U to the processes running in the window. X.IP "\fBC-a s\fP or \fBC-a C-s\fP" XSend a Control-s to the program running in the window. X.IP "\fBC-a q\fP or \fBC-a C-q\fP" XSend a Control-q to the program running in the window. X.IP X.PP XThe X.B \-e Xoption can be used to specify a different command character and Xa character which, when typed immediately after the command character, Xgenerates a literal command character. XThe defaults for these two characters are \*QC-a\*U and `a'. X(Note that the function to switch to the previous window is actually the Xcommand character typed twice; for instance, when X.I screen Xis called with the option \*Q\fB\-e]x\fP\*U (or \*Q\fB\-e ]x\fP\*U), Xthis function becomes \*Q]]\*U). X.SH CUSTOMIZATION XWhen X.I screen Xis invoked, it executes initialization commands from the file X\*Q.screenrc\*U in the user's home directory. XCommands in \*Q.screenrc\*U are mainly used to automatically Xestablish a number of windows each time X.I screen Xis called, and to bind functions to specific keys. XEach line in \*Q.screenrc\*U contains one initialization command; lines Xstarting with `#' are ignored. XCommands can have arguments; arguments are separated by tabs and spaces Xand can be surrounded by single quotes or double quotes. X.PP XThe following initialization commands are recognized by X.IR screen : X.PP X.ne 3 X.B "escape \fIxy\fP" X.PP XSet the command character to \fIx\fP and the character generating a literal Xcommand character to \fIy\fP (see the \-e option above). X.PP X.ne 3 X.B "bell \fImessage\fP" X.PP XWhen a bell character is sent to a background window, X.I screen Xdisplays a notification in the message line (see below). XThe notification message can be re-defined by means of the \*Qbell\*U Xcommand; each occurrence of `%' in \fImessage\fP is replaced by Xthe number of the window to which a bell has been sent. XThe default message is X.PP X Bell in window % X.PP XAn empty message can be supplied to the \*Qbell\*U command to suppress Xoutput of a message line (bell ""). X.PP X.ne 3 X.B "mode \fImode\fP" X.PP XThe mode of each newly allocated pseudo-tty is set to \fImode\fP. X\fIMode\fP is an octal number. XWhen no \*Qmode\*U command is given, mode 0622 is used. X.PP X.ne 3 X.B "screen [\fIn\fP] [\fIcmds args\fP]" X.PP XEstablish a window. XIf an optional number \fIn\fP in the range 0..9 is given, the window Xnumber \fIn\fP is assigned to the newly created window (or, if this Xnumber is already in use, the next higher number). XNote that \fIn\fP has a value of zero for the standard shell window Xcreated after \*Q.screenrc\*U has been read. XIf a command is specified after \*Qscreen\*U, this command (with the given Xarguments) is started in the window; if no command is given, a shell Xis created in the window. XThus, if your \*Q.screenrc\*U contains the lines X.PP X.nf X # example for .screenrc: X screen 1 X screen 2 telnet foobar X.fi X.PP X.I screen Xcreates a shell window (window #1), a window with a TELNET connection Xto the machine foobar (window #2), and, finally, a second shell window X(the default window) which gets a window number of zero. XWhen the initialization is completed, X.I screen Xalways switches to the default window, so window #0 is displayed Xwhen the above \*Q.screenrc\*U is used. X.PP X.ne 3 X.B "chdir [\fIdirectory\fP]" X.PP XChange the \fIcurrent directory\fP of X.I screen Xto the specified directory or, if called without an argument, Xto the home directory (the value of the environment symbol $HOME). XAll windows that are created by means of the \*Qscreen\*U command Xfrom within \*Q.screenrc\*U or by means of \*QC-a c'' are running Xin the \fIcurrent directory\fP; the \fIcurrent directory\fP is Xinitially the directory from which the shell command X.I screen Xhas been invoked. XHardcopy files are always written to the directory in which the current Xwindow has been created (that is, \fInot\fP in the current directory Xof the shell running in the window). X.PP X.ne 3 X.B "bind \fIkey\fP [\fIfunction\fP | \fIcmd args\fP]" X.PP XBind a function to a key. XBy default, each function provided by X.I screen Xis bound to one or more keys as indicated by the above table, e.\|g. the Xfunction to create a new window is bound to \*QC-c\*U and \*Qc\*U. XThe \*Qbind\*U command can be used to redefine the key bindings and to Xdefine new bindings. XThe \fIkey\fP Xargument is either a single character, a sequence of the form X\*Q^x\*U meaning \*QC-x\*U, or an octal number specifying the XASCII code of the character. XIf no further argument is given, any previously established binding Xfor this key is removed. XThe \fIfunction\fP argument can be one of the following keywords: X.PP X.nf X shell Create new window with a shell X kill Kill the current window X quit Kill all windows and terminate X detach Detach \fIscreen\fP X other Switch to previously displayed window X next Switch to the next window X prev Switch to the previous window X redisplay Redisplay current window X hardcopy Make hardcopy of current window X termcap Write termcap entry to $HOME/.screen/.termcap X suspend Suspend \fIscreen\fP X windows Display list of window X info Print useful information in the message line X xon Send Control-q X xoff Send Control-s X version Display the version X select0 Switch to window #0 X \0\0... X select9 Switch to window #9 X.fi X.PP XIn addition, a key can be bound such that a window is created running Xa different command than the shell when that key is pressed. XIn this case, the command optionally followed by Xarguments must be given instead of one of the above-listed keywords. XFor example, the commands X.PP X.nf X bind ' ' windows X bind ^f telnet foobar X bind 033 su X.fi X.PP Xwould bind the space key to the function that displays a list Xof windows (that is, the function usually invoked by \*QC-a C-w\*U Xor \*QC-a w\*U would also be available as \*QC-a space\*U), Xbind \*QC-f\*U to the function \*Qcreate a window with a TELNET Xconnection to foobar\*U, and bind \*Qescape\*U to the function Xthat creates a window with a super-user shell. X.SH "VIRTUAL TERMINAL" X.I Screen Xprints error messages and other diagnostics in a \fImessage line\fP above Xthe bottom of the screen. XThe message line is removed when a key is pressed or, automatically, Xafter a couple of seconds. XThe message line facility can be used by an application running in Xthe current window by means of the ANSI \fIPrivacy message\fP Xcontrol sequence (for instance, from within the shell, something like X.IP Xecho '^[^Hello world^[\e' (where ^[ is an \fIescape\fP) X.PP Xcan be used to display a message line. X.PP XWhen the `NF' capability is found in the termcap entry of the Xterminal on which X.I screen Xhas been started, flow control is turned off for the terminal. XThis enables the user to send XON and XOFF characters to the Xprogram running in a window (this is required by the \fIemacs\fP Xeditor, for instance). XThe command line options X.B \-n Xand X.B \-f Xcan be used to turn flow control off or on, respectively, independently Xof the `NF' capability. X.PP X.I XScreen Xnever writes in the last position of the screen, unless the boolean Xcapability `LP' is found in the termcap entry of the terminal. XUsually, X.I screen Xcannot predict whether or not a particular terminal scrolls when Xa character is written in the last column of the last line; X`LP' indicates that it is safe to write in this position. XNote that the `LP' capability is independent of `am' (automatic Xmargins); for certain terminals, such as the VT100, it is reasonable Xto set `am' as well as `LP' in the corresponding termcap entry X(the VT100 does not move the cursor when a character is written in Xthe last column of each line). X.PP X.I Screen Xputs into the environment of each process started in a newly created Xwindow the symbols \*QWINDOW=\fIn\fP\*U (where \fIn\fP is the number Xof the respective window), \*QTERM=screen\*U, and a TERMCAP variable Xreflecting the capabilities of the virtual terminal emulated by X.IR screen . XThe actual set of capabilities supported by the virtual terminal Xdepends on the capabilities supported by the physical terminal. XIf, for instance, the physical terminal does not support standout mode, X.I screen Xdoes not put the `so' and `se' capabilities into the window's TERMCAP Xvariable, accordingly. XHowever, a minimum number of capabilities must be supported by a Xterminal in order to run X.IR screen , Xnamely scrolling, clear screen, and direct cursor addressing X(in addition, X.I screen Xdoes not run on hardcopy terminals or on terminals that overstrike). X.PP XWhen the boolean `G0' capability is present in the termcap entry Xfor the terminal on which X.I screen Xhas been called, the terminal emulation of X.I screen Xsupports multiple character sets. XThis allows an application to make use of, for instance, Xthe VT100 graphics character set or national character sets. XThe following control functions from ISO 2022 are supported: X\fIlock shift G0\fP (\fISI\fP), \fIlock shift G1\fP (\fISO\fP), X\fIlock shift G2\fP, \fIlock shift G3\fP, \fIsingle shift G2\fP, Xand \fIsingle shift G3\fP. XWhen a virtual terminal is created or reset, the ASCII character Xset is designated as \fIG0\fP through \fIG3\fP. X.PP XWhen the `po' and `pf' capabilities are present in the terminal's Xtermcap entry, applications running in a X.I screen Xwindow can send output to the printer port of the terminal. XThis allows a user to have an application in one window Xsending output to a printer connected to the terminal, while all Xother windows are still active (the printer port is enabled Xand disabled again for each chunk of output). XAs a side-effect, programs running in different windows can Xsend output to the printer simultaneously. XData sent to the printer is not displayed in the window. X.PP XSome capabilities are only put into the TERMCAP Xvariable of the virtual terminal if they can be efficiently Ximplemented by the physical terminal. XFor instance, `dl' (delete line) is only put into the TERMCAP Xvariable if the terminal supports either delete line itself or Xscrolling regions. XIf X.I screen Xis called with the X.B \-a Xoption, \fIall\fP capabilities are put into the environment, Xeven if X.I screen Xmust redraw parts of the display in order to implement a function. X.PP XThe following is a list of control sequences recognized by X.IR screen . X\*Q(V)\*U and \*Q(A)\*U indicate VT100-specific and ANSI- or XISO-specific functions, respectively. X.PP X.nf X.TP 20 X.B "ESC E" X Next Line X.TP 20 X.B "ESC D" X Index X.TP 20 X.B "ESC M" X Reverse Index X.TP 20 X.B "ESC H" X Horizontal Tab Set X.TP 20 X.B "ESC 7" X(V) Save Cursor and attributes X.TP 20 X.B "ESC 8" X(V) Restore Cursor and Attributes X.TP 20 X.B "ESC c" X Reset to Initial State X.TP 20 X.B "ESC =" X(V) Application Keypad Mode X.TP 20 X.B "ESC >" X(V) Numeric Keypad Mode X.TP 20 X.B "ESC # 8" X(V) Fill Screen with E's X.TP 20 X.B "ESC \e" X(A) String Terminator X.TP 20 X.B "ESC ^" X(A) Privacy Message (Message Line) X.TP 20 X.B "ESC P" X(A) Device Control String (not used) X.TP 20 X.B "ESC _" X(A) Application Program Command (not used) X.TP 20 X.B "ESC ]" X(A) Operating System Command (not used) X.TP 20 X.B "Control-N" X(A) Lock Shift G1 (SO) X.TP 20 X.B "Control-O" X(A) Lock Shift G0 (SI) X.TP 20 X.B "ESC n" X(A) Lock Shift G2 X.TP 20 X.B "ESC o" X(A) Lock Shift G3 X.TP 20 X.B "ESC N" X(A) Single Shift G2 X.TP 20 X.B "ESC O" X(A) Single Shift G3 X.TP 20 X.B "ESC ( Pcs" X(A) Designate character set as G0 X.TP 20 X.B "ESC ) Pcs" X(A) Designate character set as G1 X.TP 20 X.B "ESC * Pcs" X(A) Designate character set as G2 X.TP 20 X.B "ESC + Pcs" X(A) Designate character set as G3 X.TP 20 X.B "ESC [ Pn ; Pn H" X Direct Cursor Addressing X.TP 20 X.B "ESC [ Pn ; Pn f" X Direct Cursor Addressing X.TP 20 X.B "ESC [ Pn J" X Erase in Display X.TP 20 X\h'\w'ESC 'u'Pn = None or \fB0\fP X From Cursor to End of Screen X.TP 20 X\h'\w'ESC 'u'\fB1\fP X From Beginning of Screen to Cursor X.TP 20 X\h'\w'ESC 'u'\fB2\fP X Entire Screen X.TP 20 X.B "ESC [ Pn K" X Erase in Line X.TP 20 X\h'\w'ESC 'u'Pn = None or \fB0\fP X From Cursor to End of Line X.TP 20 X\h'\w'ESC 'u'\fB1\fP X From Beginning of Line to Cursor X.TP 20 X\h'\w'ESC 'u'\fB2\fP X Entire Line X.TP 20 X.B "ESC [ Pn A" X Cursor Up X.TP 20 X.B "ESC [ Pn B" X Cursor Down X.TP 20 X.B "ESC [ Pn C" X Cursor Right X.TP 20 X.B "ESC [ Pn D" X Cursor Left X.TP 20 X.B "ESC [ Ps ;...; Ps m" X Select Graphic Rendition X.TP 20 X\h'\w'ESC 'u'Ps = None or \fB0\fP X Default Rendition X.TP 20 X\h'\w'ESC 'u'\fB1\fP X Bold X.TP 20 X\h'\w'ESC 'u'\fB2\fP X(A) Faint X.TP 20 X\h'\w'ESC 'u'\fB3\fP X(A) \fIStandout\fP Mode (ANSI: Italicised) X.TP 20 X\h'\w'ESC 'u'\fB4\fP X Underlined X.TP 20 X\h'\w'ESC 'u'\fB5\fP X Blinking X.TP 20 X\h'\w'ESC 'u'\fB7\fP X Negative Image X.TP 20 X\h'\w'ESC 'u'\fB22\fP X(A) Normal Intensity X.TP 20 X\h'\w'ESC 'u'\fB23\fP X(A) \fIStandout\fP Mode off (ANSI: Italicised off) X.TP 20 X\h'\w'ESC 'u'\fB24\fP X(A) Not Underlined X.TP 20 X\h'\w'ESC 'u'\fB25\fP X(A) Not Blinking X.TP 20 X\h'\w'ESC 'u'\fB27\fP X(A) Positive Image X.TP 20 X.B "ESC [ Pn g" X Tab Clear X.TP 20 X\h'\w'ESC 'u'Pn = None or \fB0\fP X Clear Tab at Current Position X.TP 20 X\h'\w'ESC 'u'\fB3\fP X Clear All Tabs X.TP 20 X.B "ESC [ Pn ; Pn r" X(V) Set Scrolling Region X.TP 20 X.B "ESC [ Pn I" X(A) Horizontal Tab X.TP 20 X.B "ESC [ Pn Z" X(A) Backward Tab X.TP 20 X.B "ESC [ Pn L" X(A) Insert Line X.TP 20 X.B "ESC [ Pn M" X(A) Delete Line X.TP 20 X.B "ESC [ Pn @" X(A) Insert Character X.TP 20 X.B "ESC [ Pn P" X(A) Delete Character X.TP 20 X.B "ESC [ Ps ;...; Ps h" X Set Mode X.TP 20 X.B "ESC [ Ps ;...; Ps l" X Reset Mode X.TP 20 X\h'\w'ESC 'u'Ps = \fB4\fP X(A) Insert Mode X.TP 20 X\h'\w'ESC 'u'\fB?5\fP X(V) Visible Bell (\fIOn\fP followed by \fIOff\fP) X.TP 20 X\h'\w'ESC 'u'\fB?6\fP X(V) \fIOrigin\fP Mode X.TP 20 X\h'\w'ESC 'u'\fB?7\fP X(V) \fIWrap\fP Mode X.TP 20 X.B "ESC [ 5 i" X(A) Start relay to printer (ANSI Media Copy) X.TP 20 X.B "ESC [ 4 i" X(A) Stop relay to printer (ANSI Media Copy) X.fi X.SH FILES X.nf X.ta 2i X$(HOME)/.screenrc \fIscreen\fP initialization commands X.br X$(HOME)/.screen Directory created by \fIscreen\fP X.br X$(HOME)/.screen/\fIhost.tty\fP Socket created by \fIscreen\fP X.br Xhardcopy.[0-9] Screen images created by the hardcopy function X.br X/etc/termcap Terminal capability data base X.br X/etc/utmp Login records X.fi X.SH "SEE ALSO" Xtermcap(5), utmp(5) X.SH AUTHOR XOliver Laumann X.SH BUGS XStandout mode is not cleared before newline or cursor addressing. X.PP XIf `LP' is not set but `am' is set, the last character in the last line is never Xwritten, and it is not correctly re-displayed when the screen is Xscrolled up or when a character is deleted in the last line. X.PP XThe VT100 \*Qwrap around with cursor addressing\*U bug is not compensated Xwhen X.I screen Xis running on a VT100. X.PP X`AL,' `DL', and similar parameterized capabilities are not used if present. X.PP X`dm' (delete mode), `xn', and `xs' are not handled Xcorrectly (they are ignored). X.PP XThe \fIGR\fP set of ISO 2022 is not supported. X.PP X`ms' is not advertised in the termcap entry (in order to compensate Xa bug in X.IR curses (3X)). X.PP XScrolling regions are only emulated if the physical terminal supports Xscrolling regions. X.PP X.I Screen Xdoes not make use of hardware tabs. X.PP X.I Screen Xmust be installed as set-uid with owner root in order to be able Xto correctly change the owner of the tty device file for each Xwindow. XSpecial permission may also be required to write the file \*Q/etc/utmp\*U. X.PP XEntries in \*Q/etc/utmp\*U are not removed when X.I screen Xis killed with SIGKILL. ________This_Is_The_END________ if test `wc -l < screen.1` -ne 726; then echo 'shar: screen.1 was damaged during transit (should have been 726 bytes)' fi fi ; : end of overwriting check exit 0