Chuyển đổi nhanh giữa các phiên ảo (màn hình?)


19

Tôi muốn có một vài phiên ảo trong một cửa sổ putty và thay đổi nhanh chóng giữa chúng. Cách tốt nhất để làm điều đó là gì? screen? Tôi biết tôi có thể tách ra ctrl+advà sau đó gắn lại vào một phiên khác, nhưng có vẻ như rất nhiều thao tác gõ.

Câu trả lời:


22

Chỉ cần mở rộng những gì Ansgar đã nói trong trường hợp bạn không quen thuộc với màn hình gnu, Có nhiều "cửa sổ" trong một phiên màn hình duy nhất sẽ có khả năng thực hiện những gì bạn cần.

ctrl+ a, csẽ tạo một "cửa sổ" mới trong phiên màn hình hoạt động của bạn. Bạn có thể chuyển đổi giữa nhiều cửa sổ (như Ansgar đã chỉ định) với ctrl+ a, ncho cửa sổ tiếp theo và ctrl+ a, pcho cửa sổ trước.

ctrl+ a, "sẽ cung cấp cho bạn một danh sách tất cả các cửa sổ đang mở của bạn.

Sử dụng các phím tắt dễ dàng này sẽ cho phép bạn chuyển đổi giữa các thiết bị đầu cuối khác nhau rất nhanh chóng và dễ dàng, hoàn thành mục tiêu của bạn mà không cần sử dụng nhiều phiên màn hình.

Nếu bạn thêm dòng sau vào ~ / .screenrc, nó sẽ luôn hiển thị các cửa sổ đang mở của bạn và cửa sổ nào được chọn, vì vậy bạn không cần phải theo dõi cửa sổ nào bạn đang bật bằng cách nhớ.

hardstatus alwayslastline '%{= kg}[ %{G}%H %{g}][%= %{= kB}%?%-Lw%?%{+b r}(%{G}%n*%f %t%?(%u)%?%{r})%{-b B}%?%+Lw%?%?%= %{g}%]'

Đây là dòng hardstatus mà tôi thích sử dụng, nhưng nó hoàn toàn có thể tùy chỉnh (xem trang hướng dẫn hoặc tìm kiếm trên google cho "màn hình cứng hardstatus").

Có rất nhiều thứ khác bạn có thể làm với nó (ví dụ như đặt tên cho các cửa sổ mở khác nhau), vì vậy nó đáng để đọc một số hướng dẫn.

Dưới đây là một cặp vợ chồng tôi tìm thấy với một tìm kiếm nhanh:

http://news.softpedia.com/news/GNU-Screen-Tutorial-44274.shtml

http://www.ibm.com/developerworks/aix/l Library / au-nhận_screen /

Và tất nhiên là hữu ích nhất trong tất cả:

# From your terminal:
$ man screen

Mong rằng sẽ giúp.

Matthew


2

Vâng, screenrất có thể là con đường để đi. Ctrl+ a, nsẽ đưa bạn đến cửa sổ tiếp theo, Ctrl+ a, pđến cửa sổ trước. Ctrl+ a, 0.. 9sẽ cho phép bạn chuyển sang một màn hình cụ thể.


Bạn có thể thiết lập các phím bấm nhanh hơn nhiều, như F11 cho trước, F12 cho cửa sổ tiếp theo. Và thay đổi ký tự thoát màn hình từ ^amột thứ khác, vì vậy sẽ không khó chịu khi sử dụng chỉnh sửa dòng kiểu emacs trong bash, bất cứ điều gì khác. Tôi sử dụng ^t.
Peter Cordes

1

Những gì người khác nói là chính xác. Tôi chỉ muốn đề cập đến tmuxlà một thay thế cho screen. Họ có các lệnh rất giống nhau.

Cả hai screentmuxcung cấp nhiều cửa sổ cho một phiên chạy, và đây có lẽ là những gì bạn muốn. tmuxngoài ra cung cấp nhảy giữa nhiều phiên (mỗi phiên có cửa sổ riêng). Bạn sẽ rất cần điều đó rất hiếm khi.

Dưới đây là một số liên kết đến tài liệu về màn hình và một khóa học về tmux .


1

Sau rất nhiều thời gian, tôi đã tạo ra một Script để khắc phục tính năng hoàn toàn thiếu này. Trước hết, nó cần một fifo:

mkdir ~/.screen
mkfifo ~/.screen/pipe

Ống có tên này rất hữu ích cho việc liên lạc giữa phiên bị loại bỏ và phiên "Không có màn hình chính".

Tệp sc (bằng $ PATH):

#!/bin/bash
CONFIGFILE=~/.screen/"$1""rc"

if [ ! -r $CONFIGFILE ] ; then
   echo "Configurazione per $1 Assente" >&2
   exit 1
fi

exec 3<> ~/.screen/pipe

if [ "$STY" != "" ] ; then
   screen -d "$STY"
   echo "$1" >&3
else
   screen -r "$1" 2>/dev/null || screen -S "$1" -c $CONFIGFILE
   while true ; do
      read line <&3
      screen -r "$line" 2>/dev/null || screen -S "$line" -c ~/.screen/"$line""rc"
   done
fi

Một ví dụ về "CONFIGFILE" là: ~ / .screen / Monitorrc

layout new Monitor

