Graham King

Solvitas perambulum

GNU Screen basics quick reference

strategy screen unix
Summary
Tmux is a terminal multiplexer recommended over screen for its additional functionalities while maintaining simplicity. To use screen, install it via `sudo apt-get install screen` and configure it with a `.screenrc` file in your home directory. Key configurations include setting bash as the default shell, enlarging scrollback, turning off startup messages, and setting up the status line and initial screens. Start or re-attach sessions using `screen -DR`. Essential commands involve navigation and control: move between terminals with `Ctrl-a <num>`, detach with `Ctrl-a d`, create a new terminal with `Ctrl-a c`, and scroll back with `Ctrl-a <esc>`. Splitting windows can be done with `Ctrl-a S` and navigating splits via `Ctrl-a <tab>`.

Update 2021 Prefer tmux. It does everything screen does and a lot more, and is just as simple to get started with.

Screen is a terminal multiplexer. In simple language, screen allows you to ssh into a machine and open several sessions at once, and leave them running. If you work on remote machines, you need screen.

Install it

sudo apt-get install screen

Configure it

The .screenrc file in your home directory configures screen. Use this to get you started:

# Use bash
shell /bin/bash

# Big scrollback
defscrollback 1024

# No annoying startup message
startup_message off

# Display the status line
hardstatus on
hardstatus alwayslastline
hardstatus string "%{.kW}%-w%{.bW}%t [%n]%{-}%+w %=%{..G} %H %{..Y} %Y/%m/%d %c"

# Setup screens
screen -t 'one' 0 bash
screen -t 'two' 1 bash
screen -t 'extra' 2 bash

# Switch to the first screen
select 0

Start or re-attach: screen -DR. Think of it as the screen doctor. This is the first thing I type after I ssh into a remote machine. If screen is already running, it attaches to it, otherwise it starts a new session.

Essential Commands

All screen commands start with Ctrl-a.

  • Move between terminals: Ctrl-a <num>, so to go to window 1, hold down Ctrl and press a. Release Ctrl, and press number 1.
  • Detach: Ctrl-a d. This is what I type at the end of the day. That leaves everything as it is, and I can re-attach to the sessions next time I ssh in.
  • Exit:Ctrl-a \. Closes all your terminals and exits screen. I very rarely use this.
  • Help: Ctrl-a ?. The help is pretty opaque. Hence this blog post :-)
  • Create: Ctrl-a c. Creates a new terminal. When you’re done using it, simply exit like you normally would. If you find yourself often creating more terminals, edit your .screenrc to start with more.

Scrollback

  • Go to scrollback mode: Ctrl-a <esc>. This is actually Copy mode, but works well for seeing what’s scrolled off the screen
  • Page back: <pageUp>, <pageDown>, <arrow Up> or <arrow Down>. This moves you through the scrollback buffer.
  • Exit scrollback: <esc>. Simply hitting Esc takes you back to your prompt, in normal mode.

Split

Screen allows you to split your window, so you could for example watch the tail of a log file in one half, and work in the other.

  • Split: Ctrl-a S. That’s a capital s.
  • Move between split windows: Ctrl-a <tab>
  • Unsplit: Ctrl-a Q.

I’ve been using screen for many years, and that’s the only commands I use even semi-regularly.

Happy screening!