GNU 스크린 서바이벌 가이드
사람들은 뛰어난 Screen 유틸리티에 대해 알아야 할 필수 사항뿐만 아니라 처음부터 초보자 인 누군가에게 가르쳐야 할 가치가 있다고 생각하는 사항이 무엇이라고 생각합니까?
방금 Screen에 친구를 소개했는데 익숙해지는 데 어려움을 겪고 있습니다. 따라서 바인드 등을 기억하는 비유와 유용한 팁은 멋질 것입니다.
저는 10 년 넘게 screen을 사용해 왔으며 아마도 절반 이하의 기능을 사용하고있을 것입니다. 따라서 모든 기능을 즉시 배울 필요는 없습니다 (사용하지 않는 것이 좋습니다). 내 일상적인 명령은 다음과 같습니다.
^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? -도움말 화면을 보여주세요!
친구가 ^A
bash에서 줄의 시작 부분으로 가기 위해 누르는 버릇이 있다면 ^A
, 화면 명령 키 바인딩 이기 때문에 그 / 그녀는 놀랍습니다 . 보통 나는 아마도 때문에 나는 후 누르면 어떤 임의의 키에, 고정 된 화면으로 끝날 ^A
:-)
그런 경우에는
^A s
및 ^A q
터미널 스크롤링 차단 / 차단 해제
그것을 고칠 수 있습니다. 화면 내 줄의 시작으로 이동하려면 키 시퀀스는 다음과 같습니다.^A a
ctrl-A의 이스케이프 키를 원하는 다른 키로 다시 매핑 할 수 있으므로 다른 용도로 사용하는 경우 (예 : bash에서 줄의 시작 부분으로 이동) ~에 줄을 추가하면됩니다. /.screenrc 파일. ^ b 또는 ^ B를 사용하려면 다음을 사용하십시오.
escape ^bB
명령 줄에서 이름 세션을 사용하여 여러 세션을 제어 할 수 있습니다. 작업 당 하나의 세션을 사용하며 각 세션에는 여러 탭이 있습니다.
screen -ls는 현재 화면 세션을 나열합니다. screen -S <name>은 name이라는 새 화면 세션을 만듭니다. screen -r <name>은 명명 된 화면 세션에 연결합니다.
화면을 사용할 때 몇 가지 명령 만 필요합니다.
^ A c 새 셸을 만듭니다. ^ A [0-9] 스위치 셸 ^ A k 현재 쉘을 종료합니다. ^ A d 화면에서 연결 해제 ^ A? 도움을 보여
여기 에서 훌륭한 빠른 참조를 찾을 수 있습니다 . 북마크 할 가치가 있습니다.
화면에 익숙하지만 맨 페이지에서 읽은 내용을 기억하지 못하는 사람들을위한 몇 가지 팁 :
- 화면 창의 이름을 변경하는 것은 매우 쉽습니다. ctrl+ A shift+ A.
- 화면에서 마지막 메시지를 놓쳤습니까? ctrl+ a ctrl+ m가 다시 표시합니다.
- 파일 을 뒤 따르는 것과 같은 무언가를 실행하고 변경 사항이있을 때 화면에 표시 되도록하려면 대상 창에서 ctrl+ A shift+ m를 사용합니다. 경고 : 당신이 있으면 알려 드릴 것 아무것도 변경됩니다.
- 창 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
Windows 10에서 19까지 ctrl+ a shift+ 0 through 9를 할당합니다 .
http://www.debian-administration.org/articles/34
나는 몇 년 전에 그것을 썼지 만 여전히 많은 긍정적 인 피드백을 얻는 좋은 소개입니다.
나는 이것을 "반드시"추가한다 : 추가
bind s
로 .screenrc
, 다음과 같은 경우 - 나 같은 -로 사용 분할 창에 사용되는 C-a S
분할 실제 창을하지만, C-a s
그것을 정지. 그래서 동결 단축키를 비활성화했습니다.
ctrl+ a는 특수 키입니다.
ctrl+ a d-[d] etach, 백그라운드에서 프로그램 (irssi?)을 남겨두고 집으로 이동합니다.
ctrl+ a c[c] 새 창 만들기 ctrl+ a 0-9숫자로 창 간 전환
screen -r-분리 된 세션으로 돌아 가기
이는 사용 사례의 90 %를 포함합니다. 한 번에 모든 기능을 표시하려고하지 마십시오.
Ctrl+ A는 기본 명령입니다.
Ctrl+ A N= *** N *** 다음 화면으로 이동
Ctrl+ A P= *** P *** 이전 화면으로 이동
Ctrl+ A C= *** C *** 새 화면 만들기
Ctrl+ A D= *** D *** 화면 분리
화면에만 관련된 것은 아니지만 터미널에서 256 색을 활성화하면 GNU Screen과 Vim 이 내 화면 경험을 크게 향상 시켰습니다 (특히 Vim에서 하루에 약 8 시간을 코딩했기 때문에 눈에 친화적 인 색상 화학이 있습니다).
There is some interesting work being done on getting a good gnu-screen setup happening by default in the next version of Ubuntu Server, which includes using the bottom of the screen to show all the windows as well as other useful machine details (like # updates available and whether the machine needs a reboot). You can probably grab their .screenrc
and customise it to your needs.
The most useful commands I have in my .screenrc
are the following
shelltitle "$ |bash" # make screen assign window titles automatically
hardstatus alwayslastline "%w" # show all window titles at bottom line of term
This way I always know what windows are open, and what is running in them at the moment, too.
The first modification I make to .screenrc is to change the escape command. Not unlike many of you, I do not like the default Ctrl-A sequence because of its interference with that fundamental functionality in almost every other context. In my .screenrc file, I add:
escape `e
That's backtick-e.
This enables me to use the backtick as the escape key (e.g. to create a new screen, I press backtick-c, detach is backtick-d, backtick-? is help, backtick-backtick is previous screen, etc.). The only way it interferes (and I had to break myself of the habit) is using backtick on the command line to capture execution output, or pasting anything that contains a backtick. For the former, I've modified my habit by using the BASH $(command) convention. For the latter, I usually just pop open another xterm or detach from screen then paste the content containing the backtick. Finally, if I wish to insert a literal backtick, I simply press backtick-e.
I can't remember who I stole this from (someone on dotfile.org). I've modified it slightly for 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
Then I set the following bash aliases:
vim() {
scr vim $*
}
man() {
scr man $*
}
info() {
scr info $*
}
watch() {
scr watch $*
}
ssh() {
scr ssh $*
}
It opens a new screen for the above aliases and iff using ssh, it renames the screen title with the ssh hostname.
Cheers z0mbix
I like to set up a screen session with descriptive names for the windows. ^a A will let you give a name to the current window and ^a " will give you a list of your windows. When done, detach the screen with ^a d and re-attach with screen -R
I like to use screen -d -RR
to automatically create/attach to a given screen. I created bash functions to make it easier...
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;
}
They create an alias to /usr/bin/screen -d -RR -S $name $command
. For example, I like to use irssi in a screen session, so in my .bashrc (beneath those functions), I have:
mkscreen irc /usr/bin/irssi
Then I can just type irc
in a terminal to get into irssi. If the screen 'irc' doesn't exist yet then it is created and /usr/bin/irssi is run from it (which connects automatically, of course). If it's already running then I just reattach to it, forcibly detaching any other instance that is already attached to it. It's quite nice.
Another example is creating temporary screen aliases for perldocs as I come across them:
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
The -a option (must be first argument) appends the screen alias to .bashrc (so it's persistent) and -d removes it (these can potentially be destructive, so use at own risk). xD
Append:
Another bash-ism that I find convenient when working a lot with screen:
alias sls='/usr/bin/screen -ls'
That way you can list your screens with a lot fewer keystrokes. I don't know if sls
collides with any existing utilities, but it didn't at the time on my system so I went for it.
^A A switches back to the screen you just came from.
^A is a great special char for UNIX people, but if your using screen to talk to OpenVMS, then not being able to ^A is going to make you bald prematurely. In VMS, if your editing a DCL command prior to execution from the history buffer, Insert mode is off (has to be for a few reasons I won't get into here) .. to turn it on so you don't over-type your command rather than space things out, you have to hit ^A
참고URL : https://stackoverflow.com/questions/70614/gnu-screen-survival-guide
'programing tip' 카테고리의 다른 글
model.save ()에서 성공 콜백을 어떻게 트리거합니까? (0) | 2020.08.09 |
---|---|
Emacs에서 Linux의 다른 응용 프로그램으로 텍스트를 복사하는 방법 (0) | 2020.08.09 |
jquery는 쿠키에 json 데이터 객체를 저장합니다. (0) | 2020.08.09 |
SQL 쿼리가 매일 실행되도록 작업을 예약하는 방법은 무엇입니까? (0) | 2020.08.09 |
변수 이름을 문자열로 가져 오기 (0) | 2020.08.09 |