문제

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

방금 친구에게 Screen을 소개했는데 적응하는 데 어려움을 겪고 있습니다.바인딩 등을 기억하는 데 유용한 비유와 유용한 팁입니다.정말 좋을 것입니다.

도움이 되었습니까?

해결책

저는 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를 모두 수행하여 잠금을 해제해 보는 것입니다.

다른 팁

화면 하단에 현재 사용 중인 '탭' 또는 '가상 화면'과 다른 화면이 무엇인지 보여주는 '상태 표시줄'을 설정하는 방법을 찾을 때까지는 화면에 익숙해질 수 없었습니다.내 설정은 다음과 같습니다.

[roel@roel ~]$ 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"
[roel@roel ~]$ 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"
[roel@roel ~]$

Ctrl 키+ ?- 도움말 화면을 보여주세요!

친구가 누르는 버릇이 있다면 ^A Bash에서 줄의 시작 부분에 도달하려면 그/그녀는 약간의 놀라움을 겪게 될 것입니다. ^A 화면 명령 키 바인딩입니다.일반적으로 화면이 정지됩니다. 아마도 나중에 누른 임의의 키 때문일 것입니다. ^A :-)

그런 경우에는 나는 노력한다

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

그걸 고치려고.화면 내부의 줄 시작 부분으로 이동하려면 키 순서는 다음과 같습니다. ^A a

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

escape ^bB

명령줄에서 세션 이름을 사용하여 여러 세션을 제어할 수 있습니다.저는 작업당 하나의 세션을 사용하며 각 세션에는 여러 탭이 있습니다.

  screen -ls                lists your current screen sessions
  screen -S <name>          creates a new screen session called name
  screen -r <name>          connects to the named screen sessions

screen을 사용할 때는 몇 가지 명령만 필요합니다:

  ^A c          create a new shell
  ^A [0-9]      switch shell
  ^A k          kill the current shell
  ^A d          disconnect from screen
  ^A ?          show the help

훌륭한 빠른 참조를 찾을 수 있습니다 여기.북마크할 가치가 있습니다.

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

  • 화면 창의 이름을 변경하는 방법은 매우 쉽습니다. Ctrl 키+ 옮기다+.
  • 화면의 마지막 메시지를 놓치셨나요? Ctrl 키+ Ctrl 키+ 다시 보여드리겠습니다.
  • 파일 추적과 같은 작업을 실행하고 변경 사항이 있을 때 화면에 알려주려면 다음을 사용하세요. Ctrl 키+ 옮기다+ 대상 창에서.경고:그것은 당신에게 알려줄 것입니다 아무것 변화.
  • 창 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 키+ 옮기다+0부터 9까지 Windows 10부터 19까지.

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

몇 년 전에 쓴 글이지만 여전히 긍정적인 피드백을 많이 받는 좋은 소개서입니다.

나는 이것을 "반드시" 추가해야 한다:추가하다

bind s

너의 ~에게 .screenrc, 만약 당신이 나처럼 분할 창을 사용했었다면, C-a S 실제 창을 분할하지만 C-a s 그것을 얼린다.그래서 방금 고정 단축키를 비활성화했습니다.

Ctrl 키+ 특수 키입니다.

Ctrl 키+ - [d]접속, 프로그램(irssi?)을 백그라운드에 두고 집으로 이동합니다.

Ctrl 키+ [c]새 창 만들기Ctrl 키+ 0-9 숫자로 창 간 전환

screen -r - 분리된 세션으로 돌아갑니다.

이는 사용 사례의 90%를 다루고 있습니다.한 번에 모든 기능을 보여주려고 하지 마세요.

Ctrl 키+ 기본 명령입니다

Ctrl 키+ N = ***N***다음 화면으로 이동

Ctrl 키+ = ***P*** 이전 화면으로 이동

Ctrl 키+ = ***C***새 화면 생성

Ctrl 키+ = ***D***화면을 부착하세요

화면에만 관련된 것이 아니라 꼭 필요한 것은 아니지만 내 터미널, GNU Screen 및 Vim에서 256색을 활성화합니다. 내 화면 경험이 크게 향상되었습니다(특히 Vim에서 하루에 약 8시간씩 코드를 작성하기 때문에 눈에 편안한 색상 구성표가 몇 가지 있습니다).

일부가 있습니다 흥미로운 작품 Ubuntu Server의 다음 버전에서는 기본적으로 좋은 gnu 화면 설정이 수행됩니다. 여기에는 화면 하단을 사용하여 모든 창과 기타 유용한 컴퓨터 세부 정보(예: 사용 가능한 업데이트 수 및 컴퓨터 사용 가능 여부)를 표시하는 작업이 포함됩니다. 재부팅이 필요합니다).당신은 아마 그들의 .screenrc 필요에 맞게 맞춤설정하세요.

내 컴퓨터에서 가장 유용한 명령은 .screenrc 다음은

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

이렇게 하면 어떤 창이 열려 있는지, 현재 그 안에서 무엇이 실행되고 있는지 항상 알 수 있습니다.

.screenrc에 대한 첫 번째 수정은 escape 명령을 변경하는 것입니다.많은 분들과 마찬가지로 저는 거의 모든 상황에서 기본 기능을 방해하기 때문에 기본 Ctrl-A 시퀀스를 좋아하지 않습니다.내 .screenrc 파일에 다음을 추가합니다.

탈출하다`e

그것은 백틱-e입니다.

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

내가 이것을 누구에게서 훔쳤는지 기억이 나지 않습니다(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를 사용하는 경우 화면 제목 이름을 ssh 호스트 이름으로 바꿉니다.

건배 z0mbix

나는 창을 설명하는 이름으로 스크린 세션을 설정하는 것을 좋아합니다.^a A를 사용하면 현재 창에 이름을 지정할 수 있으며 ^a "는 창 목록을 제공합니다.완료되면 ^a d를 사용하여 화면을 분리하고 screen -R을 사용하여 다시 연결합니다.

누군가가 비슷한 질문을 게시했습니다. 서버 결함.

나는 사용하는 것을 좋아한다 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가 여기에서 실행됩니다(물론 자동으로 연결됩니다).이미 실행 중이면 다시 연결하고 이미 연결되어 있는 다른 인스턴스를 강제로 분리합니다.꽤 좋습니다.

또 다른 예는 Perldoc를 발견했을 때 임시 화면 별칭을 만드는 것입니다.

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 기존 유틸리티와 충돌하지만 당시에는 내 시스템에 없었기 때문에 선택했습니다.

^A A는 방금 나왔던 화면으로 다시 전환합니다.

^A는 UNIX 사용자에게 매우 유용한 특수 문자이지만 화면을 사용하여 OpenVMS와 통신하는 경우 ^A를 사용할 수 없으면 조기에 대머리가 됩니다.VMS에서 히스토리 버퍼에서 실행하기 전에 DCL 명령을 편집하는 경우 삽입 모드가 꺼집니다(몇 가지 이유로 여기에서는 다루지 않겠습니다)..공백을 두지 않고 명령을 과도하게 입력하지 않도록 이 기능을 켜려면 ^A를 눌러야 합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top