Các tính năng ẩn của `screen`


31

Vì tôi sử dụng lệnh * nixscreen cả ngày và tôi không thể tìm thấy ai bắt đầu câu hỏi này, tôi nghĩ rằng nó nên được bắt đầu. Bạn biết bài tập: wiki cộng đồng, một câu trả lời cho mỗi tính năng để tất cả chúng ta đều có thể bỏ phiếu.


5
màn hình rất hữu ích, nó thuộc về tất cả các trang web: stackoverflow.com/questions/70614/gnu-screen-survival-guide
Zac Thompson

Câu trả lời:


31

Tôi thích sử dụng nó để kết nối với bảng điều khiển nối tiếp, tức là

screen /dev/ttyS0 19200

Lệnh này chỉ đơn giản là mở ra một kết nối đến cổng nối tiếp 0 (ttyS0) với tốc độ baud là 19200


đây là một trong những điều yêu thích của tôi để làm mọi người
hoảng sợ

1
Và thực sự là một trong những sở thích của tôi. Không cần phải đối phó, hoặc cấu hình, minicom, máy chủ, v.v. Tôi cảm thấy như một đứa trẻ trong một cửa hàng kẹo khi tôi phát hiện ra điều này.
Scott Pack

Hoàn toàn - thật tuyệt khi mở phiên màn hình, chia thành hai cửa sổ, có thể nhìn thấy cả hai khóa USB-serial.
dotwaff

10

Tính năng tốt nhất của screenByobu (trước đây là cấu hình màn hình) đi kèm với Ubuntu theo mặc định kể từ Jaunty: https://launchpad.net/byobu

Đó là trình quản lý cấu hình với các mặc định rất đẹp, hàng tấn thông báo trạng thái và các phím tắt hữu ích (ví dụ: f2 cho màn hình mới, f3-f4 cho trước / tiếp theo, v.v.)

Tôi thực sự không đi đâu mà không có nó nữa :)


10

Từ amswer của KTamas: Nhiều người có thể sử dụng cùng một màn hình, tức là nếu một người bạn của bạn sshvào máy tính của bạn, thì anh ta có thể kết nối với màn hình của bạn. Thật tuyệt vời khi hai hoặc ba người đang làm việc trên cùng một dự án.


1
Điều này tốt hơn nhiều để làm theo những gì người dùng hỗ trợ từ xa đang làm và giết phiên của họ nếu chúng không tốt!
Tom O'Connor

6

Không chính xác là một "tính năng ẩn"; nhưng một tập tin .screenrc thiết lập đúng có thể tạo ra một thế giới khác biệt. Một trong những ví dụ tốt hơn có thể được tìm thấy bằng cách googling screenrc và 'brad sims' - anh ta có một tệp tuyệt vời để tinker.

Điều đó nói rằng, cài đặt yêu thích của tôi sẽ là bindkey:

# bind F7  to detach screen session from this terminal
# bind F8  to kill current screen window.
# bind F9  to create a new screen
# bind F10 to rename current screen window
# bind F11 to move to previous window
# bind F12 to move to next window
bindkey -k k7 detach
bindkey -k k8 kill
bindkey -k k9 screen
bindkey -k k; title
bindkey -k F1 prev
bindkey -k F2 next

2
Xem xét rằng ctrl + a được sử dụng quá thường xuyên bên ngoài màn hình (bắt đầu dòng trong bash bất cứ ai?) Tôi thích điều này.
Scott Pack

1
ctrl + a / ctrl + e để di chuyển con trỏ, nhưng cũng có khi minicom đang chạy trên màn hình. Ctrl + a, a, o cho các tùy chọn ...
petrus

6

Tôi không thể nhớ mình đã lấy cái này từ ai (ai đó trên dotfile.org). Tôi đã sửa đổi nó một chút cho ssh:

#!/bin/sh
# scr - Runs a command in a fresh screen
#
# Get the current directory and the name of command

wd=`pwd`
cmd=$1
shift

# We can tell if we are running inside screen by looking
# for the STY environment variable.  If it is not set we
# only need to run the command, but if it is set then
# we need to use screen.

if [ -z "$STY" ]; then
        $cmd $*
