it-swarm-vi.tech

GNU Hướng dẫn sống còn trên màn hình

Mọi người nghĩ gì không chỉ là những điều thiết yếu bạn cần biết về tiện ích Màn hình tuyệt vời mà còn là những điều bạn nghĩ đáng để dạy cho ai đó, người mới bắt đầu, từ đầu?

Tôi vừa giới thiệu một người bạn với Screen và họ đang gặp khó khăn khi làm quen với nó. Vì vậy, các phép loại suy và các mẹo hữu ích để ghi nhớ các liên kết, vv sẽ rất tuyệt vời.

106
Henry B

Tôi đã sử dụng màn hình hơn 10 năm và có thể sử dụng ít hơn một nửa các tính năng. Vì vậy, chắc chắn không cần thiết phải tìm hiểu tất cả các tính năng của nó ngay lập tức (và tôi không khuyên bạn nên thử). Các lệnh hàng ngày của tôi là:

^A ^W - window list, where am I
^A ^C - create new window
^A space - next window
^A p - previous window
^A ^A - switch to previous screen (toggle)
^A [0-9] - go to window [0-9]
^A esc - copy mode, which I use for scrollback

Tôi nghĩ đó là nó. Đôi khi tôi sử dụng các tính năng chia màn hình, nhưng chắc chắn không phải hàng ngày. Mẹo khác là nếu màn hình dường như bị khóa do bạn vô tình nhấn một số tổ hợp phím ngẫu nhiên, hãy thực hiện cả ^ Q và ^ A ^ Q để thử mở khóa.

91
Greg Hewgill

Tôi không thể quen với màn hình cho đến khi tôi tìm được cách đặt 'thanh trạng thái' ở cuối màn hình hiển thị 'tab' hoặc 'màn hình ảo' mà bạn đang bật và những cái nào khác có. Đây là thiết lập của tôi:

[[email protected] ~]$ cat .screenrc
# Here comes the pain...
caption always "%{=b dw}:%{-b dw}:%{=b dk}[ %{-b dw}%{-b dg}$USER%{-b dw}@%{-b dg}%H %{=b dk}] [ %= %?%{-b dg}%-Lw%?%{+b dk}(%{+b dw}%n:%t%{+b dk})%?(%u)%?%{-b dw}%?%{-b dg}%+Lw%? %{=b dk}]%{-b dw}:%{+b dw}:"

backtick 2 5 5 $HOME/scripts/meminfo
hardstatus alwayslastline "%{+b dw}:%{-b dw}:%{+b dk}[%{-b dg} %0C:%s%a %{=b dk}]-[   %{-b dw}Load%{+b dk}:%{-b dg}%l %{+b dk}] [%{-b dg}%2`%{+b dk}] %=[ %{-b dg}%1`%{=b dk} ]%{-b dw}:%{+b dw}:%<"

sorendition "-b dw"
[[email protected] ~]$ cat ~/scripts/meminfo
#!/bin/sh
RAM=`cat /proc/meminfo | grep "MemFree" | awk -F" " '{print $2}'`
SWAP=`cat /proc/meminfo | grep "SwapFree" | awk -F" " '{print $2}'`
echo -n "${RAM}kb/ram ${SWAP}kb/swap"
[[email protected] ~]$
36
Roel

Ctrl+A ? - hiển thị màn hình trợ giúp!

30
James Muscat

Nếu bạn của bạn đang có thói quen nhấn ^A để bắt đầu dòng trong bash, anh ấy/cô ấy sẽ gặp một số bất ngờ, vì ^A là ràng buộc phím màn hình. Thông thường tôi kết thúc với một màn hình bị đóng băng, có thể là do một số phím ngẫu nhiên tôi đã nhấn sau ^A :-)

Trong những trường hợp đó tôi cố gắng

^A s^A q chặn/bỏ chặn cuộn thiết bị đầu cuối

để khắc phục điều đó. Để đi đến đầu của một dòng bên trong màn hình, dãy phím là ^A a

26
agnul

Bạn có thể sắp xếp lại khóa thoát từ ctrl-A thành một khóa khác mà bạn chọn, vì vậy nếu bạn sử dụng nó cho mục đích khác, ví dụ: để đi đến đầu dòng trong bash, bạn chỉ cần thêm một dòng vào tệp ~/.screenrc của bạn. Để làm cho nó ^ b hoặc ^ B sử dụng:

escape ^bB

Từ dòng lệnh, sử dụng tên phiên để kiểm soát nhiều phiên. Tôi sử dụng một phiên cho mỗi nhiệm vụ, mỗi phiên có nhiều tab:

[.__.] screen -ls liệt kê các phiên màn hình hiện tại của bạn [.__.] màn hình -S <name> tạo một phiên màn hình mới có tên là [.__.] screen -r <name> kết nối với các phiên màn hình được đặt tên 

Khi sử dụng màn hình, bạn chỉ cần một vài lệnh:

