it-swarm.it

tmux vs. GNU

Sfogliare le domande Ho trovato su tmux (normalmente usavo GNU Screen). La mia domanda è: quali sono i pro e i contro di ciascuno di essi. Soprattutto non sono riuscito a trovare molto su tmux.

196
Maciej Piechotka

Da il loro sito Web :

  • In che modo tmux differisce da GNU? Cos'altro offre?

tmux offre diversi vantaggi rispetto allo schermo:

  • un modello client-server chiaramente definito: le finestre sono entità indipendenti che possono essere collegate simultaneamente a più sessioni e visualizzate da più client (terminali), nonché spostate liberamente tra le sessioni all'interno dello stesso server tmux;
  • un'interfaccia di comando coerente e ben documentata, con la stessa sintassi se utilizzata in modo interattivo, come associazione di tasti o da Shell;
  • facilmente programmabile da Shell;
  • più buffer di pasta;
  • scelta di layout chiave vi o emacs;
  • un'opzione per limitare le dimensioni della finestra;
  • una sintassi della riga di stato più utilizzabile, con la possibilità di visualizzare la prima riga di output di un comando specifico;
  • una base di codice più pulita, moderna, facilmente espandibile, con licenza BSD.

Ci sono ancora alcune funzionalità incluse nella schermata che tmux omette:

  • supporto seriale e telnet integrato; questo è gonfio ed è improbabile che venga aggiunto a tmux;
  • supporto di piattaforme più ampio, ad esempio IRIX e HP-UX, e per terminali dispari.
124
nisc

Una differenza sta nel modo in cui i due agiscono quando più terminali sono collegati a una singola sessione.

Con lo schermo, la vista di ciascun terminale collegato è indipendente dalle altre. Con tmux, tutti i terminali collegati vedono la stessa cosa.

Supponi di avere due terminali collegati a una singola sessione di tmux. Se digiti ^B 1 in un terminale, l'altro terminale passa anche alla finestra 1.

Quando si hanno due terminali collegati a una singola sessione dello schermo e si digita ^A 1 in uno, non ha alcun effetto sull'altro terminale.

Questo si basa sulla mia esperienza con tmux 1.2; Vedo che 1.3 è uscito, ma non ho notato nulla nel log delle modifiche sul cambiamento di questo comportamento.

Se ti piace il comportamento dello schermo e lo desideri in tmux:

Se la tua sessione tmux originale si chiama 0 (impostazione predefinita), quindi puoi fare tmux new-session -t 0) per avviare una nuova sessione indipendente collegata allo stesso set di finestre, che può quindi avere una propria vista.

45
drench

tmux è abbastanza nuovo rispetto allo schermo GNU. Vantaggi/Svantaggi è una domanda difficile, poiché entrambi i programmi risolvono approssimativamente lo stesso problema. tmux è concesso in licenza BSD mentre lo schermo è GNU GPL. Questo è importante per alcune persone.

lo schermo è più rappresentato (su Linux) al momento, cioè è più probabile che lo trovi su un determinato box di Linux rispetto a tmux. tmux è comunque più rappresentato su OpenBSD in quanto è incluso come parte dell'installazione di base.

Entrambi i programmi ti consentono di fare la stessa cosa, sebbene lo stato delle cose sia un po 'più complesso di così. Il passaggio tra i due non è eccessivamente complicato, poiché gran parte della funzionalità degli schermi ha trovato la sua strada in tmux, anche se se sei un utente esperto di uno, probabilmente troverai alcune frustrazioni quando passi all'altro.

Come con qualsiasi programma, dipende davvero dalle tue esigenze e con quali ti senti più a tuo agio. Provali entrambi e prova a giocare bene.

Per maggiori informazioni su tmux consultare https://tmux.github.io/

25
gabe.

