我正在編寫一個創建/附加或切換到給定會話的shell腳本,具體取決於tmux是否位於會話中並且會話是否存在。在tmux會話中創建新的tmux會話
除了需要在tmux會話中創建新的tmux會話的情況外,我已經將所有的工作都很好。
當我的腳本執行tmux new-session -s name
,我得到下面的輸出:
會議應被嵌套謹慎,未設置$ TMUX強制
我真的不希望巢會議,我的目標是創建另一個單獨的會話,並從一個tmux會話內切換到它。
這可能嗎?
我正在編寫一個創建/附加或切換到給定會話的shell腳本,具體取決於tmux是否位於會話中並且會話是否存在。在tmux會話中創建新的tmux會話
除了需要在tmux會話中創建新的tmux會話的情況外,我已經將所有的工作都很好。
當我的腳本執行tmux new-session -s name
,我得到下面的輸出:
會議應被嵌套謹慎,未設置$ TMUX強制
我真的不希望巢會議,我的目標是創建另一個單獨的會話,並從一個tmux會話內切換到它。
這可能嗎?
的最快方法(假設你使用ctrl-b
作爲命令前綴)是:
ctrl-b :new
要創建一個新的會話,然後
ctrl-b s
交互式地選擇並連接到會議。
使用這個工作對我來說:
TMUX= tmux new-session -d -s name
tmux switch-client -t name
在第一行的TMUX=
所以TMUX不會引發sessions should be nested with care, unset $TMUX to force
消息是必需的。
將第一行改爲:'TMUX = \'tmux new-session -d -s name \'' – 2013-05-07 02:04:03
你可以試試unset TMUX
首先,這對我有用。
所有命令您可以在終端中啓動,像tmux new -s sessionName
可以從tmux
內按觸發鍵啓動:無需啓動tmux
一部分(例如ctrl-b
)然後:
然後命令。
因此,ctrl-b :
後跟new -s sessionName
將完全按照您的要求進行操作,併爲會話命名。它也自動切換到新的會話。
在user2354696的意見,我用下面的鍵綁定,以創建一個新的會話或「克隆」現有會話
bind-key N run-shell 'TMUX= tmux new-session -d \; switch-client -n' bind-key C run-shell 'TMUX= tmux new-session -t $(tmux display-message -p #S) -s $(tmux display-message -p #S-clone) -d \; switch-client -n \; display-message "session #S cloned"'
如果會話存在該腳本將檢查。如果會話不存在,請創建新會話並附加到該會話。如果會話確實存在,則我們將附加到該會話。隨意用項目名稱替換`〜/ development'。
$ touch ~/development && chmod +x ~/development
# ~/development
tmux has-session -t development
if [ $? != 0 ]
then
tmux new-session -s development
fi
tmux attach -t development
新一屆讓我們創建兩個分離的會議,一一列舉了,通過會話連接到一個,然後從TMUX週期內。
tmux new -s name -d
從tmux內部工作,因爲我們正在創建一個新的獨立會話。否則,你會得到一個嵌套錯誤。
$ tmux new -s development -d
$ tmux new -s foo -d
$ tmux ls
> development: 1 windows (created Wed Jan 13 11:31:38 2016) [204x54]
> foo: 1 windows (created Wed Jan 13 11:31:38 2016) [204x54]
$ tmux attach -t
$ tmux ls
> development: 1 windows (created Wed Jan 13 11:31:38 2016) [204x54] (attached)
> foo: 1 windows (created Wed Jan 13 11:31:38 2016) [204x54]
內新一屆我們現在都在裏面或更好地稱爲連接我們的目標會話。如果我們嘗試在連接時創建新會話,將導致嵌套錯誤。
$ tmux new -s bar
> sessions should be nested with care, unset $TMUX to force
要解決這個問題,我們創建一個新的獨立會話。例如,
$ tmux new -s bar -d
$ tmux ls
> development: 1 windows (created Wed Jan 13 11:31:38 2016) [204x54] (attached)
> foo: 1 windows (created Wed Jan 13 11:31:38 2016) [204x54]
> bar: 1 windows (created Wed Jan 13 17:19:35 2016) [204x54]
週期(開關)會話
Prefix
(
先前會話Prefix
)
下一個會話注:Prefix
默認爲Ctrl-b
。您可以綁定Prefix
到Ctrl-a
和Mac OSX上,您可以更改Caps Lock鍵爲Ctrl system preferences > keyboard > modifier keys
試圖連接到會話不拆卸將導致一個錯誤,而附加到一個會話。
$ tmux attach -t development
> sessions should be nested with care, unset $TMUX to force
而是使用命令模式Prefix
:
然後鍵入attach -t session_name
並回車。
+1對於不關心解決方案的應用程序應該小心嵌套,取消設置$ TMUX強制「 – 2014-10-14 13:20:21
,然後你可以重新命名你的會話:'ctrl-b $' – nha 2015-02-09 14:30:54
和'Ctrl-b:new -s'給出新會話的名字。 –
2015-04-28 11:50:39