[.__.] ^ A c tạo Shell mới [.__.] ^ A [0-9] chuyển Shell [.__.] ^ A k giết Shell hiện tại [.__.] ^ Một ngắt kết nối khỏi màn hình [ .__.] ^ A? hiển thị trợ giúp [.__.]

Một tài liệu tham khảo nhanh tuyệt vời có thể được tìm thấy ở đây . Đáng đánh dấu.

12
Andrew Johnson

Một số lời khuyên cho những người quen thuộc với màn hình, nhưng những người có xu hướng không nhớ những thứ họ đọc trong trang man:

  • Để thay đổi tên của một cửa sổ màn hình rất dễ dàng: ctrl+Ashift+A.
  • Bạn đã bỏ lỡ tin nhắn cuối cùng từ màn hình? ctrl+actrl+m sẽ hiển thị lại cho bạn.
  • Nếu bạn muốn chạy một cái gì đó (như cắt đuôi một tệp) và có màn hình cho bạn biết khi có thay đổi, hãy sử dụng ctrl+Ashift+m trên cửa sổ mục tiêu. Cảnh báo: nó sẽ cho bạn biết nếu bất cứ điều gì thay đổi.
  • Bạn muốn chọn cửa sổ 15 trực tiếp? Hãy thử những điều này trong tệp .screenrc Của bạn:
bind  ! select 11
bind  @ select 12
bind \# select 13
bind  $ select 14
bind  % select 15
bind \^ select 16
bind  & select 17
bind  * select 18
bind  ( select 19
bind  ) select 10

Điều đó được giao ctrl+ashift+0 through 9 cho các cửa sổ 10 đến 19.

8
staticsan

ctrl+a là một chìa khóa đặc biệt.

ctrl+ad - [d] etach, để lại các chương trình (irssi?) Trong nền, về nhà.

ctrl+ac [c] gắn lại một cửa sổ mới ctrl+a0-9 chuyển đổi giữa các cửa sổ theo số

screen -r - quay lại phiên tách ra

Điều đó bao gồm 90% các trường hợp sử dụng. Đừng cố gắng hiển thị tất cả các chức năng tại một thời điểm.

6
tadeusz

Ctrl+A là lệnh cơ sở

Ctrl+AN = đi đến màn hình mở rộng *** N ***

Ctrl+AP = đi đến màn hình hiển thị *** P ***

Ctrl+AC = *** C *** làm mới màn hình mới

Ctrl+AD = *** D *** khắc màn hình của bạn

6
Niko Gunadi

http: //www.debian-adftime.org/articles 432

Tôi đã viết rằng một vài năm trước đây, nhưng nó vẫn là một giới thiệu tốt nhận được nhiều phản hồi tích cực.

6
user14038

Tôi "phải" thêm cái này: thêm

bind s

cho bạn .screenrc, nếu Bạn - như tôi - đã từng sử dụng cửa sổ tách, như C-a S chia nhỏ cửa sổ thực tế, nhưng C-a s đóng băng nó. Vì vậy, tôi chỉ vô hiệu hóa các phím tắt đóng băng.

6
Zsolt Botykai

Không thực sự cần thiết không chỉ liên quan đến màn hình, nhưng bật 256 màu trong thiết bị đầu cuối của tôi, GNU Màn hình và Vim đã cải thiện trải nghiệm màn hình của tôi trong thời gian lớn (đặc biệt là khi tôi viết mã bằng Vim khoảng 8h một ngày - có một số màu sắc thân thiện với mắt tuyệt vời).

4
jkramer