Ho pensato di menzionare solo il wrapper byobu disponibile per lo schermo che lo rende molto migliore fin dall'inizio. Non so se qualcosa di simile è disponibile per tmux, ma byobu ha reso il mio .screenrc solo una manciata di righe. Dai un'occhiata a questo articolo rapido su byobu e schermate. La pagina del progetto per byob descrive il nome che deriva da un termine giapponese per schermi decorativi multi-pannello che fungono da divisori pieghevoli. Inoltre, solo eseguirlo non danneggia le impostazioni dello schermo, quindi puoi provarlo in sicurezza. Una volta avviata la sessione con byobu puoi riconnetterti liberamente usando screen e non perdere comunque le personalizzazioni fatte da byobu (quindi usalo solo per l'invocazione iniziale). I due vantaggi principali sono:

  • Avvia la schermata con un paio di barre di stato con informazioni utili
  • Fornisce molte combinazioni di tasti per accedere più facilmente alle funzionalità dello schermo

Non sto usando la parte dei tasti, ma trovo sicuramente utili le barre di stato.

Inoltre potresti trovare utile il link Screen Vs tmux . Penso che la maggior parte sia già menzionata dalle risposte esistenti.

18
haridsv

La differenza più grande nel mio uso è che nello schermo di Gnu puoi solo dividere i fotogrammi in orizzontale, mentre in Tmux puoi dividere sia in orizzontale che in verticale. Questo è un tipo di bersaglio mobile, anche se come ho detto che la divisione verticale sta entrando nello schermo .

A parte questo, le cose sono piatte.

17
Eli Frey

Un grande svantaggio di screen è che non è sviluppato attivamente. bug pages hanno quasi 200 oggetti non assegnati che risalgono a 5 anni fa.

tmux ha anche alcuni problemi aperti, ma molto meno ed è supportato più attivamente.

12
Harold

Drench solleva un punto interessante: il comportamento predefinito di connettersi due volte alla stessa sessione è diverso in tmux. Tuttavia, se vuoi collegarti due volte e avere una vista indipendente delle finestre in quella sessione, inizia con tmux

tmux new-session -t <session name>

Ciò creerà una nuova sessione per te e alleggerirà le finestre della sessione già esistente. Se non hai nominato la tua prima sessione, puoi aggiungerne una con "rename-session".

12
Rikard Anglerud

tmux è più recente e molte altre funzionalità.

Ho scoperto che un buon utilizzo dipende da una buona configurazione.

Uso vi (vim) per l'editing (Ruby on Rails) e ci sono alcune cose di installazione per farlo funzionare bene.

Ecco il mio file ~/.tmux.conf con molte impostazioni utili:

bind r source-file ~/.tmux.conf \; display "Reloaded!"  # Reload with ctrl-r
set -g prefix C-a         # prefix from ctrl-b to ctrl-a
unbind C-b                # allow ctrl-b for other things
set -sg escape-time 1     # quicker responses
bind C-a send-prefix      # Pass on ctrl-a for other apps
set -g base-index 1        # Numbering of windows
setw -g pane-base-index 1  # Numbering of Panes
bind \ split-window -h    # Split panes horizontal
bind - split-window -v    # Split panes vertically
bind h select-pane -L     # Switch to Pane Left
bind j select-pane -D     # Switch to Pane Down
bind k select-pane -U     # Switch to Pane Up
bind l select-pane -R     # Switch to Pane Right
bind -r C-h select-window -t :-  # Quick Pane Selection
bind -r C-l select-window -t :+  # Quick Pane Selection
bind -r H resize-pane -L 5       # Switch to Pane Left
bind -r J resize-pane -D 5       # Switch to Pane Down
bind -r K resize-pane -U 5       # Switch to Pane Up
bind -r L resize-pane -R 5       # Switch to Pane Right
setw -g mode-mouse off           # Mouse Off
set -g mouse-select-pane off     # Mouse Off  
set -g mouse-resize-pane off     # Mouse Off
set -g mouse-select-window off   # Mouse Off
setw -g monitor-activity on      # Activity Alerts
set -g visual-activity on
set -g status-fg white           # Status line Colors
set -g status-bg black
setw -g window-status-fg cyan    # Window list color
setw -g window-status-bg default
setw -g window-status-attr dim
setw -g window-status-current-fg white     # Active Window Color
setw -g window-status-current-bg red
setw -g window-status-current-attr bright
set -g pane-border-fg green      # Pane colors
set -g pane-border-bg black 
set -g pane-active-border-fg white 
set -g pane-active-border-bg yellow
set -g message-fg white          # Command/Message Line.
set -g message-bg black
set -g message-attr bright
set -g status-left-length 40     # Status Line, left side
set -g status-left "#[fg=white]Session: #S #[fg=yellow]#I #[fg=cyan]#P"
set -g status-utf8 on            # Status Line, right side
set -g status-right "-------"
set -g status-interval 60        # frequency of status line updates
set -g status-justify centre     # center window list
setw -g mode-keys vi             # vi keys to move 
unbind v                         # Open panes in same directory as tmux-panes script
unbind n
bind v send-keys " ~/tmux-panes -h" C-m
bind n send-keys " ~/tmux-panes -v" C-m
unbind Up                        # Maximizing and Minimizing...
bind Up new-window -d -n tmp \; swap-pane -s tmp.1 \; select-window -t tmp
unbind Down
bind Down last-window \; swap-pane -s tmp.1 \; kill-window -t tmp
bind P pipe-pane -o "cat >>~/#W.log" \; display "Toggled logging to ~/#W.log"
8
Michael Durrant

Mi prenderò la libertà di aggiungere una differenza:

tmux è basato su ncurses mentre lo schermo non disegna elementi aggiuntivi. Se qualcuno usa un emulatore di terminale che supporta lo/gli scorrimento/i, lo scorrimento con lo schermo ma non con tmux (almeno nella configurazione predefinita). Lo stesso vale per la ricerca e funzionalità simili.

8
Maciej Piechotka

Ho avuto problemi a ottenere lo schermo per supportare utf-8 e 256 colori, ma tmux ha funzionato immediatamente.

6
zvolkov