Aqui está uma linha de comando rápida e suja que atinge o que você quer:
$ tmux new-session -s asdf -n myWindow -d 'tail -f foo'\; \
split-window -d 'tail -f bar'\; attach-session
Existem algumas desvantagens para esta solução:
-
não escala muito bem (mais alguns comandos e o resultado é incompreensível).
-
os dois comandos tail não são executados em um shell interativo; portanto, se você sair dos dois, a janela
myWindow
será destruída (junto com a sessão, se você não tiver criado mais sessões.
Aqui está um script de shell que funciona nas linhas que você tentou. Para mim, é sempre mais fácil pensar em como eu alcançaria meu objetivo manualmente e depois traduzir isso em comandos do tmux. Essa pode não ser a maneira mais simples ou mais limpa, mas geralmente funciona:
#!/bin/sh
# create a new session. Note the -d flag, we do not want to attach just yet!
tmux new-session -s asdf -n 'myWindow' -d
# send 'tail -f foo<enter>' to the first pane.
# I address the first pane using the -t flag. This is not necessary,
# I'm doing it so explicitly to show you how to do it.
# for the <enter> key, we can use either C-m (linefeed) or C-j (newline)
tmux send-keys -t asdf:myWindow.0 'tail -f foo' C-j
# split the window *vertically*
tmux split-window -v
# we now have two panes in myWindow: pane 0 is above pane 1
# again, specifying pane 1 with '-t 1' is optional
tmux send-keys -t 1 'tail -f bar' C-j
# uncomment the following command if you want to attach
# explicitly to the window we just created
#tmux select-window -t asdf:mywindow
# finally attach to the session
tmux attach -t asdf
Se, após algumas tentativas, você ainda não gostar da sintaxe de comando e configuração tmux
, convém consultar o tmuxinator , uma jóia Ruby que permite gerenciar sessões tmux com uma sintaxe simplificada e transparente.
Em minha resposta a Múltiplos terminais de uma só vez sem um servidor X , você pode encontrar alguns links úteis para tmux
de recursos