Màn hình GNU: Không thể nhồi các lệnh trừ khi màn hình được đính kèm?


10

Tôi có đoạn script sau

screen -d -m -S $1                #start screen minimized
screen -S $1 -X stuff "$beast     
"                                 #stuff commands

trừ khi tôi gắn màn hình trước, có vẻ như ảnh hưởng của công cụ sẽ không làm gì cả? Tại sao lại như vậy và làm cách nào để sửa đổi tập lệnh này vì vậy tôi không cần phải gắn màn hình?

Câu trả lời:


14

Khi bạn bắt đầu một phiên Màn hình ở chế độ tách rời ( screen -d -m), không có cửa sổ nào được chọn, do đó, đầu vào được gửi sau đó screen -X stuffsẽ bị mất. Bạn cần xác định rõ ràng rằng bạn muốn gửi tổ hợp phím đến cửa sổ 0 ( -p 0). Dù sao đây cũng là một ý tưởng hay, trong trường hợp bạn tình cờ tạo các cửa sổ khác trong phiên Màn hình đó vì bất kỳ lý do gì.

screen -S "$1" -p 0 -X stuff "$beast$(printf \\r)"

( printf \\rđể mô phỏng Returnchính khóa; nhiều nhưng không phải tất cả các chương trình đều chấp nhận một dòng mới ( \n).)


Cảm ơn! nó hoạt động hoàn hảo. Xin lỗi mọi người vì đã lạc đề
dukevin

không làm việc cho tôi.
Tanner Strunk

2

Điều này gần đây đã xuất hiện trong khi cố gắng trả lời một câu hỏi trên unix.stackexchange.com .

Tóm tắt là màn hình không có cửa sổ được chọn mặc định trừ khi bạn tham gia, nhưng Gilles đã chỉ cho chúng tôi cách bạn có thể buộc một người được chọn bằng cách thêm đối số -p 0vào lệnh màn hình của bạn.

Cá nhân tôi khuyên bạn nên chuyển sang tmux. Đây là cách bạn sẽ chuyển các lệnh màn hình của mình để hoạt động trong tmux:

tmux new-session -d -n $1
tmux send-keys -t $1 "$beast\n"
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.