ubuntuusers.de

tmux

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:


Du möchtest den Artikel für eine weitere Ubuntu-Version testen? Mitarbeit im Wiki ist immer willkommen! Dazu sind die Hinweise zum Testen von Artikeln zu beachten.

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

Wiki/Icons/terminal.png tmux 🇬🇧 ist ein Terminal-Multiplexer für die Kommandozeile, vergleichbar mit screen oder Terminator. tmux ermöglicht es, innerhalb eines Terminals oder einer Terminalemulation verschiedene virtuelle Konsolensitzungen zu erzeugen und zu verwalten. Sitzungen können getrennt ("detach") und später weitergeführt werden ("attach"). Mit tmux ist es möglich, Konfigurationen für unterschiedliche Zwecke zu definieren, sodass man die jeweils gewünschte Umgebung zur Verfügung hat.

Merkmale:

Installation

tmux ist in den offiziellen Paketquellen enthalten und kann über das folgende Paket installiert werden [1]:

  • tmux (universe)

Befehl zum Installieren der Pakete:

sudo apt-get install tmux 

Oder mit apturl installieren, Link: apt://tmux

Bedienung

Start und Konfiguration

tmux wird über ein normales Terminal [2] gestartet:

tmux  

Sollte kein Server gestartet sein, wird dieser automatisch mitgestartet. tmux kennt eine Reihe von Aufrufoptionen, die in der Manpage sehr gut beschrieben sind. Zum Starten von tmux mit Unterstützung für 256 Farben im Terminal und eigener Konfigurationsdatei wird z.B. folgender Befehl genutzt:

tmux -2 -f tmux.conf 

Alternativ kann tmux mit einem Bash-Script (z.B. tmux.sh) gestartet werden, in der die jeweilige tmux.conf eingebunden wird[3]:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#!/bin/bash
SESSION=main
tmux="tmux -2 -f tmux.conf"

# if the session is already running, just attach to it.
$tmux has-session -t $SESSION
if [ $? -eq 0 ]; then
       echo "Session $SESSION already exists. Attaching."
       sleep 1
       $tmux attach -t $SESSION
       exit 0;
fi
                                 
# create a new session, named $SESSION, and detach from it
$tmux new-session -d -s $SESSION
$tmux new-window    -t $SESSION:0 
$tmux split-window  -h -t $SESSION:0
$tmux new-window    -t $SESSION:1 
$tmux new-window    -t $SESSION:2  
$tmux new-window    -t $SESSION:3  
$tmux split-window  -h -t $SESSION:3
$tmux new-window    -t $SESSION:4
$tmux select-window -t $SESSION:0
$tmux attach -t $SESSION

Beispiele der Kommandos

  • Auflisten aller aktuell laufenden tmux-Sitzungen:

    tmux ls 
  • Neue tmux-Sitzung mit dem Namen "hans" starten:

    tmux new -s hans 
  • Verbinden zur bestehenden Sitzung mit dem Namen "hans":

    tmux attach -t hans 
  • Beendet tmux-Server und -Clients und zerstört alle Sitzungen:

    tmux kill-server 

Beispiele für Konfigurationen

Beispiel für eine ~/tmux.conf

set -g history-limit 1000
set -g status-interval 1
set -g status-left '#H#[default]'
set -g status-right '#(cut -d ” ” -f 1-4 /proc/loadavg)#[default] #%Y-%m-%d %H:%M:%S#[default]'
setw -g monitor-activity on
set -g visual-activity on

Beispiel für eine ~/tmux.conf in der die Mausunterstützung ab Ubuntu 16.10 aktiviert wird.

set -g mouse on

Beispiel für eine ~/tmux.conf in der die Mausunterstützung bis Ubuntu 16.04 aktiviert wird.

setw -g mode-mouse on
set -g mouse-resize-pane on
set -g mouse-select-pane on
set -g mouse-select-window on

