하나의 퍼티 창에 가상 세션이 거의없고 빠르게 전환하고 싶습니다. 가장 좋은 방법은 무엇입니까? screen
? 나는 ctrl+ad
다른 세션으로 분리 했다가 다른 세션에 다시 연결할 수 있다는 것을 알고 있지만 많은 타이핑처럼 보입니다.
답변
gnu 화면에 익숙하지 않은 경우 Ansgar가 말한 것을 확장하기 위해 단일 화면 세션에 여러 개의 “창”이 있으면 필요한 것을 달성 할 수 있습니다.
ctrl+ a, c활성 화면 세션에서 새 “창”을 만듭니다. 당신은 (안스가 표시됨) 여러 창 사이를 전환 할 수 있습니다 ctrl+ a, n다음 창에 대한, 그리고 ctrl+ a, p이전 창에 대해.
ctrl+ a, "열려있는 모든 창의 목록을 제공합니다.
이 간편한 바로 가기를 사용하면 여러 화면 세션을 사용하지 않고도 목표를 달성하기 위해 서로 다른 터미널간에 매우 빠르고 쉽게 전환 할 수 있습니다.
~ / .screenrc에 다음 줄을 추가하면 열려있는 창과 선택된 창이 항상 표시되므로 기억하여 어떤 창을 추적 할 필요가 없습니다.
hardstatus alwayslastline '%{= kg}[ %{G}%H %{g}][%= %{= kB}%?%-Lw%?%{+b r}(%{G}%n*%f %t%?(%u)%?%{r})%{-b B}%?%+Lw%?%?%= %{g}%]'
이것은 내가 사용하고있는 hardstatus 라인이지만 완전히 사용자 정의 할 수 있습니다 (man 페이지 또는 Google에서 “gnu screen hardstatus”검색).
당신이 그것으로 할 수있는 다른 것들이 많이 있습니다 (예를 들어 다른 열린 창 이름 지정), 튜토리얼을 읽어 볼 가치가 있습니다.
빠른 검색으로 찾은 커플이 있습니다.
http://news.softpedia.com/news/GNU-Screen-Tutorial-44274.shtml
http://www.ibm.com/developerworks/aix/library/au-gnu_screen/
그리고 물론 가장 유용한 것 :
# From your terminal:
$ man screen
희망이 도움이됩니다.
매튜
답변
그렇습니다 screen
.가는 길입니다. Ctrl+ a, n다음 창에 당신을 데려 갈, 것 Ctrl+ a, p이전에. Ctrl+ a, 0.. 9를 사용하면 특정 화면으로 전환 할 수 있습니다.
답변
다른 사람들의 말이 맞습니다. 나는 단지 tmux
대안이라고 언급하고 싶다 screen
. 그들은 매우 비슷한 명령을 가지고 있습니다.
모두 screen
와 tmux
실행중인 세션에 대한 여러 개의 창을 제공하고, 이것은 당신이 원하는 아마.
tmux
또한 여러 세션 사이에서 점프를 제공합니다 (각각 자체 창이 있음). 매우 드물게 필요할 것입니다.
답변
너무 오랜 시간이 지나서 완전히 누락 된 기능을 해결하기 위해 스크립트를 만들었습니다. 우선 그것은 fifo가 필요합니다 :
mkdir ~/.screen
mkfifo ~/.screen/pipe
이 명명 된 파이프는 분리 된 세션과 “메인 화면이없는”세션 간의 통신에 유용합니다.
파일 sc ($ PATH) :
#!/bin/bash
CONFIGFILE=~/.screen/"$1""rc"
if [ ! -r $CONFIGFILE ] ; then
echo "Configurazione per $1 Assente" >&2
exit 1
fi
exec 3<> ~/.screen/pipe
if [ "$STY" != "" ] ; then
screen -d "$STY"
echo "$1" >&3
else
screen -r "$1" 2>/dev/null || screen -S "$1" -c $CONFIGFILE
while true ; do
read line <&3
screen -r "$line" 2>/dev/null || screen -S "$line" -c ~/.screen/"$line""rc"
done
fi
“CONFIGFILE”의 예는 다음과 같습니다. ~ / .screen / Monitorrc
layout new Monitor
screen -t "bash" bash --login
split -v
focus next
split
focus bottom
screen -t "cv" sh -c "watch /usr/bin/cv -w"
split
focus bottom
screen -t "sys.log" sh -c "tail -F /var/log/sys.log"
focus up
focus up
resize 25
screen -t "top" sh -c "top"
focus left
화면 유형을 시작하려는 경우 :
sc Monitor
또는 당신이 발명하고 싶은 다른 sessionrc, 나는 다양한 일에 세션 작업을 사용합니다
예 : ~ / .screen / Workrc
layout new Work
screen -t "bash" bash --login
이제 다음을 입력 할 때 세션 모니터에 있습니다.
sc Work
세션 모니터가 자체 분리되고 명명 된 파이프에 “작업”을 씁니다. 결과적으로 첫 번째 sc 스크립트가 진행되어 “Work”세션을 첨부합니다.
세션 모니터에서 호출 된 sc가 닫힙니다.
모든 세션을 분리하면 무한 루프 상태이므로 Ctrl-c를 눌러 종료해야합니다.
답변
다음과 같은 간단한 쉘 스크립트 로이 작업을 수행 할 수 있습니다
for s in `screen -ls | grep Detached | grep <regex to your screen names>`; do screen -r $s; done
-
몇 개의 화면이 열려 있다고 가정 해 봅시다. 작업과 데이터로 분류했다고 가정 해 봅시다.
for i in {10..13}; do screen -S `printf data%02d $i`; done; for i in {0..5}; do screen -S `printf work%02d $i`; done; ...
-
를 적용
screen -ls
하면 다음과 같은 화면이 있어야합니다.There are screens on: 81592.data13 (Detached) 81539.work04 (Detached) 81527.work02 (Detached) 81586.data12 (Detached) 81574.data10 (Detached) 81533.work03 (Detached) 81488.work00 (Detached) 81607.ttys014.Mo (Attached) 81545.work05 (Detached) 81580.data11 (Detached) 81521.work01 (Detached) 81515.work00 (Detached) 12 Sockets in /var/folders/qs/cvlbhpr54fnb96vtx01bs9k00000gn/T/.screen.
-
이제 분리 된 화면을 사용하여 분리하십시오
grep
.screen -ls | grep Detached
당신은 이와 같은 것을 얻어야합니다
81592.data13 (Detached)
81539.work04 (Detached)
81527.work02 (Detached)
81586.data12 (Detached)
81574.data10 (Detached)
81533.work03 (Detached)
81488.work00 (Detached)
81545.work05 (Detached)
81580.data11 (Detached)
81521.work01 (Detached)
81515.work00 (Detached)
-
이제 다시을 사용하여 원하는 것을 선택하십시오 (예 : 데이터)
grep
.screen -ls | grep Detached | grep data
데이터 화면 만 분리됩니다. grep 키워드를 정규식으로 변경하여 검색을 사용자 정의 할 수 있습니다.
81592.data13 (Detached)
81586.data12 (Detached)
81574.data10 (Detached)
81580.data11 (Detached)
-
운 좋게도 결과는 잘 구성되고 탭으로 구분됩니다. 이제 열을 필드로 나누고를 사용하여 두 번째 필드를 선택하십시오
cut
.screen -ls | grep Detached | grep data | cut -d' ' -f2
구분 기호 매개 변수 뒤에 ctrl+v
a를 삽입하려면 다음 탭 을 눌러야 합니다. 결과는 다음과 같아야합니다.tab
-d
81592.data13
81586.data12
81574.data10
81580.data11
-
이제
...
따옴표를 사용하여 이것을 명령으로 묶고 다음과 같은 결과를 반복하십시오. 실제로 실행하기 전에 공식화 된 명령을 항상 먼저 확인하십시오. 나는 사용했다echo screen -r
for s in `screen -ls | \ grep Detached | grep data | \ cut -d' ' -f2`; do \ echo screen -r $s; \ done
-
모든 것이 잘되면,없이 시도하십시오
echo
.for s in `screen -ls | \ grep Detached | grep data | \ cut -d' ' -f2`; do \ screen -r $s; \ done
-
짜잔 분리 한 각 화면은 다음 화면으로 이동합니다.
행복한 상영 !!
답변
사용자가 화살표 키를 사용하여 목록에서 연결할 스크린 세션을 선택할 수 있도록 노드 스크립트를 작성했습니다. 나는 그것을 npm 패키지로 만들었습니다. 여기서 확인할 수 있습니다 : screen-command . 또는 npm i -g screen-command
node.js가 이미 설치되어 있다고 가정하여 시도해보십시오. 패키지를 설치 한 후 명령 sc
을 사용 하여 화면 목록을 소환하십시오.
이것이 원하는 화면으로 쉽게 전환되기를 바랍니다.