2013-05-06 34 views
59

Tôi đang viết một kịch bản lệnh shell để tạo/đính kèm hoặc chuyển sang một phiên cụ thể, tùy thuộc vào việc phiên bản tmux có tồn tại hay không.Tạo phiên tmux mới từ bên trong một phiên tmux

Tôi có mọi thứ hoạt động tốt ngoại trừ trường hợp yêu cầu tạo phiên tmux mới từ trong phiên tmux.

Khi kịch bản của tôi thực hiện tmux new-session -s name, tôi nhận được kết quả như sau:

phiên nên được lồng vào nhau một cách cẩn thận, unset $ tmux để buộc

Tôi không thực sự muốn các buổi yến, mục tiêu của tôi là tạo một phiên riêng biệt khác và chuyển sang phiên từ một phiên tmux.

Điều này có khả thi không?

Trả lời

87

Cách nhanh nhất (giả sử bạn sử dụng ctrl-b như tiền tố lệnh của bạn) là:

ctrl-b :new 

Để tạo một phiên làm việc mới, sau đó

ctrl-b s 

tương tác lựa chọn và gắn vào phiên.

+4

+1 cho giải pháp không quan tâm đến "phiên nên được lồng ghép cẩn thận, unset $ TMUX để bắt buộc " –

+2

và sau đó bạn có thể đổi tên phiên của mình:' ctrl-b $ ' – nha

+7

Và' Ctrl-b: new -s 'để đặt tên cho phiên mới. –

18

Sử dụng này làm việc cho tôi:

TMUX= tmux new-session -d -s name 
tmux switch-client -t name 

Các TMUX= trên dòng đầu tiên là cần thiết để tmux không ném nhắn sessions should be nested with care, unset $TMUX to force.

+1

Hoạt động tốt trong tập lệnh của tôi sau khi thay đổi dòng đầu tiên thành: 'TMUX = \' tmux phiên mới -d -s name \ '' –

4

Trước tiên, bạn có thể thử unset TMUX, điều này phù hợp với tôi.

11

Tất cả các lệnh bạn có thể khởi động trong thiết bị đầu cuối của bạn, giống như tmux new -s sessionName có thể được đưa ra từ bên trong tmux bằng cách nhấn phím kích hoạt (ví dụ: ctrl-b) sau đó : sau đó lệnh mà không có sự bắt đầu tmux phần.

Kết quả là, ctrl-b : theo sau là new -s sessionName sẽ thực hiện chính xác những gì bạn muốn và đặt tên cho phiên của bạn. Nó cũng tự động chuyển sang phiên mới.

4

tại lời khuyên user2354696 của tôi sử dụng sau tổ hợp phím để tạo ra một phiên làm việc mới hay "clone" một session đang tồn tại

 
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"' 
8

Làm thế nào để tạo ra các kịch bản

Kịch bản này sẽ kiểm tra xem một phiên tồn tại. Nếu phiên không tồn tại tạo phiên mới và đính kèm vào nó. Nếu phiên không tồn tại thì không có gì xảy ra và chúng tôi đính kèm vào phiên đó. Hãy thay thế `~/development 'bằng tên dự án.

$ touch ~/development && chmod +x ~/development

# ~/development 

tmux has-session -t development 
if [ $? != 0 ] 
then 
    tmux new-session -s development 
fi 
tmux attach -t development 

phiên mới từ thiết bị đầu cuối

Hãy tạo ra hai phiên tách, liệt kê chúng, đính kèm một và sau đó từ bên trong tmux chu kỳ thông qua các buổi.

tmux new -s name -d hoạt động từ bên trong tmux vì chúng tôi đang tạo một phiên riêng lẻ mới. Nếu không, bạn sẽ gặp lỗi lồng nhau.

$ 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] 

phiên New từ bên trong tmux

Bây giờ chúng ta đang ở trong hay còn gọi là gắn phiên mục tiêu của chúng tôi. Nếu chúng ta cố gắng tạo một phiên mới trong khi đính kèm nó sẽ dẫn đến một lỗi lồng nhau.

$ tmux new -s bar 
> sessions should be nested with care, unset $TMUX to force 

Để giải quyết vấn đề này, chúng tôi tạo một phiên riêng mới. ví dụ,

$ 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] 

Cycle (switch) phiên

  • Prefix(phiên trước
  • Prefix)phiên tiếp theo

lưu ý:PrefixCtrl-b theo mặc định. Bạn có thể ràng buộc Prefix-Ctrl-a và trong Mac OSX bạn có thể thay đổi Caps Lock để Ctrl system preferences > keyboard > modifier keys

Đính kèm để một phiên sử dụng chế độ lệnh trong khi bên tmux

Đang cố gắng để đính kèm vào một phiên mà không cần tách sẽ dẫn đến một lỗi.

$ tmux attach -t development 
> sessions should be nested with care, unset $TMUX to force 

Thay vì sử dụng chế độ lệnh Prefix: sau đó gõ attach -t session_name và nhấn Enter.