Diese Kommandos können von

  • ausserhalb, innerhalb von tmux mit 'tmux <Kommando>,

  • in der Konfigurationsdatei ~/.tmux.conf

  • und auch von der Kommando-Zeile (strg + ☺ innerhalb von tmux in einer laufenden Shell angewendet werden.

Kommandos

Hier nur ein paar wichtige Kommandos zum warm werden, die volle Anzahl in den man-pages nachlesen.

Die wichtigsten Parameter:

  • -g globale Einstellung/Auswirkung

  • -t target - Ziel - zum Teil komplett adressierbar: "0:1.2" : Sitzung 0, Fenster 1, Scheibe 2

  • -s source - Quelle - adressierbar wie -t

  • -d detach - im Hintergrund / nicht aktivieren

attach -t <Sitzung>:<Fenster>.<Fensterscheibe>
a -t <Sitzung>:<Fenster>.<Fensterscheibe>
Sich mit der Sitzung verbinden / Client mit dem Server verbinden
set -g Mouse [on/off]
show -g Mouse [on/off]
Maus aktivieren/deaktivieren [br]aktueller Wert anzeigen
set -g display-time <Zeit>
show -g display-time <Zeit>
Anzeige-Zeit in 1/1000tel Sekunden der Meldungen
aktueller Wert anzeigen
set -g escape-time <Zeit>
show -g escape-time <Zeit>
Prefix-Tastenkombinations-Zeit in 1/1000tel Sekunden
aktueller Wert anzeigen
joinp -s <Quelle> -t <Ziel>
join-pane -s <Quelle> -t <Ziel>
Fensterscheibe in ein anderes Fenster bewegen
linkw -s <Quelle> -t <Ziel>
link-window -s <Quelle> -t <Ziel>
unlinkw -s <Quelle> -t <Ziel>
unlinkw-window -s <Quelle> -t <Ziel>
unlink
Verlinkt das Fenster in eine andere Sitzung

Hebt eine Verlinkung auf

Hebt diese Verlinkung auf
selectl <Prarameter>
select-layout <Prarameter>
Parameter:
selectl even-horizontal
selectl even-vertical
selectl main-horizontal
selectl main-vertical
selectl tiled
Auswahl der Aufteilung der Fensterscheiben


gleichgroße horizontale Fensterscheiben
gleichgroße vertikale Fensterscheiben
die erste Scheiben über die gesamte horizontale Breite
die erste Scheiben über die gesamte vertikale Höhe
gleichgroße Aufteilung
swap-pane -D
swap-pane -s0 -t1
Fenterscheibe mit der nächsten vertauschen
Fenterscheibe 0 mit Fenterscheibe 1 tauschen
tmux split-window -v -p50 <Befehl>
tmux split-window -h -p50 <Befehl>
Fenster(scheibe) 50% in zwei vertikale/horizontale Scheiben teilen
rename-session -t <Sitzung>
rename -t <Sitzung>
Sitzung umbenennen
rename-window -t <Fenster>
renamew -t <Fenster>
Fenster umbenennen
kill-server -t <Sitzung> Sitzung beenden
kill-session -t <Sitzung> Sitzung beenden
kill-window -t <Fenster> Fenster beenden
kill-pane -t <Fenterscheibe> Fenster beenden
send-keys -t <Fenterscheibe>
send -t <Fenterscheibe>
Tasten an die Fensterscheibe senden, auch Kombinationen (C-a) oder Navigationstasten (NPage)

Tastenkombinationen

Die Kommandosequenz wird standardmäßig mit Strg + B eingeleitet, und die folgende Eingabe wird als weiteres Kürzel interpretiert.

Einige ausgewählte Tastaturkürzel (Shortcuts)
Tastaturkürzel Bedeutung
Allgemein
? Anzeige der aktiven Tastaturkürzel (keybindings)
Strg + B , : Kommando-Eingabe siehe tmux (Abschnitt „Kommandos“)
[ Scroll-Modus aktivieren, in dem Pfeiltasten zum Scrollen benutzt werden können (beenden: q)
linke Maustaste + Für den Kopiermodus mit der Maus (mode-mouse), wenn auch mouse-select-pane und/oder mouse-select-window verwendet werden
Sitzungen / sessions
S Liste der Sitzungen/Fenster/Scheiben (Client) anzeigen, Sitzungen (Client) wechseln (session)
D Trennen der aktuellen Sitzung (Client) und in den Hintergrund verschieben (detach)
$, $ Umbenennen der Sitzung/session
Fenster / windows
C Erzeugen eines neuen Fensters (create)
& Beenden des aktuellen Fensters, muss mit y bestätigt werden
, Umbenennen des aktuellen Fenstertitels
W Liste der Fenster anzeigen, Fenster wechseln (windows)
L (last) Wechseln zum letzten aktiven Fenster (markiert durch - in der Statusleiste und Fensterliste)
P (previous) Wechsel zum vorherigen Fenster (z.B. von 3 nach 2)
N (next) Wechsel zum nächsten Fenster
1 etc. Wechsel zur Fenster-Nr.
Fensterscheibe / pane (Unterfenster
", " Aktuelle Fensterscheibe (pane) horizontal teilen (erzeugt weitere Fensterscheibe)
%, % Aktuelle Fensterscheibe (pane) vertikal teilen (erzeugt weitere Fensterscheibe)
Q Fensterscheiben Nummern anzeigen
X Aktuelle Fensterscheibe (pane) schließen, muss mit y bestätigt werden
Pfeiltasten Die aktive Fensterscheibe (pane) wechseln
Alt + Pfeiltasten Die aktive Fensterscheibe (pane) in der Größe verändern
Strg + B Strg + O durchrotieren der Fensterscheiben / panes (linksherum, gegen d Uhrzeigersinn)
         Wechsel zwischen verschiedenen Aufteilungen der Fensterscheiben (pane)
Alt + 1
... Alt + 5
Wechsel zur Aufteilung 1: even-horizontal, gleichgroße horizontale Fensterscheibe
Wechsel zur Aufteilung 2: even-vertical, gleichgroße vertikale Fensterscheiben
Wechsel zur Aufteilung 3: der Fensterscheiben: main-horizontal, die erste über die gesamte Breite
Wechsel zur Aufteilung 4 der Fensterscheiben: main-vertical, die erste über die gesamte Höhe
Wechsel zur Aufteilung 5: tiled, gleichgroße Aufteilung
Alt + + E aktuelle Fensterscheiben gleichmäßig verteilen
Strg + B Z zoomen der aktiven Fensterscheibe/pane (als Vollbild, im gesamten Fenster)
! Die aktuelle Fensterscheibe (pane) aus dem Fenster lösen und ein neues Fenster mit dieser Fensterscheibe erstellen

X11-Selektion

Im Artikel screen auf Steroiden: tmux 🇩🇪 wird eine einfache Methode beschrieben, tmux mit der X11-Selektion zusammenarbeiten zu lassen. Dazu benötigt man xclip. Die nötigen Ergänzungen der ~/tmux.conf:

# damit xclip lokal arbeiten kann
set-environment -g DISPLAY :0.0
# paste-buffer in die X11 selection
bind C-c run "tmux show-buffer | xclip -i -selection primary"
# X11 selection in den tmux paste-buffer
bind C-v run "tmux set-buffer -- \"$(xclip -o -selection primary)\"; tmux paste-buffer"

Das fügt zu den tmux-Tastaturkommandos (Prefix Strg + B ) folgende hinzu:

X11 primary selection (Shortcuts)
Tastaturkürzel Bedeutung
Strg + C aktuellen tmux paste-Puffer in die "X11 primary selection" schreiben
Strg + V Inhalt der "X11 primary selection" in den tmux-paste-Puffer übernehmen

Das funktioniert so nicht in entfernten tmux-Sitzungen (z.B. per SSH mit X11-forwarding). Dann muss die DISPLAY-Variable in den tmux-panes explizit gesetzt werden.

Diese Revision wurde am 17. September 2022 03:39 von cptechnik erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Shell, Terminal, Server, Fernwartung