Câu trả lời:
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
Vâng, screen
rấ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ể.
Những gì người khác nói là chính xác. Tôi chỉ muốn đề cập đến tmux
là một thay thế cho screen
. Họ có các lệnh rất giống nhau.
Cả hai screen
và tmux
cung 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.
tmux
ngoà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 .
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.
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
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;
...
Á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.
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)
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)
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+v
tab sau đó để chèn tab
sau 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
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
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
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 !!
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.
^a
mộ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
.