2013-03-06 2 views
9

Voglio tmux per aprire una nuova finestra e quindi effettuare il cd in una directory, ma non funziona. Apre semplicemente tmux nella directory da cui è stato eseguito il mio script (cioè non esegue il comando cd).semplice script tmux bash non funzionante

Qualcuno può dirmi cosa sto facendo male? (Sto usando tmux 1,6)

#!/bin/bash                                
tmux start-server 
tmux new-session -d -s my_server -n runstuff 

tmux send-keys -t my_server:1 "cd /etc" 

tmux select-window -t my_server:1 
tmux attach-session -t my_server 

risposta

12

finalmente ho potuto farlo funzionare, utilizzando C-m e numerazione delle finestre a partire da 0. Ho aggiunto un secondo comando a scopo illustrativo.

#!/bin/bash                                
tmux start-server 
tmux new-session -d -s my_server -n runstuff 
tmux new-window -t my_server:1 -n someotherjunk 

tmux send-keys -t my_server:0 "cd /etc" C-m 
tmux send-keys -t my_server:1 "./yolo" C-m 

tmux select-window -t my_server:runstuff 
tmux attach-session -t my_server 
+0

Qui puoi omettere il 'start-server', non è richiesto; il server che inizia si chiuderà immediatamente poiché non si creano sessioni dallo stesso comando di shell 'tmux'. Potresti fare 'start-session \; nuova sessione ... 'per emettere più comandi * tmux * in un singolo comando di shell, ma non c'è bisogno di ciò poiché' new-session' avvierà il server se non ce n'è uno già in esecuzione. L'altro comando che avvia automaticamente un server è 'attach-session' (utile solo se si creano sessioni nel file di configurazione). –

1

send-keys simula la digitazione sulla tastiera. Pertanto, è necessario inviare lo Immettere anche la chiave.

tmux send-keys -t my_server:1 "cd /etc\n" 
+1

Grazie per il suggerimento. L'ho provato, ma sembra che non stia ancora eseguendo il comando cd. Finisco in una finestra di tmux nella stessa directory di dove ho eseguito lo script di bash. – mark

+1

ok ho capito che avrei dovuto usare: 0 invece di: 1. Ma ora tutto ciò che finisco è una finestra di tmux con "cd/etc \ n" digitata. Il \ n viene trattato letteralmente, non come tasto Invio. – mark

+0

ah, l'aggiunta di C-m alla fine della linea dei tasti di invio sembrava funzionare. 'tmux send-keys -t my_server: 1" cd/etc "C-m' – mark