2011-06-28 29 views

Trả lời

26

Tôi tìm thấy một hướng dẫn tốt ở đây để làm điều này:

http://blog.cone.be/2009/11/24/gnu-screen-nethack-different-screen-windows-sending-commands-to-all-screen-windows/

Từ bài:

Khi bạn đang quen với nhiều cửa sổ, bạn có thể chạy vào một tình huống mà bạn muốn gửi một lệnh tương tự đến một số các cửa sổ đang mở này. Màn hình cung cấp trong lệnh “at” để thực hiện điều này. Trước tiên, bạn sẽ cần phải mở chế độ dòng lệnh.

C-a: (dấu hai chấm) Nhập chế độ dòng lệnh.

Bằng cách này bạn có thể nhập lệnh một lần, nhưng bạn sẽ vẫn phải nhập từng cửa sổ riêng biệt. Nhưng có một cách tốt hơn. Ví dụ, chúng tôi sẽ gửi “ls -l” cho tất cả các cửa sổ.

tại công cụ "#" "ls -l^M"

Lệnh này hầu như không thể đọc được, vì vậy, hãy tách nó ra! Phần đầu tiên là 'at [identifier] [# | * |%] command'. Lệnh at gửi thông số văn bản tới tất cả các cửa sổ bạn đã chỉ định trong mã định danh. Bạn có thể so khớp tiêu chí với tên cửa sổ hoặc số bằng #, tên người dùng có * hoặc hiển thị bằng%. Phần tiếp theo là lệnh bạn muốn chạy trong các cửa sổ đã chọn. Chúng tôi đang sử dụng "công cụ" để thực hiện lệnh mà chúng tôi muốn thực hiện vào bộ đệm đầu vào của các cửa sổ đã chọn. Nội dung thực sự đơn giản. Nó chỉ đơn giản là nhồi chuỗi bạn đã cung cấp như một tham số. Vấn đề tiếp theo là lệnh. Hay đúng hơn là đã thực hiện nó! Để có được màn hình để đặt một "nhập" sau khi lệnh, để thực hiện lệnh, thêm "^ M" ở cuối. Bạn có thể làm được nhiều hơn thế với điều này hơn là chỉ gửi một ls đến đầu vào. Bất kỳ lệnh màn hình nào, như đổi tên, di chuyển cửa sổ xung quanh, không có gì .. có sẵn kết hợp với "at".

+2

+1 cho "nội dung". Rất cám ơn, Corey! –

+1

Đây là âm thanh của một triệu phiên màn hình bị lãng quên từ từ chết: 'screen -X at" Cảm ơn bạn đã bay Vim # "stuff"^UTMOUT = 3600^M "' ** + 1 ** – Orwellophile

8

Xin lỗi vì câu trả lời muộn màng này, nhưng tmux có thể là lựa chọn tốt hơn cho bạn hơn screen. Trong tmux, bạn phải bấm: C-b : để vào chế độ lệnh và nhập: setw synchronize-panes (hoặc chỉ setw sync<Tab> sử dụng tự động hoàn thành). Lưu ý rằng lệnh này cho phép đồng bộ hóa giữa các pan (các khu vực của một màn hình phân chia, có thể nhìn thấy đồng thời), nhưng không phải giữa các cửa sổ (đầy đủ, không phân chia, màn hình).

+0

đây là một cách tốt hơn đáng kể và trải nghiệm thị giác hơn câu trả lời khác. – Endophage

+1

Xin lỗi, nhưng câu hỏi là về màn hình, tôi đồng ý rằng tmux là một cách tốt hơn chương trình nhưng điều này là hầu như không có liên quan ở đây. – runlevel0

5

Bạn cũng có thể chỉ muốn gửi đến các cửa sổ đã chọn (phát đa hướng).

  1. Công ước: Đặt ký tự thứ nhất cho tiêu đề cửa sổ ý nghĩa của cờ phát sóng. Ví dụ. nếu tiêu đề bắt đầu bằng "." sau đó cửa sổ lắng nghe để phát sóng, nếu không thì không.
  2. Đặt tiêu đề nếu cần.

    screen -S SessionName -p 0 -X title "remote_0"  # window 0: ignore multicast 
    screen -S SessionName -p 1 -X title ".remote_1" # window 1: listen to multicast 
    
  3. Gửi nội dung để người nghe với theo lệnh của màn hình

    screen -S SessionName -X at ".#" stuff "date 
    " 
    
  4. Lưu ý: kết thúc nháy kép trên đảm bảo a^M để được gửi (Cr).

  5. Bạn có thể bật/tắt đa phương tiện dựa trên tiêu đề cửa sổ theo cách này.

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