it-swarm-ko.tech

GNU 스크린 서바이벌 가이드

사람들은 우수한 Screen 유틸리티에 대해 알아야 할 필수 사항뿐만 아니라 초보자에게 처음부터 누군가를 가르 칠 가치가 있다고 생각하는 것은 무엇입니까?

방금 친구를 Screen에 소개했는데 친구에게 익숙해지기가 어렵습니다. 따라서 바인딩 등을 기억하기위한 유추와 편리한 팁은 훌륭합니다.

106
Henry B

나는 10 년 넘게 화면을 사용해 왔으며 아마도 절반 이하의 기능을 사용했을 것입니다. 따라서 모든 기능을 즉시 배울 필요는 없습니다 (시도하지 않는 것이 좋습니다). 내 일상적인 명령은 다음과 같습니다.

^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

그게 다야 때로는 분할 화면 기능을 사용하지만 반드시 매일은 아닙니다. 다른 팁은 실수로 임의의 키 조합을 쳐서 화면이 잠긴 것처럼 보이는 경우 ^ Q와 ^ A ^ Q를 모두 수행하여 잠금을 해제하십시오.

91
Greg Hewgill

화면 하단에 '탭'또는 '가상 화면'과 다른 화면이 표시되는 '상태 표시 줄'을 설정하는 방법을 찾을 때까지 화면을 보지 못했습니다. 내 설정은 다음과 같습니다.