Có một số công việc thú vị được thực hiện khi cài đặt màn hình gnu tốt xảy ra theo mặc định trong phiên bản tiếp theo của Ubuntu Server, bao gồm sử dụng phần dưới màn hình để hiển thị tất cả các cửa sổ cũng như các cửa sổ khác chi tiết máy hữu ích (như # cập nhật có sẵn và liệu máy có cần khởi động lại không). Bạn có thể lấy .screenrc Của họ và tùy chỉnh nó theo nhu cầu của bạn.

Các lệnh hữu ích nhất tôi có trong .screenrc Của tôi là như sau

shelltitle "$ |bash" # make screen assign window titles automatically
hardstatus alwayslastline "%w" # show all window titles at bottom line of term

Bằng cách này, tôi luôn biết cửa sổ nào đang mở và hiện tại cũng đang chạy trong đó.

3
David Dean

Việc sửa đổi đầu tiên tôi thực hiện thành .screenrc là thay đổi lệnh thoát. Không giống như nhiều bạn, tôi không thích trình tự Ctrl-A mặc định vì sự can thiệp của nó với chức năng cơ bản đó trong hầu hết các bối cảnh khác. Trong tệp .screenrc của tôi, tôi thêm:

thoát `e

Đó là backtick-e.

Điều này cho phép tôi sử dụng backtick làm phím thoát (ví dụ: để tạo màn hình mới, tôi nhấn backtick-c, tách ra là backtick-d, backtick-? Là trợ giúp, backtick-backtick là màn hình trước, v.v.). Cách duy nhất nó can thiệp (và tôi phải bỏ thói quen này) là sử dụng backtick trên dòng lệnh để nắm bắt đầu ra thực thi hoặc dán bất cứ thứ gì có chứa backtick. Trước đây, tôi đã sửa đổi thói quen của mình bằng cách sử dụng quy ước BASH $ (lệnh). Đối với phần sau, tôi thường chỉ mở một xterm khác hoặc tách ra khỏi màn hình sau đó dán nội dung chứa backtick. Cuối cùng, nếu tôi muốn chèn một backtick theo nghĩa đen, tôi chỉ cần nhấn backtick-e.

3
Gary Chambers

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

3
user203445

Tôi thích thiết lập một phiên màn hình với các tên mô tả cho các cửa sổ. ^ a A sẽ cho phép bạn đặt tên cho cửa sổ hiện tại và ^ a "sẽ cung cấp cho bạn danh sách các cửa sổ của bạn. Khi hoàn tất, hãy tách màn hình bằng ^ a d và gắn lại với màn hình -R

2
innaM

Ai đó đã đăng một câu hỏi tương tự như thế này trên Lỗi máy chủ .

2
Vagnerr

Tôi thích sử dụng screen -d -RR để tự động tạo/đính kèm vào một màn hình nhất định. Tôi đã tạo các hàm bash để làm cho nó dễ dàng hơn ...

function mkscreen
{
    local add=n

    if [ "$1" == '-a' ]; then
        add=y
        shift;
    fi

    local name=$1;
    shift;
    local command="$*";

    if [ -z "$name" -o -z "$command" ]; then
        echo 'Usage: mkscreen [ -a ] name command

    -a          Add to .bashrc.' 1>&2;
        return 1;
    fi

    if [ $add == y ]; then
        echo "mkscreen $name $command" >> $HOME/.bashrc;
    fi

    alias $name="/usr/bin/screen -d -RR -S $name $command";

    return 0;
}

function rmscreen
{
    local delete=n

    if [ "$1" == '-d' ]; then
        delete=y
        shift;
    fi

    local name=$1;

    if [ -z "$name" ]; then
        echo 'Usage: rmscreen [ -d ] name

    -d          Delete from .bashrc.' 1>&2;
        return 1;
    fi

    if [ $delete == y ]; then
        sed -i -r "/^mkscreen $name .*/d" $HOME/.bashrc;
    fi

    unalias $name;

    return 0;
}

Họ tạo bí danh cho /usr/bin/screen -d -RR -S $name $command. Ví dụ: tôi thích sử dụng irssi trong phiên màn hình, vì vậy, trong .bashrc của tôi (bên dưới các chức năng đó), tôi có:

mkscreen irc /usr/bin/irssi

Sau đó, tôi có thể chỉ cần gõ irc trong một thiết bị đầu cuối để vào irssi. Nếu màn hình 'irc' chưa tồn tại thì nó được tạo và/usr/bin/irssi được chạy từ màn hình (tất nhiên là kết nối tự động). Nếu nó đã chạy rồi thì tôi chỉ cần gắn lại cho nó, buộc tách ra bất kỳ trường hợp nào khác đã được gắn vào nó. Nó khá đẹp.

Một ví dụ khác là tạo các bí danh màn hình tạm thời cho perldocs khi tôi bắt gặp chúng:

mkscreen perlipc perldoc perlipc
perlipc # Start reading the perldoc, ^A d to detach.
...
# Later, when I'm done reading it, or at least finished
# with the alias, I remove it.
rmscreen perlipc 

Tùy chọn -a (phải là đối số đầu tiên) sẽ thêm bí danh màn hình vào .bashrc (vì vậy nó vẫn tồn tại) và -d loại bỏ nó (chúng có thể có khả năng phá hủy, vì vậy hãy tự chịu rủi ro khi sử dụng). xD

Nối:

Một bash-ism khác mà tôi thấy thuận tiện khi làm việc nhiều với màn hình:

alias sls='/usr/bin/screen -ls'

Bằng cách đó, bạn có thể liệt kê màn hình của mình với ít lần nhấn phím hơn. Tôi không biết nếu sls va chạm với bất kỳ tiện ích hiện có nào, nhưng tại thời điểm đó trên hệ thống của tôi không có nên tôi đã sử dụng nó.

1
bambams

^ A là một char đặc biệt tuyệt vời cho người UNIX, nhưng nếu bạn sử dụng màn hình để nói chuyện với OpenVMS, thì không thể ^ A sẽ khiến bạn bị hói sớm. Trong VMS, nếu bạn chỉnh sửa lệnh DCL trước khi thực hiện từ bộ đệm lịch sử, chế độ Chèn bị tắt (phải vì một vài lý do tôi sẽ không truy cập vào đây) .. để bật nó lên để bạn không bị quá tải gõ lệnh của bạn chứ không phải là khoảng trống, bạn phải nhấn ^ A

0
user2146463

^ A A chuyển trở lại màn hình bạn vừa đến.

0
dummy