GNU Screen je velmi užitečný program pro práci v příkazové řádce,
je nastavitelný manažer oken v konzoli s terminály VT100/ANSI a rozděluje je.
Dovede rozdělovat celou obrazovku na terminály a přepíná mezi obrazovkami.
Rozděluje fyzický terminál mezi několik procesů (často interatktivní shelly).
Skýtá až 10 pracovních ploch v podobě shellu, které lze ještě rozdělit.
Pro každý terminál je zde paměť historie rolování, mechanismus kopírovat-vložit
který dovede přesouvat text mezi okny.
O screenu
Když je spuštěn příkaz screen, vytvoří se samotné okno s konzolí uvnitř a
můžeme s ní pracovat, jak jsme zvyklí. Kdykoli můžeme vytvořit nové okno s
jiným programem uvnitř, zabít existující okno, zobrazit seznam oken, kopírovat
a vkládat mezi okny, zobrazit historii rolování, přepínat mezi okny v libovolném
stylu. Programy pokračující v pozadí pokračují v běhu, ikdyž jejich okno není
viditelné. Když je program ukončen, okno se zavře a objeví se předchozí okno.
Ve spolupráci s programem Reptyr je skvělým pomocníkem pro vzdálenou administraci a práci.
Nastavení programu je v souboru screenrc, který program používá uživatelský z
domovského adresáře a poté hledá systémový v /etc. Primárně program hledá uživatelské
nastavení v domovském adresáři.
Po uzavření textového editoru jako například nano se nevyčistí text, pro nápravu:
altscreen on
Oprava názvů oken (bash):
windowlist string "%4n %h%=%f"
Moje vymazlené nastavení
Barevné téma pro terminál urxvt k docílení stejného barevného tématu je k dispozici zde.
.screenrc:
defscrollback 5000
startup_message off
vbell off
#mousetrack on
altscreen on
shelltitle "$ |bash"
# Terminal
#term screen-256color
term xterm-256color
#term rxvt-unicode-256color
attrcolor b ".I" # allow bold colors - necessary for some reason
defbce on # use current bg color for erased chars
# okna
screen 1
screen 2
#screen -t MC 3 mc
select 1
bind c screen 1 # window numbering starts at 1 not 0
bind 0 select 10
# layouty
#layout new one
#select 1
#split
#focus down
#select 2
#focus up
#layout new one
#select 1
#split -v
#focus right
#select 2
#split
#focus down
#select 3
#focus left
#layout attach one
#layout select one
# Zkratky
bind -k k1 select 1
bind -k k2 select 2
bind -k k3 select 3
bind -k k4 select 4
bind -k k5 select 5
bind -k k6 select 6
bind -k k7 select 7
bind -k k8 select 8
bind -k k9 select 9
bind -k kl focus left
bind -k kr focus right
bind -k ku focus up
bind -k kd focus down
bindkey -k F1 prev
bindkey -k F2 next
bind = resize =
bind + resize +1
bind - resize -1
truecolors on
hardstatus on
hardstatus alwayslastline
hardstatus string '%{= kG}[ %{G}%H %{g}][%= %{= kW}%?%-Lw%?%{G}(%{G}%n*%f%t%?(%u)%?%{G})%{W}%?%+Lw%?%?%= %{g}][[%{G} %m-%d %{G} %c %{g}]'
caption always "%?%F%{+u WG}%? %= %3n %t %="
#caption always "%?%F%{-b bc}%:%{-b bb}%?%C|%D|%M %d|%H%?%F%{+u wb}%? %L=%-Lw%45>%{+b by}%n%f*%t%{-}%+Lw%-0<"
#caption splitonly "%?%F%{= G}%:%{= W}%?[%n %t]%{02}"
#caption string "%{03} "
.bashrc:
# automaticka jmena oken
export PS1='\[\033k\033\\\]'$PS1
# Nastartovat screen v kazdem shellu
if [[ -z "$STY" ]]; then
screen -xRR session_name
fi
Příkazy v konzoli
-d -r Připojí znovu screen, když je potřeba, tak odpojí screen.
-D -R Připojí tady a teď:když běží sezení, připojí jej znovu. Když je to nezbytné, odpojí a odhlásí jej vzdáleně jako první. Když neběží, vytvoří nové sezení a informuje uživatele.
-h 4000 Definuje historii rolování na 4 000 řádků.
-list Zobrazí seznam sezení programu Screen.
-d -m Vytvoří sezení Screen, ale odpojí jej. Použitelné pro skripty spouštění.
-r Vrátí se na odpojené sezení.
-s program Nastaví výchozí shell na program.
-S jmeno-sezeni Vytvoří sezení s vlastním názvem.
-T terminal Určí výchozí terminál.
-U Spustí Screen v režimu UTF-8, nastaví kódování na UTF-8.
-v Vypíše verzi.
-x Připojí neodpojené sezení.
reptyr pidPřipojí program s číslem pid do Screenu. Vyžaduje program Reptyr
Klávesové zkratky
Začátkem zkratek je vždy Ctrl + a a to v tabulce psát nehodlám, zbytečně by se nám to pletlo.
Když stiskneme Ctrl + a, máme zaktivované naslouchání klávesových zkratek GNU Screen
(které trvá dokud se nestiskne nějaká klávesa) a pak stačí zadat jen zbývající:
c
Nové okno
w
Seznam oken
0
Číslo aktivní obrazovky
1
Číslo aktivní obrazovky
2
Číslo aktivní obrazovky
3
Číslo aktivní obrazovky
4
Číslo aktivní obrazovky
5
Číslo aktivní obrazovky
6
Číslo aktivní obrazovky
7
Číslo aktivní obrazovky
8
Číslo aktivní obrazovky
9
Číslo aktivní obrazovky
n
Další okno
space
Další okno
p
Předchozí okno
backspace
Předchozí okno
S
Rozdělí okno horizontálně
l
Rozdělí obrazovku vertikálně
tab
Přepne vstup na jiný region obrazovky při rozdělení
Q
Zničí rozdělené regiony kromě aktivního, zruší rozdělení
A
Přejmenuje název okna
C
Vyčistí obrazovku
d
Odpojí sezení z terminálu
D D
Odpojí sezení a odhlásí
i
Zobrazí informace o oknu
l
Obnoví okno
t
Zobrazí systémové informace
v
Zobrazí verzi
k
Zabije okno
?
Zobrazí klávesové zkratky
\
Zabije všechna okna a ukončí Screen
:
Režim vkládání příkazů
*
Seznam připojených displejů
Sdílení sezení
Spustíme Screen na lokálním počítači, tím se nám vytvoří i sezení.
Pokud si chceme sezení pojmenovat, použijeme atribut -S a název sezení.
screen -S sdilene
Pro připojení k aktivnímu sezení, které není odpojené, použijeme příkaz:
screen -x
Tipy
Každá klávesová zkratka programu začíná kombinací Ctrl + a
Pro připojení procesu do terminálu použijeme příkaz reptyr: reptyr pid