web-development-kb-pt.site

tmux vs. GNU

Navegando pelas perguntas Eu descobri o tmux (eu normalmente usava GNU)). Minha pergunta é quais são os prós e os contras de cada uma delas. Especialmente, não consegui encontrar muito sobre tmux.

196
Maciej Piechotka

De site deles :

  • Qual a diferença entre o tmux e a tela GNU? O que mais ele oferece?

o tmux oferece várias vantagens sobre a tela:

  • um modelo cliente-servidor claramente definido: janelas são entidades independentes que podem ser anexadas simultaneamente a várias sessões e visualizadas em vários clientes (terminais), além de serem movidas livremente entre as sessões no mesmo servidor tmux;
  • uma interface de comando consistente e bem documentada, com a mesma sintaxe usada interativamente, como uma ligação de chave ou do Shell;
  • facilmente programável a partir do Shell;
  • vários buffers de pasta;
  • escolha de layouts de teclas vi ou emacs;
  • uma opção para limitar o tamanho da janela;
  • uma sintaxe de linha de status mais utilizável, com a capacidade de exibir a primeira linha de saída de um comando específico;
  • uma base de código licenciada por BSD, mais limpa, moderna e de fácil extensão.

Ainda existem alguns recursos que a tela omite:

  • suporte serial e telnet integrado; isso é inchaço e é improvável que seja adicionado ao tmux;
  • suporte mais amplo à plataforma, por exemplo, IRIX e HP-UX e para terminais ímpares.
124
nisc

Uma diferença está em como os dois agem quando vários terminais são conectados a uma única sessão.

Com a tela, a visão de cada terminal conectado é independente dos outros. Com o tmux, todos os terminais conectados veem a mesma coisa.

Digamos que você tenha dois terminais conectados a uma única sessão do tmux. Se você digitar ^B 1 em um terminal, o outro terminal também muda para a janela 1.

Quando você tem dois terminais conectados a uma sessão de tela única e digita ^A 1 em um, não tem efeito no outro terminal.

Isso é baseado na minha experiência com o tmux 1.2; Vejo que 1.3 está fora, mas não notei nada no changelog sobre essa mudança de comportamento.

Se você gosta do comportamento da tela e deseja no tmux:

Se a sua sessão original do tmux for chamada 0 (o padrão), então você pode fazer tmux new-session -t 0) para iniciar uma nova sessão independente conectada ao mesmo conjunto de janelas, que pode ter sua própria visão.

45
drench

o tmux é relativamente novo comparado com a tela GNU. Vantagens/Desvantagens é uma pergunta difícil, pois os dois programas resolvem aproximadamente o mesmo problema. O tmux é licenciado para BSD enquanto a tela é GNU GPL. Isso é importante para algumas pessoas.

a tela está mais representada (no Linux) no momento, ou seja, é mais provável que você a encontre em uma determinada caixa Linux do que no tmux. No entanto, o tmux está mais representado no OpenBSD, pois está incluído como parte da instalação base.

Ambos os programas permitem que você faça a mesma coisa, embora o estado das coisas seja um pouco mais complexo que isso. Alternar entre os dois não é muito complicado, pois muitas das funcionalidades das telas também chegaram ao tmux, embora se você for um usuário avançado de um deles, provavelmente encontrará algumas frustrações ao mudar para o outro.

Como em qualquer programa, isso realmente depende das suas necessidades e com as quais você se sente mais confortável. Experimente os dois e veja com os quais você joga bem.

Para mais informações sobre o tmux, consulte https://tmux.github.io/

25
gabe.

Eu pensei em mencionar apenas o invólucro byobu que está disponível para a tela, o que o torna muito melhor imediatamente. Não sei se algo assim está disponível para o tmux, mas byobu fez do meu .screenrc apenas algumas linhas. Confira este artigo rápido sobre byobu e capturas de tela. A página do projeto para byob descreve o nome originário de um termo japonês para telas decorativas de vários painéis que servem como divisórias de salas dobráveis. Além disso, apenas executá-lo não prejudica as configurações da tela, para que você possa testá-lo com segurança. Depois de iniciar a sessão com byobu, você pode se reconectar livremente usando screen e ainda não perder nenhuma personalização feita por byobu (portanto, use-a apenas para a chamada inicial). As duas principais vantagens são:

  • Inicia a tela com algumas barras de status com informações úteis
  • Fornece muitas combinações de teclas para acessar a funcionalidade da tela com mais facilidade

Não estou usando a parte de combinações de teclas, mas definitivamente considero as barras de status úteis.

Além disso, você pode encontrar o link Screen Vs tmux útil. Eu acho que a maior parte já foi mencionada pelas respostas existentes.

18
haridsv

A maior diferença em meu uso foi que, no Gnu Screen, você só pode dividir quadros horizontalmente, enquanto no Tmux, você pode dividir horizontal e verticalmente. Este é um tipo de alvo em movimento, embora, como eu digo aqui, a divisão vertical esteja entrando na tela .

Fora isso, as coisas são simples.

17
Eli Frey

Um grande golpe para screen é que ele não é desenvolvido ativamente. O páginas de erros possui cerca de 200 itens não atribuídos que remontam a 5 anos.

tmux também possui alguns problemas em aberto, mas muito menos, e é suportado mais ativamente.

12
Harold

Drench levanta um ponto interessante - o comportamento padrão de conectar duas vezes à mesma sessão é diferente no tmux. No entanto, se você deseja anexar duas vezes e ter uma visão independente das janelas nessa sessão - inicie o tmux com

tmux new-session -t <session name>

Isso criará uma nova sessão para você e anexará as janelas da sessão já existente. Se você não nomeou sua primeira sessão, você pode adicionar uma com 'rename-session'.

12
Rikard Anglerud

o tmux é mais novo e vários outros recursos.

Eu descobri que o bom uso depende de uma boa configuração.

Eu uso o vi (vim) para editar (Ruby on Rails) e há algumas coisas de configuração para fazer isso funcionar bem.

Aqui está o meu arquivo ~/.tmux.conf com muitas configurações úteis:

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

Terei a liberdade de acrescentar uma diferença:

o tmux é baseado em ncurses enquanto a tela não desenha elementos adicionais. Se alguém usar um emulador de terminal que suporte rolagem, ele rolará com a tela, mas não com o tmux (pelo menos na configuração padrão). O mesmo se aplica à pesquisa e recursos similares.

8
Maciej Piechotka

Eu tive problemas para obter a tela para suportar utf-8 e 256 cores, mas o tmux funcionou imediatamente.

6
zvolkov