2013-10-31 68 views
2

我在創建後執行命令時遇到了一些問題。如何在打開新的tmux會話後執行命令

這裏是我的.tmux.conf部分:

set-window-option -g automatic-rename off 
set-option -g allow-rename off 
new -A -s 'main' -n 'servers' 'ls' # troubled line 
splitw -h -p 35 htop 
splitw -v 
splitw -v -t 1 
splitw -v -t 1 
neww -n 'irc' weechat-curses 
selectw -t 0 

這是我的工作就行了:

new -A -s 'main' -n 'servers' 'ls' 

以下是我開TMUX:

alias tux='TERM=screen-256color-bce tmux -f ~/.tmux.conf attach-session -t main' 

'ls'必須導致錯誤,因爲它存在時,初始窗格會執行沒有創造。如果我將它更改爲「頂部」,它會正常工作並執行命令。

那麼,爲什麼頂部工作,而不是LS(或任何其他命令我試試)?

回答

5

top直到您退出。打印當前目錄的內容後,退出ls。這會導致運行ls的窗口關閉。

setw -t servers remain-on-exit on 

應保持其命令退出後,關閉名爲「服務器」窗口,但它是一個事實,即窗口不會在new-session命令之前存在複雜的運行,並經過new-session回報,它可能爲了運行setw命令已經太晚了(儘管你可以試試)。

相反,創建一個新的會話中,默認值是一個窗口,以保持它的命令存在後:根據您最後的評論

new -A -s 'main' -n 'servers' 'ls' # troubled line 
set -t main set-remain-on-exit on 
neww -n 'servers' ls 

,忽略了上述情況,並替換new命令與

new -A -s 'main' -n 'servers' 
send-keys -t servers.0 ls Enter 

這就產生了一個常規的窗口,其命令是一個普通的外殼,但隨後在模擬所述第一殼提示鍵入ls命令爲您提供該目錄中的文件列表。在ls完成後,您將重新回到shell中,並且該窗格將繼續存在,直到該shell本身完成。

+0

這不起作用。它使用名爲servers的窗口創建初始主會話。但是當它打開時,窗格已經死了。我嘗試着在'respawnw -t servers'上加緊工作,但是它創建了第二個窗口,這個窗口被稱爲具有多窗格警告的服務器。 – doremi

+0

查看我的更新。我在原文中也有一個錯字,其中'new'命令應該只讀'新的-A -s'main''。 – chepner

+0

我已經想出瞭如何使用'發送鍵'來完成我想要的。它並不像我想要的那麼幹淨,因爲你可以看到發出的命令,但是看到命令的輸出卻很好用,但它很有用。另外,我不知道你可以爲-t標誌做點符號('window.pane#')。這很酷。 – doremi

相關問題