Unterschiede zwischen den Revisionen 14 und 15
Revision 14 vom 2014-04-20 14:39:14
Größe: 3811
Autor: anonym
Kommentar: scrollen mit C-a ESC
Revision 15 vom 2022-11-20 10:48:48
Größe: 0
Autor: phil
Kommentar: ins neue Wiki verschoben und aktualisiert
Gelöschter Text ist auf diese Art markiert. Hinzugefügter Text ist auf diese Art markiert.
Zeile 1: Zeile 1:
= Spass mit Screen =

''screen'' ist ein hilfreiches Programm, mit dem du innerhalb einer Terminal-Sitzung mehrere virtuelle Terminals nutzen kannst. Beispielsweise musst du also nur eine ''ssh''-Sitzung eröffnen und kannst trotzdem entfernte Programme auf mehreren Konsolen gleichzeitig ausführen.

Besonders angenehm ist es auch, in einer ''screen''-Sitzung auf einem entfernten Rechner ein langwieriges Programm zu starten (z.B. einen schönen neuen Kernel kompilieren), da du zwischenzeitlich die ''screen''-Konsole abhängen und die Netzwerkverbindung trennnen kannst. Später kannst du dich einfach wieder in die alte Sitzung einhängen.

== es geht los ==
{{{
screen}}}
einmalig starten, dann ist man in der Matrix, ansonsten geht auch: {{{
screen vi DATEI}}}
dies öffnet einen ''vi'' innerhalb der neuen Matrix

Falls dich der Start-Info-Bildschirm stört, dann kannst du ihn per Option ''startup_message'' in der ''/etc/screenrc'' unterdrücken.

Um der Sitzung einen Namen zu geben, kann der Parameter ''-S sitzungsname'' verwendet werden. Dies gilt sowohl für die Erzeugung, als auch für einen späteren Zugriff auf die Sitzung.


== Tastenkombinationen ==
"Ctrl-a" gibt dir die Macht über die Konsolen ...

 C-a ?:: zeigt wichtige Kürzel
 C-a c:: öffnet ein neues Fenster
 C-a w:: zeigt alle offenen Fenster
 C-a 0:: springt zum ersten Fenster, 1 zum zweiten usw.
 C-a space:: schaltet die Fenster einzeln durch
 C-a A:: benennt das aktuelle Fenster um
 C-a a:: schaltet zwischen zwei Fenstern hin und her
 C-a h:: schreibt den aktuellen Bildschirminhalt in ''hardcopy.N''
 C-a H:: beginnt/beendet das Protokollieren in die Datei ''screenlog.N''
 C-a C-k:: schließt das aktuelle Fenster
 C-a ESC:: Scroll-Modus: mit den Cursortasten kannst du dich nun beliebig in der Terminal-History bewegen; zweimal ESC beendet diesen Modus

== Ausklinken aus einer screen-Sitzung ==
 C-a d:: detach, trennt dich von der Matrix (sie läuft im Hintergrund weiter)
 C-d:: (EOF - gleichbedeutend mit ''exit'') - die aktuelle Shell wird geschlossen und damit auch das aktuelle Fenster - mit dem Schließen des letzten Fensters wird ''screen'' beendet

== Einhängen in eine alte Sitzung ==
 screen -r:: klappt, falls du dich per ''detach'' freiwillig aus der Sitzung ausgehängt hast
 screen -x:: damit hängst du dich in eine laufende Sitzung (falls die Netzwerkverbindung zwischendurch unterbrochen wurde oder du gleichzeitig mit anderen Menschen im selben Fenster arbeiten willst)
 screen -d -r:: trennt eine ''screen''-Sitzung von ihrer ursprünglichen Konsole und verbindet sie anschließend mit der aktuellen Konsole

== Einschleusen von Tastatureingaben ==
 screen [-S screenname] -X readbuf [DATEI]:: liest den Inhalt von DATEI (Standard: ''/tmp/screen-exchange'') in den internen Zwischenspeicher der screen-Sitzung
 screen [-S screenname] -X paste \.:: sendet den Inhalt dieses Zwischenspeichers in das aktuelle Fenster der screen-Sitzung (eigentlich ist es nur ''paste .'', allerdings führt die bash ohne backslash eine Substitution durch)
 Beispielskript:: das folgende Skript sendet seine Parameter als Zeichen in das screen-Sitzung (diese kann mit ''-S screenname'' gewählt werden){{{
#!/bin/sh
TMP_FILE=/tmp/screen-exchange-$$
[ "$1" = "-S" ] && shift && SC_OPTS="$SC_OPTS -S $1" && shift
echo -en "$@" > "$TMP_FILE"
screen $SC_OPTS -X readbuf "$TMP_FILE"
screen $SC_OPTS -X paste \.
rm "$TMP_FILE"}}}

== Automatisiertes Öffnen mehrerer Programme ==
Folgende Datei ist ausführbar und startet mehrere Fenster mit verschiedenen Programmen:
{{{
 #!/usr/bin/screen -c

setenv FOO "bar"

# Teile den Bildschirm horizontal in zwei Bereiche
split

screen -t "dmesg" 0 bash

focus down
screen -t "top" 1 top

focus up
}}}

Creative Commons Lizenzvertrag
This page is licensed under a Creative Commons Attribution-ShareAlike 2.5 License.