screen -t "bash" bash --login
split -v
focus next
split 
focus bottom
screen -t "cv" sh -c "watch /usr/bin/cv -w"
split
focus bottom
screen -t "sys.log" sh -c "tail -F /var/log/sys.log"
focus up
focus up
resize 25
screen -t "top" sh -c "top"
focus left

Kết quả là: khi bạn muốn khởi chạy loại màn hình:

sc Monitor

hoặc một sessionrc khác mà bạn muốn phát minh, tôi sử dụng Công việc phiên cho nhiều thứ khác nhau

Vd: ~ / .screen / Workrc

layout new Work  
screen -t "bash" bash --login  

Bây giờ chúng tôi đang ở trong Trình giám sát phiên, khi chúng tôi gõ:

sc Work

phiên giám sát tự tách ra và viết "Công việc" vào tên được đặt. Do đó, tập lệnh sc đầu tiên được chuyển tiếp và đính kèm phiên "Công việc".
Các sc được gọi từ phiên Monitor đóng.

Khi chúng tôi tách tất cả các Phiên, chúng tôi đang ở trong một vòng lặp vô hạn vì vậy chúng tôi phải thực hiện Ctrl-c để thoát.


1

Bạn có thể làm điều này với một kịch bản shell đơn giản như

    for s in `screen -ls | grep Detached | grep <regex to your screen names>`; do screen -r $s; done 
  1. Giả sử bạn có vài màn hình mở. Hãy cũng cho rằng bạn có chúng được phân loại là công việc và dữ liệu.

    for i in {10..13}; do screen -S `printf data%02d $i`; done;
    for i in {0..5}; do screen -S `printf work%02d $i`; done;
    ...
    
  2. Áp dụng screen -ls, bạn nên có màn hình của bạn như thế này

    There are screens on:
        81592.data13    (Detached)
        81539.work04    (Detached)
        81527.work02    (Detached)
        81586.data12    (Detached)
        81574.data10    (Detached)
        81533.work03    (Detached)
        81488.work00    (Detached)
        81607.ttys014.Mo    (Attached)
        81545.work05    (Detached)
        81580.data11    (Detached)
        81521.work01    (Detached)
        81515.work00    (Detached)
    12 Sockets in /var/folders/qs/cvlbhpr54fnb96vtx01bs9k00000gn/T/.screen.
    
  3. Bây giờ cho phép cô lập các màn hình tách ra bằng cách sử dụng grep.

    screen -ls | grep Detached
    

Bạn sẽ nhận được một cái gì đó như thế này

        81592.data13    (Detached)
        81539.work04    (Detached)
        81527.work02    (Detached)
        81586.data12    (Detached)
        81574.data10    (Detached)
        81533.work03    (Detached)
        81488.work00    (Detached)
        81545.work05    (Detached)
        81580.data11    (Detached)
        81521.work01    (Detached)
        81515.work00    (Detached)
  1. Bây giờ, hãy chọn những cái bạn muốn (ví dụ: dữ liệu), sử dụng lại grep.

    screen -ls | grep Detached | grep data
    

Điều này sẽ cô lập chỉ các màn hình dữ liệu. Bạn có thể thay đổi từ khóa grep bằng các biểu thức thông thường để tìm kiếm để tùy chỉnh tìm kiếm của bạn.

        81592.data13    (Detached)
        81586.data12    (Detached)
        81574.data10    (Detached)
        81580.data11    (Detached)
  1. May mắn là kết quả được cấu trúc tốt và phân định tab. Bây giờ, hãy chia các cột thành các trường và chọn trường thứ 2 bằng cách sử dụng cut.

    screen -ls | grep Detached | grep data | cut -d'       ' -f2
    

Bạn sẽ cần nhấn ctrl+vtab sau đó để chèn tabsau thông số dấu phân cách -d. Kết quả nên như thế này.

81592.data13
81586.data12
81574.data10
81580.data11
  1. Bây giờ đóng gói này thành một lệnh bằng cách sử dụng ...dấu ngoặc kép và lặp lại các kết quả như thế này. Luôn kiểm tra các lệnh được tạo công thức 1 trước khi thực sự chạy nó. Tôi đã sử dụngecho screen -r

    for s in `screen -ls | \
    grep Detached | grep data | \
    cut -d'     ' -f2`; do \
        echo screen -r $s; \
    done
    
  2. Nếu mọi việc suôn sẻ, thì hãy thử mà không cần echo.

    for s in `screen -ls | \
    grep Detached | grep data | \
    cut -d'     ' -f2`; do \
        screen -r $s; \
    done
    
  3. Voila. Mỗi màn hình bạn tách ra sẽ đưa bạn đến màn hình tiếp theo.

Chúc mừng buổi chiếu !!


Đây là một câu trả lời thực sự tốt và nó làm tăng chất lượng tổng thể của trang web này.
123456789123456789123456789

1

Tôi đã viết một tập lệnh nút để cho phép người dùng chọn phiên màn hình để đính kèm từ danh sách, sử dụng các phím mũi tên. Tôi đã làm cho nó một gói npm. Bạn có thể kiểm tra nó ở đây: lệnh màn hình . Hoặc chỉ npm i -g screen-commandđể dùng thử, giả sử bạn đã cài đặt node.js. Sau khi cài đặt gói, sử dụng lệnh scđể triệu tập danh sách các màn hình.

Tôi hy vọng điều này làm cho việc chuyển sang màn hình chính xác mà bạn muốn dễ dàng hơ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.