[[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 ? -도움말 화면을 보여주세요!

30
James Muscat

친구가 ^A를 눌러 bash에서 줄의 시작 부분에 도착하는 습관이 있다면 ^A가 화면 명령 키 바인딩이기 때문에 놀랍습니다. 일반적으로 ^A 다음에 누른 임의의 키로 인해 정지 된 화면이 나타납니다. :-)

그런 경우에 시도

^A s^A q 터미널 스크롤 차단/차단 해제

그것을 고치기 위해. 화면 내 줄의 시작 부분으로 이동하려면 키 순서는 ^A a입니다.

26
agnul

Ctrl-A에서 이스케이프 키를 선택한 다른 키로 다시 매핑 할 수 있으므로 다른 용도로 사용하는 경우 (예 : bash에서 줄의 시작 부분으로 가려면 ~/.screenrc 파일에 줄을 추가하면됩니다. ^ b 또는 ^ B를 사용하려면 :

escape ^bB

명령 행에서 세션 이름을 사용하여 여러 세션을 제어하십시오. 작업마다 하나의 세션을 사용하며 각 세션에는 여러 탭이 있습니다.

 screen -ls는 현재 화면 세션을 나열합니다. 
 screen -S <name>은 이름 
이라는 새 화면 세션을 만듭니다. screen -r <name>은 명명 된 화면 세션에 연결합니다 

화면을 사용할 때 몇 가지 명령 만 필요합니다.

^ .c 새 쉘 만들기 
 ^ A [0-9] 스위치 쉘 
 ^ A k 현재 쉘 종료 
 ^ A d 화면에서 분리 
 ^ A? 도움을 보여주십시오 

훌륭한 빠른 참조는 here 에서 찾을 수 있습니다. 북마크 가치가 있습니다.

12
Andrew Johnson

화면에 익숙하지만 매뉴얼 페이지에서 읽은 내용을 기억하지 못하는 사람들을위한 몇 가지 팁 :

  • 화면 창의 이름을 변경하는 것은 매우 쉽습니다. ctrl+Ashift+A.
  • 화면에서 마지막 메시지를 놓치셨습니까? ctrl+actrl+m 다시 보여 드릴 것입니다.
  • 파일 꼬리와 같은 것을 실행하고 변경 사항이있을 때 화면에서 알려주려면 ctrl+Ashift+m 대상 창에서. 경고 : anything 변경 여부를 알려줍니다.
  • 창 15를 직접 선택 하시겠습니까? .screenrc 파일에서 다음을 시도하십시오.
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

그 할당 ctrl+ashift+0 through 9 창 10에서 19까지.

8
staticsan

ctrl+a 특별한 열쇠입니다.

ctrl+ad -(dset), 프로그램 (irssi?)을 백그라운드로두고 집에 가십시오.

ctrl+ac [c] 새 창을 열다 ctrl+a0-9 숫자로 창을 전환

screen -r-분리 된 세션으로 돌아 가기

사용 사례의 90 %를 차지합니다. 한 번에 모든 기능을 표시하지 마십시오.

6
tadeusz

Ctrl+A 기본 명령입니다

Ctrl+AN = *** N *** ext 화면으로 이동

Ctrl+AP = *** P *** revious 화면으로 이동

Ctrl+AC = *** C *** 새 화면으로 이동

Ctrl+AD = *** D *** 화면에 도달

6
Niko Gunadi

http://www.debian-administration.org/articles/34

나는 몇 년 전에 그것을 썼지 만, 여전히 긍정적 인 피드백을 많이 얻는 좋은 소개입니다.

6
user14038

나는 이것을 "추가해야한다": add

bind s

너의 ~에게 .screenrc, 나와 같은-분할 창을 사용하는 경우 C-a S는 실제 창을 분할하지만 C-a s 그것을 멈 춥니 다. 그래서 방금 고정 단축키를 비활성화했습니다.

6
Zsolt Botykai

화면에만 관련되는 것은 아니지만 내 터미널에서 256 색 사용, GNU Screen and Vim 화면 경험이 크게 향상되었습니다 (특히 Vim으로 코딩 한 이후) 하루에 약 8 시간-눈에 좋은 색감이 있습니다.).

4
jkramer

다음 버전의 Ubuntu Server에서 기본적으로 좋은 gnu-screen 설정을 수행하는 데 흥미로운 작업 이 수행됩니다. 여기에는 화면 하단을 사용하여 모든 창과 다른 창을 표시하는 것이 포함됩니다 유용한 머신 세부 정보 (예 : 사용 가능한 # 업데이트 및 머신 재부팅 필요 여부) 아마도 .screenrc를 잡고 필요에 따라 사용자 정의 할 수 있습니다.

.screenrc에서 가장 유용한 명령은 다음과 같습니다.

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

이 방법으로 나는 항상 어떤 창이 열려 있고 현재 어떤 창이 열려 있는지 알고 있습니다.

3
David Dean

.screenrc에 대한 첫 번째 수정은 escape 명령을 변경하는 것입니다. 다른 많은 사람들과 달리 기본 Ctrl-A 시퀀스는 다른 모든 상황에서 기본 기능과의 간섭으로 인해 마음에 들지 않습니다. 내 .screenrc 파일에서 다음을 추가합니다.

탈출하다 e

백틱입니다.

이를 통해 백틱을 이스케이프 키로 사용할 수 있습니다 (예 : 새 화면을 만들려면 backtick-c를 누르고 분리는 backtick-d, backtick-?는 도움, backtick-backtick는 이전 화면 등입니다). 그것이 방해하는 유일한 방법은 (그리고 습관을 끊어야했다) 명령 행에서 backtick를 사용하여 실행 출력을 캡처하거나 backtick가 포함 된 것을 붙여 넣는 것입니다. 전자의 경우 BASH $ (command) 규칙을 사용하여 습관을 수정했습니다. 후자의 경우 일반적으로 다른 xterm을 열거 나 화면에서 분리 한 다음 백틱이 포함 된 내용을 붙여 넣습니다. 마지막으로 리터럴 백틱을 삽입하려면 간단히 backtick-e를 누릅니다.

3
Gary Chambers

누가 이것을 훔쳤는 지 기억이 나지 않습니다 (dotfile.org의 누군가). 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

그런 다음 다음 bash 별칭을 설정했습니다.

vim() {
        scr vim $*
}

man() {
        scr man $*
}

info() {
        scr info $*
}

watch() {
        scr watch $*
}

ssh() {
        scr ssh $*
}

위의 별명에 대한 새 화면을 열고 ssh를 사용하여 iff 화면 제목을 ssh 호스트 이름으로 바꿉니다.

건배 z0mbix

3
user203445

창의 이름을 설명하는 화면 세션을 설정하고 싶습니다. ^ a A는 현재 창에 이름을 부여하고 ^ a "는 창 목록을 제공합니다. 완료되면 ^ a d로 화면을 분리하고 screen -R로 다시 연결하십시오.

2
innaM

누군가 Server Fault 에 이와 비슷한 질문을 게시했습니다.

2
Vagnerr

screen -d -RR 주어진 화면에 자동으로 생성/첨부합니다. 더 쉽게하기 위해 bash 함수를 만들었습니다 ...

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;
}

/usr/bin/screen -d -RR -S $name $command. 예를 들어, 스크린 세션에서 irssi를 사용하고 싶습니다. 따라서 .bashrc (해당 기능 아래)에는 다음이 있습니다.

mkscreen irc /usr/bin/irssi

그런 다음 터미널에 irc를 입력하여 irssi에 들어갈 수 있습니다. 'irc'화면이 아직 없으면 화면이 만들어지고/usr/bin/irssi가 실행됩니다 (물론 자동으로 연결됨). 이미 실행 중이면 다시 연결하여 이미 연결된 다른 인스턴스를 강제로 분리합니다. 꽤 좋습니다.

또 다른 예는 perldocs를 가로 질러 임시 화면 별칭을 만드는 것입니다.

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 

-a 옵션 (첫 번째 인수 여야 함)은 화면 별명을 .bashrc에 추가하고 (영구적이므로) -d는 제거합니다 (이는 잠재적으로 파괴적 일 수 있으므로 위험 부담으로 사용하십시오). xD

추가 :

화면으로 많은 작업을 할 때 편리한 또 다른 bash-ism :

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

그렇게하면 훨씬 적은 키 입력으로 화면을 나열 할 수 있습니다. sls이 (가) 기존 유틸리티와 충돌하는지 여부는 알 수 없지만 당시 시스템에 없었기 때문에 진행했습니다.

1
bambams

^ A는 UNIX 사용자에게는 훌륭한 특수 문자이지만, 화면을 사용하여 OpenVMS와 대화하는 경우 ^ A를 할 수 없으면 대머리가 될 것입니다. VMS에서 히스토리 버퍼에서 실행하기 전에 DCL 명령을 편집하는 경우 삽입 모드가 꺼져 있습니다 (여기에 들어 가지 않는 몇 가지 이유가 있습니다). 우주 공간이 아닌 명령을 입력하면 ^ A를 누르십시오.

0
user2146463

^ A A는 방금 온 화면으로 돌아갑니다.

0
dummy