else
        # Screen needs to change directory so that
        # relative file names are resolved correctly.
        screen -X chdir $wd

        # Ask screen to run the command
        if [ $cmd == "ssh" ]; then
                screen -X screen -t ""${1##*@}"" $cmd $*
        else
                screen -X screen -t "$cmd $*" $cmd $*
        fi
fi

Sau đó, tôi đặt các bí danh bash sau:

vim() {
        scr vim $*
}

man() {
        scr man $*
}

info() {
        scr info $*
}

watch() {
        scr watch $*
}

ssh() {
        scr ssh $*
}

Nó mở một màn hình mới cho các bí danh ở trên và sử dụng ssh, nó đổi tên tiêu đề màn hình với tên máy chủ ssh.

Chúc mừng z0mbix


: o. Bạn đã nâng và thích nghi nó từ tôi? gist.github.com/137214
VxJasonxV

Không, tôi nghĩ rằng đó là từ một nhân viên Last.fm, người viết blog về nó một lần.
z0mbix

4

Một điều tôi thấy hữu ích là màn hình có thể mô phỏng chiều rộng lớn hơn thiết bị đầu cuối của bạn. Tôi thấy điều này hữu ích nếu tôi đang sử dụng lesscác tệp nhật ký thực và tôi không muốn các dòng bị ngắt. Sử dụng:

Ctrl-A:width -w 999

Tôi có thể thiết lập screenvới rộng hơn thiết bị đầu cuối của mình và đăng nhập các dòng lesskhông bao bọc.


10
FYI, tùy chọn ít hơn -ssẽ nói với nó không bọc dòng. Bạn có thể sử dụng LeftRightđể cuộn các dòng.
MikeyB

4

Khả năng thay đổi phím điều khiển bằng -ethat khi màn hình khởi động. Tôi sử dụng nó để tôi có thể lồng các phiên màn hình vào nhau. Ví dụ: "screen -e ^ w ^ x" tạo khóa điều khiển ctr-w.


2

Một tính năng hay: bạn có thể sử dụng backtickđể lấy thêm thông tin để hiển thị trong chú thích. Ví dụ: tôi có một tập lệnh xuất ra một bản tóm tắt một dòng về số lượng thư mới trong các thư mục khác nhau và tôi có tập lệnh xuất hiện ở dòng dưới cùng nếu phiên màn hình của tôi cùng với tên máy chủ có cấu hình giống như sau:

backtick 1 15 15 /home/waltermundt/bin/newmail

caption always
caption string "%{.kW}%1` example.com %{.bW}%-w%{.rW}%n %t%{-}%+w %{.gW}%h%{-}"

Chìa khóa là bit% 1`, dùng để chỉ đầu ra của công việc backtick 1.

(Tôi sử dụng hardstatuslàm chuỗi tiêu đề xterm và được đặt khác đi, do đó, sử dụng captionthay vì hardstatus alwayslastline.)


2

Không phải là một tính năng "ẩn", nhưng khả năng chia sẻ phiên màn hình với một người dùng hoạt động khác là rất hữu ích.

Có nhiều cách phức tạp để thiết lập chia sẻ màn hình, bao gồm quyền kiểm soát truy cập và quản lý tên người dùng. Những gì tôi thường làm với đồng nghiệp là nhanh và bẩn hơn nhiều:

  1. Đăng nhập vào máy trong câu hỏi trong cửa sổ mới.
  2. Cho phép bất cứ ai viết vào thiết bị đầu cuối của tôi: chmod 777 $(tty)
  3. Sudo vào tài khoản của họ: sudo su <username>
  4. Chia sẻ màn hình của họ: screen -x <session>

Điều này không yêu cầu bất kỳ cấu hình trước hoặc chia sẻ mật khẩu.


1

Một tờ cheat nhỏ tôi đã tự in ra;

(Lưu ý: Mọi thứ đều có trước Ctrl-A)

A: đổi tên một cửa sổ   
": hiển thị danh sách các cửa sổ   
d: phiên điều tra

screen -D -Rđể deattach và gắn lại một phiên đang chạy (trong trường hợp bạn bằng cách nào đó mất quyền truy cập vào phiên của bạn).

Không có tính năng nào trong số này là các tính năng thực sự ẩn, nhưng đây là những tính năng tôi thấy là hữu ích nhất.


1

Đó là một tính năng cốt lõi, nhưng tất nhiên tốt nhất là Ctrl-A:nói chuyện trực tiếp với màn hình. : screen -t title ssh hostnamev.v.

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.