2013-03-06 118 views
9

我想要tmux打開一個新窗口,然後cd進入一個目錄,但它不起作用。它只是在腳本運行的目錄中打開tmux(即它不執行cd命令)。簡單的tmux bash腳本不工作

有人能告訴我我做錯了什麼嗎? (我正在使用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 

回答

12

我終於得到它的工作,使用C-m和編號從0開始的窗口。我添加了第二個命令用於說明目的。

#!/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

您可以在這裏省略'start-server',它不是必需的;因爲您不會從同一'tmux' shell命令創建任何會話,所以它啓動的服務器會立即退出。你可以做'開始會話'; new-session ...'在一個shell命令中發出多個* tmux *命令,但是沒有必要這樣做,因爲如果沒有一個命令已經運行,'new-session'會啓動服務器。另一個自動啓動服務器的命令是'attach-session'(只有在你的配置文件中創建會話時纔有用)。 – 2013-03-07 08:30:31

1

send-keys模擬在鍵盤上打字。因此,您還需要發送輸入密鑰。

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

感謝您的建議。我試過了,但它似乎仍然沒有執行cd命令。我只是在與運行bash腳本的目錄相同的目錄中的tmux窗口中結束。 – mark 2013-03-06 22:56:06

+1

好吧,我意識到我應該使用:0而不是:1。但是現在我最終得到的是一個帶有「cd/etc \ n」輸入的tmux窗口。\ n正在被逐字處理,而不是Enter鍵。 – mark 2013-03-07 00:50:11

+0

啊,在發送密鑰行末尾添加C-m似乎工作正常。 'tmux send-keys -t my_server:1「cd/etc」C-m' – mark 2013-03-07 00:54:37