forked from pifty/tutes-dump
213 lines
8.6 KiB
Plaintext
213 lines
8.6 KiB
Plaintext
====== Screen ======
|
||
|
||
Contents
|
||
|
||
- [[#intro|Introduction]]
|
||
- [[#start|Starting Screen, detaching and reattaching]]
|
||
- [[#multiwin|Multiple windows]]
|
||
- [[#multisession|Multiple sessions]]
|
||
- [[#split|Splitting windows]]
|
||
- [[#share|Sharing screen sessions]]
|
||
- [[#screenrc|.screenrc]]
|
||
- [[#cheatsheet|Cheat sheet]]
|
||
- [[#resources|Resources]]
|
||
|
||
===== Introduction =====
|
||
|
||
[[http://savannah.gnu.org/projects/screen/|Screen]] is a terminal multiplexer, i.e., it will let you have multiple virtual terminals in a single window. You will also be able to 1) detach a screen session, and then detach it in a later moment; 2) share screen sessions.
|
||
|
||
In this tutorial $ indicates a terminal prompt (just for visual convenience).
|
||
|
||
A Screen command is usually of the form CTRL-a KEY, i.e., you'll have to press the CTRL key along with a, followed by a generic KEY. (Screen's default escape key is CTRL-a.)
|
||
|
||
You'll need to be a [[http://sdf.org/?join#meta|MetaARPA]] member in order to use Screen on SDF
|
||
|
||
If you want a screencast tutorial, type:
|
||
|
||
"$ ttyplay /ftp/pub/users/jecxjo/howto/screen"
|
||
|
||
on a terminal connected to SDF.
|
||
|
||
Alternatively, you can watch the screencast online at [[http://playterm.org/r/brief-screen-tutorial-1307563176|PlayTerm.]]
|
||
|
||
===== Starting Screen, detaching and reattaching =====
|
||
|
||
You can run screen by typing:
|
||
|
||
"$ screen"
|
||
|
||
When you run it, a window with some copyright and some other info will show up, with [Press Space or Return to end.] at the bottom. OK, as it says, you can now press Space or Enter. You will then see your shell prompt and nothing else. That's fine: you can now run your programs as usual, the difference is that they will run under a Screen session. You can detach it by typing CTRL-a d. Screen will keep your session running. Now if you logout, then log back in, and type:
|
||
|
||
"$ screen -r"
|
||
|
||
you'll see your terminal as you left it when you detached Screen!
|
||
|
||
If you lost connection, or simply forgot to detach Screen, and want to resume your session by typing:
|
||
|
||
"$ screen -d -r"
|
||
|
||
The -d flag will detach Screen, while -r will reattach. There are various types of detach and flags. For instance, if you type the previous command and there was no screen session to be resumed, you'll get a There is no screen to be detached. message. In this case you'll probably need:
|
||
|
||
"$ screen -d -R"
|
||
|
||
which will first create a new session (or rettach an existing one).
|
||
|
||
===== Multiple windows =====
|
||
|
||
You can create various windows under your Screen session, each one running their own program. When you are in a Screen session, typing:
|
||
|
||
"$ screen"
|
||
|
||
will create a new window, leaving the previous window untouched, though not visible. Instead of typing screen, you can use the shortcut CTRL-a c.
|
||
|
||
You can create as many windows as you want. You can swith between windows with CTRL-a n (next window) and CTRL-a p (previous window). It's also possible to select windows by number. Typing CTRL-a 1 will open window number 1, CTRL-a 2, to window 2, and so on.
|
||
|
||
How do you know what's a window number? Well, you can type CTRL-a " (yeah, that's a double quote). In that case a menu with a windows list will open. You can select a number and press enter to go to that screen. An easier way is to have a hard status line that shows you each window number. For doing this in a permanent manner, you'll have to create a .screenrc (Screen's customization file) in your $HOME directory and write in it the following lines:
|
||
|
||
hardstatus alwayslastline
|
||
hardstatus string "%{WK}%-LW %{Y.}%n%f* %t%{-}%+LW"
|
||
|
||
(We will see what that crazyness means later.)
|
||
|
||
For your .screenrc file to be read by Screen, you'll have to start a new session. BTW, a Screen session ends when the last window is closed.
|
||
|
||
===== Multiple sessions =====
|
||
|
||
It's possible to have various Screen sessions running, each one with their own set of windows open. If you started Screen by just typing screen, a new session is created. If you detach and type screen again, a new session will start. If you now type:
|
||
|
||
"$ screen -ls"
|
||
|
||
it will give you a list of Screen sessions like this:
|
||
|
||
3340.pts-6.HOST (Detached)
|
||
4522.pts-8.HOST (Attached)
|
||
2 Sockets in /tmp/screens/S-YOU
|
||
|
||
where HOST is the hostname and YOU is your username.
|
||
|
||
You can reattach a screen session by name. Say for instance that you want to resume the 4522.pts-8.HOST session. In this case you'll have to type:
|
||
|
||
"$ screen -r 4522.pts-8.HOST"
|
||
|
||
Obviously 4522.pts-8.HOST is not a very userfriendly session name. You can give a meaningful name by starting screen as:
|
||
|
||
"$ screen -S mysession"
|
||
|
||
where mysession is the name you want to give to your session (e.g., work).
|
||
|
||
===== Splitting windows =====
|
||
|
||
It could be useful to split a window so that you can have two programs running on the viewport. In this case, type CTRL-a S and you'll see that the window will be split in two regions, with the one at the bottom blank. You can swith to it with CTRL-a TAB (TAB is the tab key) and then select a window by typing its number, or p (previous) or n (next), e.g., CTRL-a 2. You can always swith through regions with CTRL-a TAB.
|
||
|
||
It's possible to split the window in more then two regions, each time by typing CTRL-a S
|
||
|
||
If you want to split a window vertically, you'll have to either use a patch[1] or use a recent version of Screen.
|
||
|
||
===== Sharing screen sessions =====
|
||
|
||
The scenario is...
|
||
|
||
HOSTUSER and SOMEUSER are both MetaARPA members logged into sverige.
|
||
|
||
HOSTUSER wants to give SOMEUSER read only access to screen session of HOSTUSER.
|
||
|
||
HOSTUSER starts a screen session as normal.
|
||
|
||
Only three commands are needed for basic read only access to the current active window.
|
||
|
||
HOSTUSER types the following commands beginning with CTRL-a : each time ( //control and 'a' followed by a colon //)
|
||
|
||
CTRL-a:multiuser on
|
||
|
||
CTRL-a:password none
|
||
|
||
CTRL-a:aclchg SOMEUSER -w "#"
|
||
|
||
SOMEUSER should exit screen first, then in the shell, type:
|
||
|
||
"$ screen -r HOSTUSER/"
|
||
|
||
SOMEUSER now has read only access to the active window in HOSTUSER's screen session at the time of attaching.
|
||
|
||
HOSTUSER can verify SOMEUSER is attached by typing:
|
||
|
||
CTRL-a*
|
||
|
||
HOSTUSER can disconnect SOMEUSER by typing:
|
||
|
||
CTRL-a:acldel HOSTUSER
|
||
|
||
HOSTUSER can verify SOMEUSER is no longer attached by typing:
|
||
|
||
CTRL-a*
|
||
|
||
HOSTUSER can allow SOMEUSER access to additional commands.
|
||
|
||
The following commands allow SOMEUSER to cycle backwards and forward through the windows and detach.
|
||
|
||
HOSTUSER types:
|
||
|
||
CTRL-a:aclchg SOMEUSER +x next
|
||
|
||
CTRL-a:aclchg SOMEUSER +x prev
|
||
|
||
CTRL-a:aclchg SOMEUSER +x detach
|
||
|
||
////
|
||
|
||
=== ===
|
||
|
||
Some notes:
|
||
|
||
** Screen version that was used "Screen version 4.00.03 (FAU) 23-Oct-06"
|
||
|
||
** At the time of writing ( Tue Apr 17 23:01:50 IST 2012 ) all attempts at achieving the above read only functionality by editing .screenrc failed, usually resulting in SOMEUSER having FULL access to HOSTUSER's screen and shell account.
|
||
|
||
** HOSTUSER might notice that screen resizes to fit the smaller of the two terminals.
|
||
|
||
** After SOMEUSER is detachs HOSTUSER might try CTRL-aF to resize the screen windows to fit the terminal.
|
||
|
||
** For convenience and to reduce typing in screen HOSTUSER might want to have "multiuser on" and "password none" in .screenrc. HOSTUSER's screen is still private until a user is permitted to attach with aclchg.
|
||
|
||
** HOSTUSER will hear/see lots of bells if SOMEUSER tries to type into the screen session.
|
||
|
||
** HOSTUSER can check what window is being view by SOMEUSER by looking at the output of CTRL-a*
|
||
|
||
** HOSTUSER might notice SOMEUSER appears to have rwx access in the output of CTRL-a* ...this is a bug or an undocumented feature.
|
||
|
||
** SOMEUSER can remain attached even if HOSTUSER detachs.
|
||
|
||
===== .screenrc =====
|
||
|
||
As we previously saw, it is possible to customize Screen by writing settings in a file named .screenrc in your $HOME directory. We will now some useful Screen settings.
|
||
|
||
==== Avoiding the startup message ====
|
||
|
||
A full screen message with copyright and other stuff is usually displayed at startup. This can get annoying. In order to avoid it, you can put in your .screenrc the following:
|
||
|
||
startup_message off
|
||
|
||
==== Keybindings ====
|
||
|
||
It's possible to bind keys so that when you type CTRL-a KEY Screen willl open a new window launching some program. For instance, if you write in your .screenrc file
|
||
|
||
bind m screen -t mail 1 mutt
|
||
|
||
each time you'll type CTRL-a m a new window (named mail)with mutt will be created. Be careful: when you bind a key, you'll overwrite Screen's defaults (e.g., we just lost the lastmsg key).
|
||
|
||
===== Cheat sheet =====
|
||
|
||
TODO
|
||
|
||
===== Resources =====
|
||
|
||
* http://aperiodic.net/screen/start
|
||
* http://www.bangmoney.org/presentations/screen.html
|
||
* SDF has some [[http://sdf.org/?tutorials/dotfiles|annotated dotfiles]].
|
||
|
||
===== Notes =====
|
||
|
||
[1] http://fungi.yuggoth.org/vsp4s/
|
||
|
||
----
|
||
$Id: screen.html,v 1.8 2012/05/08 14:45:50 dickey Exp $ |