2012-06-18 36 views
10

"màn hình -R -D-S kiểm tra" sẽ tạo một phiên có tên là kiểm tra nếu nó không tồn tại, hoặc kết nối với nó nếu nóMàn hình GNU: Làm cách nào để tạo màn hình trong nền nếu màn hình không tồn tại?

"màn hình -d -m -S kiểm tra" sẽ tạo ra một phiên tách ra tên thử nghiệm, cho dù nó tồn tại hay không, có thể dẫn đến nhiều phiên tên thử nghiệm:

There are several suitable screens on: 
    9705.test (06/18/2012 06:42:58 PM) (Detached) 
    9639.test (06/18/2012 06:42:57 PM) (Detached) 

Làm thế nào tôi có thể tạo ra một phiên tách ra tên kiểm tra, nhưng chỉ khi người ta không đã tồn tại?

Trả lời

13

Tôi tin rằng bạn đang tìm kiếm -d -R kết hợp:

screen -d -R -S test 

Từ man screen:

 -d -R Reattach a session and if necessary detach or even create it 
       first 

EDIT

Nếu bạn chỉ muốn tạo ra một màn hình nền chỉ khi nó không tồn tại, một hàm shell nhỏ trong ~/.bashrc hoặc ~/.zshrc của bạn sẽ hoạt động:

function bgsc { 
    if screen -list | awk '{print $1}' | grep -q "$1$"; then 
    echo "screen $1 already exists" > &2 
    else 
    screen -d -m -S $1 
    fi 
} 

Sau đó, chỉ cần gọi bgsc test.

+3

Nhưng tôi không muốn gắn lại, tôi chỉ muốn tạo ra nó tách ra và _not_ đính kèm với nó. –

+0

@ user939259: Ah, tôi hiểu lầm. Tôi không thấy bất cứ điều gì trong hướng dẫn, nhưng tôi đã cập nhật câu trả lời của tôi với một hàm vỏ ngắn để tạo ra một màn hình tách rời mới nếu nó không tồn tại. – jmdeldin

Các vấn đề liên quan